ADC0809與MCS-51單片機的連接如上圖所示。電路連接主要涉及兩個問題。一是8路模擬信號通道的選擇,二是A/D轉換完成后轉換數(shù)據(jù)的傳送。
1. 8路模擬通道選擇
如圖9.11所示模擬通道選擇信號A、B、C分別接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址鎖存允許信號ALE由P2.0控制,則8路模擬通道的地址為0FEF8H~0FEFFH.此外,通道地址選擇以WR作寫選通信號,這一部分電路連接如下圖所示。
ADC0809的部分信號連接 信號的時間配合
從圖中可以看到,把ALE信號與START信號接在一起了,這樣連接使得在信號的前沿寫入(鎖存)通道地址,緊接著在其后沿就啟動轉換。上圖是有關信號的時間配合示意圖。
啟動A/D轉換只需要一條MOVX指令。在此之前,要將P2.0清零并將最低三位與所選擇的通道好像對應的口地址送入數(shù)據(jù)指針DPTR中。例如要選擇IN0通道時,可采用如下兩條指令,即可啟動A/D轉換:
MOV DPTR , #FE00H ;送入0809的口地址
MOVX @DPTR , A ;啟動A/D轉換(IN0)
注意:此處的A與A/D轉換無關,可為任意值。
2.轉換數(shù)據(jù)的傳送
A/D轉換后得到的數(shù)據(jù)應及時傳送給單片機進行處理。數(shù)據(jù)傳送的關鍵問題是如何確認A/D轉換的完成,因為只有確認完成后,才能進行傳送。為此可采用下述三種方式。
(1)定時傳送方式
對于一種A/D轉換其來說,轉換時間作為一項技術指標是已知的和固定的。例如ADC0809轉換時間為128µs,相當于6MHz的MCS-51單片機共64個機器周期??蓳?jù)此設計一個延時子程序,A/D轉換啟動后即調(diào)用此子程序,延遲時間一到,轉換肯定已經(jīng)完成了,接著就可進行數(shù)據(jù)傳送。
(2)查詢方式
A/D轉換芯片由表明轉換完成的狀態(tài)信號,例如ADC0809的EOC端。因此可以用查詢方式,測試EOC的狀態(tài),即可卻只轉換是否完成,并接著進行數(shù)據(jù)傳送。
(3)中斷方式
把表明轉換完成的狀態(tài)信號(EOC)作為中斷請求信號,以中斷方式進行數(shù)據(jù)傳送。
不管使用上述那種方式,只要一旦確定轉換完成,即可通過指令進行數(shù)據(jù)傳送。首先送出口地址并以RD信號有效時,OE信號即有效,把轉換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機接受。
不管使用上述那種方式,只要一旦確認轉換結束,便可通過指令進行數(shù)據(jù)傳送。所用的指令為MOVX 讀指令,仍以圖9-17所示為例,則有
MOV DPTR , #FE00H
MOVX A , @DPTR
該指令在送出有效口地址的同時,發(fā)出有效信號RD,使0809的輸出允許信號OE有效,從而打開三態(tài)門輸出,是轉換后的數(shù)據(jù)通過數(shù)據(jù)總線送入A累加器中。
這里需要說明的示,ADC0809的三個地址端A、B、C即可如前所述與地址線相連,也可與數(shù)據(jù)線相連,例如與D0~D2相連。這是啟動A/D轉換的指令與上述類似,只不過A的內(nèi)容不能為任意數(shù),而必須和所選輸入通道號IN0~IN7相一致。例如當A、B、C分別與D0、D1、D2相連時,啟動IN7的A/D轉換指令如下:
MOV DPTR, #FE00H ;送入0809的口地址
MOV A ,#07H ;D2D1D0=111選擇IN7通道
MOVX
@DPTR, A ;啟動A/D轉換