ADC0832 是美國國家半導(dǎo)體公司生產(chǎn)的一種8 位分辨率、雙通道A/D轉(zhuǎn)換
芯片。由于它體積小,兼容性強(qiáng),性價(jià)比高而深受單片機(jī)愛好者及企業(yè)歡迎,
其目前已經(jīng)有很高的普及率。學(xué)習(xí)并使用ADC0832 可是使我們了解A/D轉(zhuǎn)換器
的原理,有助于我們單片機(jī)技術(shù)水平的提高。
adc0832 C程序
//============================================
//2005-03-28...2005-03-29
//ADC0834模塊的C51程序源文件
//File?Name=ADC083X.c
//#include?
#include?"DELAY_S.h"
#include?"ADC083X.h"
//外部全局變量的預(yù)定義
//*******************************************************
//序號(hào):
//?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
}
//*******************************************************
//序號(hào):
//?HD_ADC083X_S02
//功能:?
//?讀出AD數(shù)據(jù)字節(jié)
//輸入:?
//?chanel?通道號(hào)以及單、雙端設(shè)置選擇,它的值被類型值限制!
//?即有效值是select分別取最低4、3、2位或不使用
//?具體的值參見pdf文檔!
//輸出:?
//?AD轉(zhuǎn)換的結(jié)果字節(jié)
//********************************************************
uchar?adc083x_do_one_change(uchar?chanel)
{
uchar?data?ad_val;
uchar?data?i;
//轉(zhuǎn)換前的初始化
SET_ADC083X_CS;
CLR_ADC083X_CLK;
SET_ADC083X_DO;
CLR_ADC083X_CS;
//SARS引腳非必要時(shí)可以不使用,以節(jié)省引腳資源!
#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可以接地,不使用其控制反響字節(jié)的輸出延時(shí)功能!
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?//缺省時(shí)為ADC0831
SET_ADC083X_CLK;
CLR_ADC083X_CLK;
#endif
SET_ADC083X_CLK;?//數(shù)據(jù)接收前的轉(zhuǎn)換位
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;
}?
//對(duì)非ADC0831的型號(hào)而言,后續(xù)波形沒有使用!
SET_ADC083X_CS;
return(ad_val);
}
//===================================
//End?Of?File
ADC0832 為8位分辨率A/D轉(zhuǎn)換芯片,其最高分辨可達(dá)256級(jí),可以適應(yīng)
一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬
電壓輸入在0~5V之間。芯片轉(zhuǎn)換時(shí)間僅為32μS,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)
校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú)立的芯片使能輸入,使
多器件掛接和處理器控制變的更加方便。通過DI 數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)
通道功能的選擇。
評(píng)論
查看更多