ADC0832 是美國國家半導體公司生產的一種8 位分辨率、雙通道A/D轉換
芯片。由于它體積小,兼容性強,性價比高而深受單片機愛好者及企業歡迎,
其目前已經有很高的普及率。學習并使用ADC0832 可是使我們了解A/D轉換器
的原理,有助于我們單片機技術水平的提高。
adc0832 C程序
//============================================
//2005-03-28...2005-03-29
//ADC0834模塊的C51程序源文件
//File?Name=ADC083X.c
//#include?
#include?"DELAY_S.h"
#include?"ADC083X.h"
//外部全局變量的預定義
//*******************************************************
//序號:
//?HD_ADC083X_S01
//功能:?
//?端口初始化
//輸入:?
//?無
//輸出:?
//?無
//********************************************************
void?adc083x_init(void)
{
SET_ADC083X_CS;
SET_ADC083X_DO;
CLR_ADC083X_CLK;
#if?TYPE_VAL?>=ADC0832
SET_ADC083X_DI;
#endif
#if?TYPE_VAL?>=ADC0834
SET_ADC083X_SARS;
#endif
}
//*******************************************************
//序號:
//?HD_ADC083X_S02
//功能:?
//?讀出AD數據字節
//輸入:?
//?chanel?通道號以及單、雙端設置選擇,它的值被類型值限制!
//?即有效值是select分別取最低4、3、2位或不使用
//?具體的值參見pdf文檔!
//輸出:?
//?AD轉換的結果字節
//********************************************************
uchar?adc083x_do_one_change(uchar?chanel)
{
uchar?data?ad_val;
uchar?data?i;
//轉換前的初始化
SET_ADC083X_CS;
CLR_ADC083X_CLK;
SET_ADC083X_DO;
CLR_ADC083X_CS;
//SARS引腳非必要時可以不使用,以節省引腳資源!
#if?(TYPE_VAL==ADC0838)
//chanel_.3?.2?.1?.0?=0000?通道0+_通道1-,?
=001?通道2+_通道3-,(雙端方式)
//?SGL/DIF?ODD/SIGN?SELECT?SELECT?=0010?通道4+_通道5-,?
=011?通道6+_通道7-,(雙端方式)
//?=0100?通道0-_通道1+,?
=0101?通道2-_通道3+,(雙端方式)
//?=0110?通道4-_通道5+,?
=0111?通道6-_通道7+,(雙端方式)
//?=1000?通道0+,?=1001?
通道2+,(單端方式)
//?=1010?通道4+,?=1011?
通道6+,(單端方式)
//?=1100?通道1+,?=1101?
通道3+,(單端方式)
//?=1110?通道5+,?=1111?
通道7+,(單端方式)
//引腳/SE可以接地,不使用其控制反響字節的輸出延時功能!
chanel?|=0x10;?//附加起始位
for(i=0;?i<5;?i++)
{
if(?(chanel?&0x10)!=0)
{
SET_ADC083X_DI;
}
else
{
CLR_ADC083X_DI;
}
SET_ADC083X_CLK;
CLR_ADC083X_CLK;
chanel?<<=1;
}
#elif?(TYPE_VAL==ADC0834)
//chanel_.2?.1?.0?=000?通道0+_通道1-,?=001?通道2+_通
道3-,?(雙端方式)
//?SGL/DIF?ODD/SIGN?SELECT?=010?通道0-_通道1+,?=011?通道2-_通
道3+,?(雙端方式)
//?=100?通道0+,?=101?通道2+,
(單端方式)
//?=110?通道1+,?=111?通道3+,
(單端方式)
chanel?|=0x08;?//附加起始位
for(i=0;?i<4;?i++)
{
if(?(chanel?&0x08)!=0)
{
SET_ADC083X_DI;
}
else
{
CLR_ADC083X_DI;
}
SET_ADC083X_CLK;
CLR_ADC083X_CLK;
chanel?<<=1;
}
#elif?(TYPE_VAL==ADC0832)
//chanel_.1?.0?=00?通道0+_通道1-,?=01?通道0-_通道
1+,?(雙端方式)
//?SGL/DIF?ODD/SIGN?=10?通道0+,?=11?通道1+,?
(單端方式)
chanel?|=0x04;?//附加起始位
for(i=0;?i<3;?i++)
{
if(?(chanel?&0x04)!=0)
{
SET_ADC083X_DI;
}
else
{
CLR_ADC083X_DI;
}
SET_ADC083X_CLK;
CLR_ADC083X_CLK;
chanel?<<=1;
}
#else?//缺省時為ADC0831
SET_ADC083X_CLK;
CLR_ADC083X_CLK;
#endif
SET_ADC083X_CLK;?//數據接收前的轉換位
CLR_ADC083X_CLK;
for(ad_val=0,?i=0;?i<8;?i++)
{
ad_val?<<=1;
SET_ADC083X_CLK;
ad_val?+=(JUDGE_ADC083X_DO?==1??1:0);
CLR_ADC083X_CLK;
}?
//對非ADC0831的型號而言,后續波形沒有使用!
SET_ADC083X_CS;
return(ad_val);
}
//===================================
//End?Of?File
ADC0832 為8位分辨率A/D轉換芯片,其最高分辨可達256級,可以適應
一般的模擬量轉換要求。其內部電源輸入與參考電壓的復用,使得芯片的模擬
電壓輸入在0~5V之間。芯片轉換時間僅為32μS,據有雙數據輸出可作為數據
校驗,以減少數據誤差,轉換速度快且穩定性能強。獨立的芯片使能輸入,使
多器件掛接和處理器控制變的更加方便。通過DI 數據輸入端,可以輕易的實現
通道功能的選擇。
評論
查看更多