|
A/D轉(zhuǎn)換器用于實(shí)現(xiàn)模擬量向數(shù)字量的轉(zhuǎn)換,由于模數(shù)轉(zhuǎn)換電路的種類很多,選擇A/D轉(zhuǎn)換器件主要從速度、精度和價(jià)格方面考慮的。按轉(zhuǎn)換原理可分為4種,即: 計(jì)數(shù)式A/D轉(zhuǎn)換器。 雙積分式A/D轉(zhuǎn)換器。 逐次逼近式A/D轉(zhuǎn)換器。 并行式A/D轉(zhuǎn)換器。
目前最常用的是雙積分式和逐次逼近式。雙積分式A/D轉(zhuǎn)換器的優(yōu)點(diǎn)是轉(zhuǎn)換精度高,抗干擾性能好,價(jià)格便宜;但轉(zhuǎn)換速度較慢。因此這種轉(zhuǎn)換器主要用于速度要求不高的場(chǎng)合。逐次逼近式A/D轉(zhuǎn)換器是一種速度較快、精度較高的轉(zhuǎn)換器,其轉(zhuǎn)換時(shí)間大約在幾微秒到幾百微秒之間。常用的這類芯片有: ADC0801~ADC0805型8位MOS型A/D轉(zhuǎn)換器; ADC0808/0809型8位MOS型A/D轉(zhuǎn)換器; ADC0816/0817型8位MOS型A/D轉(zhuǎn)換器。
9.2.1 典型A/D轉(zhuǎn)換器芯片ADC0809 8路模擬信號(hào)的分時(shí)采集,片內(nèi)有8路模擬選通開關(guān),以及相應(yīng)的通道抵制鎖存用譯碼電路,其轉(zhuǎn)換時(shí)間為100μs左右。 1. ADC0809的內(nèi)部邏輯結(jié)構(gòu)ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖如圖9-7所示。 圖9.7 ADC0809內(nèi)部邏輯結(jié)構(gòu) 圖9.8 ADC0809引腳圖 圖中多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,這是一種經(jīng)濟(jì)的多路數(shù)據(jù)采集方法。地址鎖存與譯碼電路完成對(duì)A、B、C 3個(gè)地址位進(jìn)行鎖存和譯碼,其譯碼輸出用于通道選擇,其轉(zhuǎn)換結(jié)果通過三態(tài)輸出鎖存器存放、輸出,因此可以直接與系統(tǒng)數(shù)據(jù)總線相連,表9-1為通道選擇表。 表9-1 通道選擇表 2.信號(hào)引腳 ADC0809芯片為28引腳為雙列直插式封裝,其引腳排列見圖9.8。 對(duì)ADC0809主要信號(hào)引腳的功能說明如下: IN7~I(xiàn)N0——模擬量輸入通道 A、B、C——地址線。 通道端口選擇線,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。其地址狀態(tài)與通道對(duì)應(yīng)關(guān)系見表9-1。 ALE——地址鎖存允許信號(hào)。對(duì)應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。 START——轉(zhuǎn)換啟動(dòng)信號(hào)。START上升沿時(shí),復(fù)位ADC0809;START下降沿時(shí)啟動(dòng)芯片,開始進(jìn)行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。本信號(hào)有時(shí)簡(jiǎn)寫為ST. D7~D0——數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)線直接相連。D0為最低位,D7為最高 OE——輸出允許信號(hào)。用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。 CLK——時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,因此有時(shí)鐘信號(hào)引腳。通常使用頻率為500KHz的時(shí)鐘信號(hào) EOC——轉(zhuǎn)換結(jié)束信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號(hào)即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請(qǐng)求信號(hào)使用。 Vcc—— +5V電源。 Vref——參考電源參考電壓用來與輸入的模擬信號(hào)進(jìn)行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V, Vref(-)=-5V).
9.2.2 MCS-51單片機(jī)與ADC0809的接口 ADC0809與MCS-51單片機(jī)的連接如圖9.10所示。 電路連接主要涉及兩個(gè)問題。一是8路模擬信號(hào)通道的選擇,二是A/D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。 1. 8路模擬通道選擇圖9.10 ADC0809與MCS-51的連接 如圖9.11所示模擬通道選擇信號(hào)A、B、C分別接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址鎖存允許信號(hào)ALE由P2.0控制,則8路模擬通道的地址為0FEF8H~0FEFFH.此外,通道地址選擇以作寫選通信號(hào),這一部分電路連接如圖9.12所示。 圖9.11 ADC0809的部分信號(hào)連接 圖9.12 信號(hào)的時(shí)間配合 從圖中可以看到,把ALE信號(hào)與START信號(hào)接在一起了,這樣連接使得在信號(hào)的前沿寫入(鎖存)通道地址,緊接著在其后沿就啟動(dòng)轉(zhuǎn)換。圖9.19是有關(guān)信號(hào)的時(shí)間配合示意圖。 啟動(dòng)A/D轉(zhuǎn)換只需要一條MOVX指令。在此之前,要將P2.0清零并將最低三位與所選擇的通道好像對(duì)應(yīng)的口地址送入數(shù)據(jù)指針DPTR中。例如要選擇IN0通道時(shí),可采用如下兩條指令,即可啟動(dòng)A/D轉(zhuǎn)換: MOV DPTR , #FE00H ;送入0809的口地址 MOVX @DPTR , A ;啟動(dòng)A/D轉(zhuǎn)換(IN0) 注意:此處的A與A/D轉(zhuǎn)換無(wú)關(guān),可為任意值。
2. 轉(zhuǎn)換數(shù)據(jù)的傳送 A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。為此可采用下述三種方式。 (1)定時(shí)傳送方式 對(duì)于一種A/D轉(zhuǎn)換其來說,轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時(shí)間為128μs,相當(dāng)于6MHz的MCS-51單片機(jī)共64個(gè)機(jī)器周期?蓳(jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。 (2)查詢方式 A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0809的EOC端。因此可以用查詢方式,測(cè)試EOC的狀態(tài),即可卻只轉(zhuǎn)換是否完成,并接著進(jìn)行數(shù)據(jù)傳送。 (3)中斷方式 把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。 不管使用上述那種方式,只要一旦確定轉(zhuǎn)換完成,即可通過指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以信號(hào)有效時(shí),OE信號(hào)即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接受。 不管使用上述那種方式,只要一旦確認(rèn)轉(zhuǎn)換結(jié)束,便可通過指令進(jìn)行數(shù)據(jù)傳送。所用的指令為MOVX 讀指令,仍以圖9-17所示為例,則有 MOV DPTR , #FE00H MOVX A , @DPTR 該指令在送出有效口地址的同時(shí),發(fā)出有效信號(hào),使0809的輸出允許信號(hào)OE有 效,從而打開三態(tài)門輸出,是轉(zhuǎn)換后的數(shù)據(jù)通過數(shù)據(jù)總線送入A累加器中。 這里需要說明的示,ADC0809的三個(gè)地址端A、B、C即可如前所述與地址線相連,也可與數(shù)據(jù)線相連,例如與D0~D2相連。這是啟動(dòng)A/D轉(zhuǎn)換的指令與上述類似,只不過A的內(nèi)容不能為任意數(shù),而必須和所選輸入通道號(hào)IN0~I(xiàn)N7相一致。例如當(dāng)A、B、C分別與D0、D1、D2相連時(shí),啟動(dòng)IN7的A/D轉(zhuǎn)換指令如下: MOV | DPTR, #FE00H | ;送入0809的口地址 | MOV | A ,#07H | ;D2D1D0=111選擇IN7通道 | MOVX | @DPTR, A | ;啟動(dòng)A/D轉(zhuǎn)換 | 9.2.3 A/D轉(zhuǎn)換應(yīng)用舉例 設(shè)有一個(gè)8路模擬量輸入的巡回監(jiān)測(cè)系統(tǒng),采樣數(shù)據(jù)依次存放在外部RAM 0A0H~0A7H單元中,按圖9.10所示的接口電路,ADC0809的8個(gè)通道地址為0FEF8H~0FEFFH.其數(shù)據(jù)采樣的初始化程序和中斷服務(wù)程序(假定只采樣一次)如下: 初始化程序: | MOV | R0, #0A0H | ;數(shù)據(jù)存儲(chǔ)區(qū)首地址 | | MOV | R2, #08H | ;8路計(jì)數(shù)器 | | SETB | IT1 | ;邊沿觸發(fā)方式 | | SETB | EA | ;中斷允許 | | SETB | EX1 | ;允許外部中斷1中斷 | | MOV | DPTR, #0FEF8H | ;D/A轉(zhuǎn)換器地址 | LOOP: | MOVX | @DPTR, A | ;啟動(dòng)A/D轉(zhuǎn)換 | HERE: | SJMP | HERE | ;等待中斷 | 中斷服務(wù)程序: | DJNZ | R2, ADEND | | | MOVX | A, @DPTR | ;數(shù)據(jù)采樣 | | MOVX | @R0, A | ;存數(shù) | | INC | DPTR | ;指向下一模擬通道 | | INC | R0 | ;指向數(shù)據(jù)存儲(chǔ)器下一單元 | | MOVX | @DPTR, A | | ADEND: | RETI | |