51單片機與A/D接口設(shè)計詳解
A/D轉(zhuǎn)換器用于實現(xiàn)模擬量→數(shù)字量的轉(zhuǎn)換,按轉(zhuǎn)換原理可分為4種,即:計數(shù)式A/D轉(zhuǎn)換器、雙積分式A/D轉(zhuǎn)換器、逐次逼近式A/D轉(zhuǎn)換器和并行式A/D轉(zhuǎn)換器。
目前最常用的是雙積分式A/D轉(zhuǎn)換器和逐次逼近式A/D轉(zhuǎn)換器。雙積分式A/D轉(zhuǎn)換器的主要優(yōu)點是轉(zhuǎn)換精度高,抗干擾性能好,價格便宜。其缺點是轉(zhuǎn)換速度較慢,因此,這種轉(zhuǎn)換器主要用于速度要求不高的場合。
另一種常用的A/D轉(zhuǎn)換器是逐次逼近式的,逐次逼近式A/D轉(zhuǎn)換器是一種速度較快,精度較高的轉(zhuǎn)換器,其轉(zhuǎn)換時間大約在幾μs到幾百μs之間。通常使用的逐次逼近式典型A/D轉(zhuǎn)換器芯片有:
(1)ADC0801~ADC0805型8位MOS型A/D轉(zhuǎn)換器(美國國家半導(dǎo)體公司產(chǎn)品)。
(2)ADC0808 / 0809型8位MOS型A/D轉(zhuǎn)換器。
(3) ADC0816 / 0817。這類產(chǎn)品除輸入通道數(shù)增加至16個以外,其它性能與ADC0808 /0809型基本相同。
典型A/D轉(zhuǎn)換器芯片ADC0809
ADC0809是典型的8位8通道逐次逼近式A/D轉(zhuǎn)換器,CMOS工藝。
1. ADC0809的內(nèi)部邏輯結(jié)構(gòu)
ADC0809內(nèi)部邏輯結(jié)構(gòu)如圖所示。
圖中,多路開關(guān)可選通8個模擬通道,允許8路模擬量分時輸入,共用一個A/D轉(zhuǎn)換器進行轉(zhuǎn)換。地址鎖存與譯碼電路完成對A、B、C三個地址位進行鎖存和譯碼,其譯碼輸出用于通道選擇。
對ADC0809主要信號引腳的功能說明如下:
(1) IN7~IN0:模擬量輸入通道。ADC0809對輸入模擬量的要求主要有:信號單極性,電壓范圍0~5 V,若信號過小還需進行放大。另外,在A/D轉(zhuǎn)換過程中,模擬量輸入的值不應(yīng)變化太快,因此,對變化速度快的模擬量,在輸入前應(yīng)增加采樣保持電路。
(2) A、B、C:地址線。A為低位地址,C為高位地址,用于對模擬通道進行選擇。圖中為ADDA、ADDB和ADDC。
(3) ALE:地址鎖存允許信號。在對應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。
(4)START:轉(zhuǎn)換啟動信號。START上跳沿時,所有內(nèi)部寄存器清0;START下跳沿時,開始進行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。
(5)D7~D0:數(shù)據(jù)輸出線。其為三態(tài)緩沖輸出形式,可以和單片機的數(shù)據(jù)線直接相連。
(6)OE:輸出允許信號。其用于控制三態(tài)輸出鎖存器向單片機輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高電阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。
(7)CLK:時鐘信號。ADC0809的內(nèi)部沒有時鐘電路,所需時鐘信號由外界提供,因此有時鐘信號引腳。通常使用頻率為500kHz的時鐘信號。
(8)EOC:轉(zhuǎn)換結(jié)束狀態(tài)信號。EOC=0,正在進行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。該狀態(tài)信號既可作為查詢的狀態(tài)標(biāo)志,又可以作為中斷請求信號使用。
(9)VCC:+5 V電源。
(10)Vref:參考電源。參考電壓用來與輸入的模擬信號進行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5 V(Vref (+) =+5 V,Vref(-) =0 V)
MCS-51單片機與ADC0809接口
ADC0809與8031單片機的一種連接如圖所示。
電路連接主要涉及兩個問題,一是8路模擬信號通道選擇,二是A/D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。
8路模擬通道選擇
A、B、C分別接地址鎖存器提供的低三位地址,只要把三位地址寫入0809中的地址鎖存器,就實現(xiàn)了模擬通道選擇。對系統(tǒng)來說,地址鎖存器是一個輸出口,為了把三位地址寫入,還要提供口地址。圖7.40中使用的是線選法,口地址由P2.0確定,同時和相或取反后作為開始轉(zhuǎn)換的選通信號。
轉(zhuǎn)換數(shù)據(jù)的傳送
A/D轉(zhuǎn)換后得到的是數(shù)字量的數(shù)據(jù),這些數(shù)據(jù)應(yīng)傳送給單片機進行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)A/D轉(zhuǎn)換完成,因為只有確認(rèn)數(shù)據(jù)轉(zhuǎn)換完成后,才能進行傳送。為此,可采用下述三種方式。
1) 定時傳送方式
對于一種A/D轉(zhuǎn)換器來說,轉(zhuǎn)換時間作為一項技術(shù)指標(biāo)是已知的和固定的。例如,ADC0809轉(zhuǎn)換時間為128 μs,相當(dāng)于6 MHz的MCS-51單片機R 64個機器周期??蓳?jù)此設(shè)計一個延時子程序,A/D轉(zhuǎn)換啟動后即調(diào)用這個延時子程序,延遲時間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進行數(shù)據(jù)傳送。
2) 查詢方式
A/D轉(zhuǎn)換芯片有表明轉(zhuǎn)換完成的狀態(tài)信號,例如ADC0809的EOC端。因此,可以用查詢方式,軟件測試EOC的狀態(tài),即可確知轉(zhuǎn)換是否完成,然后進行數(shù)據(jù)傳送。
3) 中斷方式
把表明轉(zhuǎn)換完成的狀態(tài)信號(EOC)作為中斷請求信號,以中斷方式進行數(shù)據(jù)傳送。
在圖中,EOC信號經(jīng)過反相器后送到單片機的UMDJ,因此可以采用查詢該引腳或中斷的方式進行轉(zhuǎn)換后數(shù)據(jù)的傳送。
不管使用上述哪種方式,一旦確認(rèn)轉(zhuǎn)換完成,即可通過指令進行數(shù)據(jù)傳送。
首先送出口地址,并以作選通信號,當(dāng)信號有效時,OE信號即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機接收,即:
MOV DPTR,#0000H ;選中通道0
MOVX A, @DPTR ;信號有效,輸出轉(zhuǎn)換后的數(shù)據(jù)到A累加器