ADC0809是美國國家半導體公司生產的CMOS工藝8通道,8位逐次逼近式A/D模數轉換器。其內部有一個8通道多路開關,它可以根據地址碼鎖存解碼後的信號,只選通8路模擬輸入信號中的一個進行A/D轉換。目前僅在單片機初學應用設計中較為常見。
ADC0809是CMOS單片型逐次逼近式A/D轉換器,內部結構如圖所示,它由8路模擬開關、地址鎖存與解碼器、比較器、8位開關樹型A/D轉換器、逐次逼近寄存器、邏輯控制和定時電路組成。
1)8路輸入通道,8位A/D轉換器,即解析度為8位。
2)具有轉換起停控制端。
3)轉換時間為100μs(時鐘為640KHz時),130μs(時鐘為500KHz時)。
4)單個+5V電源供電。
5)模擬輸入電壓範圍0~+5V,不需零點和滿刻度校準。
6)工作溫度範圍為-40~+85攝氏度。
7)低功耗,約15mW。
下圖是一個ADC0809與8051的一個接口電路圖。
由圖可知
0809 ADDA、ADDB、ADDC引腳與單片機P1.O-P1.2引腳相連; 0809 D0~D7引腳與單片機P1引腳相連;
0809 CLK引腳與單片機ALE引腳通過分頻期連接;
0809 ALE與START引腳與單片機/WR、P2.7引腳邏輯相連; 0809 OE 引腳與單片機/RD、P2.7引腳邏輯相連; 0809 EOC引腳與單片機INTO引腳邏輯相連;
0809 REF+引腳接+5V電壓REF-接地。表示轉化範圍為(0-5V)
設接口電路用於一個8路模擬量輸入的巡迴檢測系統,使用中斷方式採樣數據,把採樣轉換所得的數字量按序存於片內RAM的30H~37H單元中。採樣完一遍後停止採集。 彙編語言編程:
ORG 0003H
LJMP INT0
ORG 0100H ;主程序
MOV R0,#30H ;設立數據存儲區指針
MOV R2,#08H ;設置8路採樣計數值
SETB IT0 ;設置外部中斷0為邊沿觸發方式
SETB EA ;CPU開放中斷
SETB EX0 ;允許外部中斷0中斷
MOV DPTR,#0000H ;送入口地址並指向IN0
LOOP: MOVX @DPTR,A ;啟動A/D轉換,A的值無意義
HERE: SJMP HERE ;等待中斷
ORG 0200H ;中斷服務程序
INT0: MOVX A,@DPTR ;讀取轉換後的數字量
MOV @R0,A ;存入片內RAM單元
INC DPTR ;指向下一模擬通道
INC R0 ;指向下一個數據存儲單元
DJNZ R2,NEXT ;8路未轉換完,則繼續
CLR EA ;已轉換完,則關中斷
CLR EX0 ;禁止外部中斷0中斷
RETI ;中斷返回
NEXT: MOVX @DPTR,A ;再次啟動A/D轉換
RETI ;中斷返回
C語言編程:
#include 《reg51.h》
#include 《absacc.h》 //定義絕對地址訪問
#define uchar unsigned char
#define IN0 XBYTE[0x0000] //定義IN0為通道0的地址
static uchar data x[8]; //定義8個單元的數組,存放結果
uchar xdata *ad_adr; //定義指向通道的指針
uchar i=0;
void main(void)
{
IT0=1; //初始化
EX0=1;
EA=1;
i=0;
ad_adr=&IN0; //指針指向通道0
*ad_adr=i; //啟動通道0轉換
for (;;) {;} //等待中斷 }
void int_adc(void) interrupt 0 //中斷函數
{
x[0]=*ad_adr; //接收當前通道轉換結果
i++;
ad_adr++; //指向下一個通道 if (i《8)
{
*ad_adr=i; //8個通道未轉換完,啟動下一個通道返回
}
else
{
EA=0;EX0=0; //8個通道轉換完,關中斷返回
}
}
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴