8051單片機擴展ADC0809的兩種典型方法如圖5-53所示,其差別是確定ADC轉(zhuǎn)換通道的方式不同。
(1)單片機地址總線低8位確定轉(zhuǎn)換通道
在圖5-53a中,單片機ALE引腳信號進行二分頻后,作為ADC0809的CLK時鐘信號。單片機P0口經(jīng)過鎖存器74HC373后的地址總線低8位的A2、A1和A0分別與ADC0809的地址線C、B和A相連,用于確定被轉(zhuǎn)換的通道編號。
圖5-53 8051單片機擴展ADC0809的電路原理圖
a)單片機地址總線低8位確定轉(zhuǎn)換通道b)單片機數(shù)據(jù)總線確定轉(zhuǎn)換通道
啟動ADC0809轉(zhuǎn)換的指令是“MOVX@DPTR,A”或“MOVX@Ri,A”。例如,對于圖5-53a,啟動通道6轉(zhuǎn)換的指令可以是:
其中,MOVX指令執(zhí)行時,地址7FFEH的低8位(A7~A0)和高8位(A15~A8)分別出現(xiàn)在地址總線P0和P2上。由MOVX指令寫總線時序(如圖5-13所示)可知,單片機ALE的下降沿信號將驅(qū)動74HC373鎖存P0傳送的低8位地址(A7~A0,
其值為0FEH=11111110B),其中A2、A1和A0分別與ADC0809的C、B和A引腳連接,確定了被選中的通道編號是110B=6。另外,由于P2.7為低電平,單片機的WR被或非門取反,使得START和ALE引腳產(chǎn)生如圖5-54所示的波形,從而啟動ADC0809
轉(zhuǎn)換。
圖5-54 8051單片機啟動ADC0809轉(zhuǎn)換的引腳波形圖
特別需要指出的是:
1)對于圖5-53a所示的擴展連接方式向,在ADC0809的啟動指令“MOVX@DPTR,A”中,累加器A的值對A-D轉(zhuǎn)換本身沒有任何影響,其值可以是任意的。
2)指令“MOVX@DPTR,A”中,與ADC0809通道選擇無關(guān)的地址位可以是任意值,但推薦將其設(shè)置為1,如圖5-53a中的單片引腳P2.6~P2.0和P0.7~P0.3。
轉(zhuǎn)換結(jié)束后,讀取轉(zhuǎn)換結(jié)果的指令是“MOVX A,@DPTR”或“MOVX A,@Ri”。例如,對于圖5-53a,讀取通道6轉(zhuǎn)換結(jié)果的指令可以是
由“MOVX A,@DPTR”指令時序(見圖5-12)可知,該指令執(zhí)行時地址7FFEH的高8位和低8位分別出現(xiàn)在P2口和P0口;單片機引腳ALE下降沿信號使74HC373鎖存P0上的低8位地址;而P2.7為低電平,使單片機引腳RD的低電平被或非門取反,變成高電平,使ADC0809的OE引腳有效,允許ADC0809由其D7~D0引腳輸出8位A-D轉(zhuǎn)換結(jié)果;而ADC0809的D7~D0引腳與單片機的P0口相連,在單片機引腳RD為低電平時,P0作為數(shù)據(jù)線恰好可以將轉(zhuǎn)換結(jié)果送入單片機的累加器A。另外,讀取轉(zhuǎn)換結(jié)果時,僅需要ADC0809的OE引腳高電平有效,地址引腳A、B和C沒有任何作用,所以與地址引腳A、B和C對應的地址位可以是任意值,即在“MOVX A,@DPTR”指令中,DPTR的最低3位可以是任意值。
由上述分析可知,指令時序在單片機擴展外部I/O接口時具有重要作用,恰當?shù)乩脮r序可以使單片機有效地完成對I/O接口的訪問。
(2)單片機數(shù)據(jù)總線確定轉(zhuǎn)換通道
在圖5-53b中,沒有使用地址鎖存器鎖存地址總線的低8位地址。在這種連接方式下,啟動通道6轉(zhuǎn)換的指令可以是
其中,“MOVX@DPTR,A”指令中累加器A的值決定了ADC0809被轉(zhuǎn)換的通道編號。具體分析如下:
結(jié)合圖5-13所示的“MOVX@DPTR,A”指令時序圖和圖5-54所示的ADC0809啟動轉(zhuǎn)換引腳波形圖可知,ADC0809在其ALE引腳上升沿時鎖存器地址引腳A、B和C上的地址信息,用以確定被轉(zhuǎn)換的通道編號。而ADC0809的ALE引腳上升沿信號源于
單片機WR引腳的下降沿。在WR的下降沿時刻,單片機P0是數(shù)據(jù)線,并且傳送的,該數(shù)據(jù)來自于“MOVX@DPTR,A”中的累加器A。即,對于圖5-53c所示的擴展方式,ADC0809在其ALE引腳上升沿時鎖存的地址信號來自于單片機的數(shù)據(jù)總線,因此“MOVX@DPTR,A”送上數(shù)據(jù)總線的數(shù)據(jù)(即累加器A中的數(shù))決定了ADC0809轉(zhuǎn)換的通道編號。
由以上分析可知,被“MOVX@DPTR,A”指令送入地址總線的7FFFH的最高位決定了P2.7的狀態(tài)為0,使得單片機WR引腳的信號被取反后通過“或非”門,從而啟動轉(zhuǎn)ADC0809的A-D轉(zhuǎn)換;而該指令送上數(shù)據(jù)總線的0FEH的最低3位110B對應于ADC0809的C、B和A引腳,在ADC0809的ALE上升沿時刻(單片機WR的下降沿時刻)被鎖存以確定A/D轉(zhuǎn)換通道編號。
讀取通道6轉(zhuǎn)換結(jié)果的指令如下: