第 12 章D-A與A-D接口_第1頁
第 12 章D-A與A-D接口_第2頁
第 12 章D-A與A-D接口_第3頁
第 12 章D-A與A-D接口_第4頁
第 12 章D-A與A-D接口_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第 12 章 數(shù)模(D/A)轉(zhuǎn)換與模數(shù)(A/D)轉(zhuǎn)換接口 本章講述:12.1 D/A轉(zhuǎn)換器接口12.2 A/D轉(zhuǎn)換器接口12.1 D/A轉(zhuǎn)換器接口 D/A(Digit to Analog)和A/D(Analog to Digit)轉(zhuǎn)換是計算機與外部世界聯(lián)系的重要接口。在一個實際的系統(tǒng)中,有兩種基本的量模擬量和數(shù)字量。外界的模擬量要輸入給計算機,首先要經(jīng)過A/D轉(zhuǎn)換,才能由計算機進行運算、加工處理等。若計算機的控制對象是模擬量,也必須先把計算機輸出的數(shù)字量經(jīng)過D/A轉(zhuǎn)換,才能控制模擬量。D/A和A/D轉(zhuǎn)換的具體電路已經(jīng)在數(shù)字電路課程中講述。本章主要介紹如何把D/A和A/D轉(zhuǎn)換的芯片與CPU進行接

2、口以及用CPU控制這些轉(zhuǎn)換的軟件編程如何實現(xiàn)。 12.1.1 CPU與8位D/A芯片的接口D/A轉(zhuǎn)換通常是由輸入的二進制數(shù)的各位控制一些開關(guān),通過電阻網(wǎng)路,在運算放大器的輸入端產(chǎn)生與二進制數(shù)各位的權(quán)成比例的電流,經(jīng)過運算放大器相加和轉(zhuǎn)換而成為與二進制數(shù)成比例的模擬電壓。若CPU的輸出數(shù)據(jù)要通過D/A轉(zhuǎn)換變?yōu)槟M量輸出,當(dāng)然要把CPU數(shù)據(jù)總線的輸出連到D/A的數(shù)字輸入上。但是,由于CPU要進行各種信息的加工處理,它的數(shù)據(jù)總線上的數(shù)據(jù)是不斷地改變的,它輸出給D/A的數(shù)據(jù)只在輸出指令的幾個微秒中出現(xiàn)在數(shù)據(jù)總線上。所以,必須要有一個鎖存器,把CPU輸出給D/A轉(zhuǎn)換的數(shù)據(jù)鎖存起來,直至輸送新的數(shù)據(jù)為止。

3、一個最簡單的D/A芯片與CPU的接口電路如圖12-1所示。 其中,以鎖存器74100作為CPU與D/A轉(zhuǎn)換之間的接口。CPU把74100作為一個輸出端口,用地址27H來識別,則CPU輸給D/A的數(shù)據(jù)要用一條I/O寫(即輸出)指令來實現(xiàn)。圖12-1的電路可應(yīng)用于許多場合,例如:(1) 驅(qū)動一個侍服電機;(2) 控制一個電壓頻率轉(zhuǎn)換器(用于鎖相環(huán)路);(3) 控制一個可編程的電源;(4) 驅(qū)動一個模擬電表。 12.1.2 8位位CPU與與12位(高于位(高于8位的)位的)D/A轉(zhuǎn)換器的接口轉(zhuǎn)換器的接口1. 一種一種12位位D/A轉(zhuǎn)換芯片轉(zhuǎn)換芯片這里介紹一種12位D/A轉(zhuǎn)換片子DAC1210。DAC

4、1210是美國國家半導(dǎo)體公司生產(chǎn)的12位D/A轉(zhuǎn)換器芯片,是智能化儀表中常用的一種高性能的D/A轉(zhuǎn)換器。DAC1210的邏輯結(jié)構(gòu)框圖如圖12-2所示。由圖12-2所示DAC1210的邏輯結(jié)構(gòu)是一個12位的D/A轉(zhuǎn)換器。它有兩個輸入寄存器,一個是8位的,一個是4位。若它與8位CPU接口,DAC1210的輸入線DI11DI4以及DI3DI0都連至CPU的數(shù)據(jù)總線DB7DB0。12位數(shù)據(jù)需分兩次輸送,若CPU輸出的地址及控制信號,使LE1有效,則8位數(shù)據(jù)輸入至8位輸入寄存器:若CPU使LE2有效,則12位數(shù)據(jù)中的另4位輸入至DAC1210的4位輸入寄存器。再使LE3有效,把12位輸入寄存器的內(nèi)容同時

5、輸入給12位DAC寄存器,進行D/A轉(zhuǎn)換。 若DAC1210與16位CPU相連,則DI11DI0連至CPU的數(shù)據(jù)總線DB11DB0。CPU的輸出地址與控制信號使LE1與LE2同時有效。則CPU輸出的12位數(shù)據(jù)同時輸入至8位輸入寄存器與4位輸入寄存器。然后,使LE3有效,把12位輸入寄存器的內(nèi)容同時輸送給12位DAC寄存器,進行D/A轉(zhuǎn)換。DAC1210共有24個引腳,各引腳定義如下: DI11DI0:12位數(shù)字量輸入信號,其中DI0為最低位,DI11為最高位。 CS# :片選輸入信號,低電平有效。 WR1# :數(shù)據(jù)寫入信號1,低電平有效。當(dāng)此信號有效時,與B1/2配合起控制作用。 B1/B2#

6、:字節(jié)控制信號。此引腳為高電平時,12位數(shù)字同時送入輸入寄存器;為低電平時,只將12位數(shù)字量的低4位送到4位輸入寄存器。 XFER# :傳送控制信號,低電平有效,與2配合使用。 WR2#:數(shù)據(jù)寫入信號2,低電平有效。此信號有效時,信號才起作用。 IOUT1:電流輸出1。 IOUT2:電流輸出2。 RFB:內(nèi)部反饋電阻引腳。 VREF:參考電壓,-10V+10V。 VCC:芯片電源,+5V+15V。 AGND:模擬地。 DGND:數(shù)字地。2. DAC的輸出連接方式的輸出連接方式有的D/A轉(zhuǎn)換片子的輸出是電壓,有的片子輸出的是電流。在實際應(yīng)用中,執(zhí)行部件往往要求電壓驅(qū)動,所以,電流輸出的要經(jīng)過電流

7、-電壓變換器。輸出電壓又可能只要求單極性,而有的要求有正有負(fù)(雙極性)。(1) 單極性輸出一個電流輸出的D/A片子轉(zhuǎn)換為單極性電壓輸出的電路如圖12-3所示。 輸出與RFB端間接的電阻R2以及接于參考電源的R1是為了調(diào)整增益,電容C則起防止振蕩的作用。(2) 雙極性輸出其輸出電路如圖12-4所示。3. 8位位CPU與與12位位D/A接口方法接口方法許多應(yīng)用場合要求D/A有更高的靈敏度和精度,8位就不能滿足要求了,常常要求10位、12位或14位D/A轉(zhuǎn)換器。那么,如何把一個多于8位的D/A轉(zhuǎn)換器接口到8位的微型機呢?可以把12位分成兩段,第一次微型機先輸出低8位到鎖存器,第二次再把另四位送到另一

8、個鎖存器上,如圖12-5所示。 而要輸出的12位是存儲在兩個相鄰的單元內(nèi):地址 數(shù)據(jù)位A D7 D6 D5 D4 D3 D2 D1 D0A+1 D11 D10 D9 D8A+2 D7 D6 D5 D4 D3 D2 D1 D0A+3 D11 D10 D9 D8為無用的位。但是,若用圖12-5的電路輸出,則輸出電壓上會出現(xiàn)毛刺。這是由于,若原來的數(shù)據(jù)為0000 1111 0000,下一個輸出的值為0001 0000 1011,但在輸出過程中是先輸出低8位,如下所示: 數(shù)據(jù)先由0000 1111 0000變?yōu)?000 0000 1011,則輸出電壓要下降;然后再輸出高四位,變?yōu)?001 0000 1

9、011,輸出電壓再升高,就出現(xiàn)了毛刺。為了解決這個問題,可以采用雙緩沖器結(jié)構(gòu),如圖 12-6所示。CPU輸出時,先輸出低8位給緩沖器1(此時緩沖器2不通,故輸出不變),然后輸出高兩位。等這兩者都輸出后,再輸出一個打開緩沖器2的選通脈沖,把10位同時輸給D/A轉(zhuǎn)換,這樣就避免了毛刺。程序如下: ORG 2000HSTART: MOV BX,DATA MOV CL,64HDAC: MOV AL,BX OUT 54H,AL INC BX MOV AL,BX OUT 55H,AL OUT 56H,AL INC BX DEC CL JNZ DAC JMP START ORG 3000HDATA: DW

10、W1,W2,W100; 定義100個字(每個字10位) END START12.2 A/D轉(zhuǎn)換器接口12.2.1 概述 在一個實際的系統(tǒng)中,要用微型計算機來監(jiān)視和控制過程中發(fā)生的各種參數(shù),就首先要用傳感器把各種物理參數(shù)(如壓力、溫度等)測量出來,并且轉(zhuǎn)換為電信號,再經(jīng)過A/D轉(zhuǎn)換,傳送給微型計算機;微型計算機對各種信號計算、加工處理后輸出,經(jīng)過D/A轉(zhuǎn)換再去控制各種參數(shù),其過程如圖12-14所示。 其中:(1) 傳感器把各種現(xiàn)場的物理量測量出來,并且轉(zhuǎn)換為電信號。(2) 量程放大器把傳感器的信號(通常為mVV級)放大到A/D轉(zhuǎn)換所需要的量程范圍。(3) 低通濾波器降低干擾,增加信擾比。(4)

11、多路開關(guān)通常要監(jiān)視和控制的現(xiàn)場信號是很多的,而且它們的變化是緩慢的,所以沒有必要一種現(xiàn)場信號就有一個A/D轉(zhuǎn)換器和占用一條與微型計算機聯(lián)系的通路,而可以利用多路開關(guān),把多個現(xiàn)場信號,用一條通路來監(jiān)視和控制。(5) 采樣/保持電路因為現(xiàn)場信號總是在變化的,而A/D轉(zhuǎn)換總是需要一定時間的,所以,需要把要轉(zhuǎn)換的信號采樣后保持一段時間,以備轉(zhuǎn)換。另外,現(xiàn)場信號的變化是緩慢的,沒有必要始終監(jiān)視,而可以用巡回檢測的辦法,所以,也要求有采樣/保持電路。當(dāng)用巡回檢測的辦法來監(jiān)視現(xiàn)場信號時,就存在一個問題: 應(yīng)該經(jīng)過多長時間去采樣一次被測信號,使采樣的結(jié)果能夠反映被測信號,即采樣頻率應(yīng)該多高。采樣定理告訴我們:

12、采樣頻率至少應(yīng)該大于被測信號頻譜中的最高頻率的兩倍。本章主要討論A/D轉(zhuǎn)換。 12.2.2 用軟件實現(xiàn)A/D轉(zhuǎn)換利用D/A轉(zhuǎn)換器,CPU可用軟件實現(xiàn)A/D轉(zhuǎn)換。1. 計數(shù)器式A/D轉(zhuǎn)換計數(shù)器式A/D轉(zhuǎn)換可以用硬件實現(xiàn),如圖12-15所示。也可以利用一個D/A轉(zhuǎn)換電路,用軟件實現(xiàn),如圖12-16所示。軟件實現(xiàn)實際上是用一種類似于線性搜索的辦法,每次讓一個鎖存器加1,再把它經(jīng)D/A轉(zhuǎn)換后為VC,與輸入模擬電壓VX相比較,把比較的結(jié)果用一個輸入端口輸入,若仍是VXVC,則循環(huán);當(dāng)VX=VC時就停止循環(huán),此時鎖存器中的數(shù)據(jù)即為轉(zhuǎn)換所得的結(jié)果。 其程序如下:ORG2000HSTART:MOVCL,0;用

13、CL作比較用的寄存器,初值為零DALOOP:MOVAL,CLOUT27H,ALINAL,15H;輸入比較器的狀態(tài),若VXVC,則D5=0AND20H;屏蔽除D5外的其他位JNZDONE;D50,則轉(zhuǎn)換完成INCCLJMPDALOOPDONE:MOVAL,CLOUT02H,AL;轉(zhuǎn)換完成數(shù)據(jù)輸出顯示HALT 但是用上述軟件來實現(xiàn)轉(zhuǎn)換,比硬件更慢。255步的比較需要7ms(若CPU為8080A)。顯然轉(zhuǎn)換的位數(shù)越多,時間就更長。所以,用軟件實現(xiàn)計數(shù)器式的A/D轉(zhuǎn)換是不實用的;但是當(dāng)轉(zhuǎn)換速度要求不高時硬件實現(xiàn)的芯片仍然是有用的,它的成本較低。 2. 逐次逼近式A/D轉(zhuǎn)換用軟件實現(xiàn)逐次逼近式A/D轉(zhuǎn)換

14、,實際上是把輸入模擬電壓VX作為一個關(guān)鍵字,用對分搜索的辦法來逼近它。例如,在8位的情況下,要轉(zhuǎn)換一個相當(dāng)于數(shù)113的模擬電壓,搜索過程可用表12-5來描述。 用軟件實現(xiàn)逐次逼近式A/D轉(zhuǎn)換的流程圖如圖12-17所示。如果仍然使用圖12-16所示的接口電路,則寄存器AL用于I/O數(shù)據(jù)傳送和位操作,寄存器DH存放每次試探的數(shù)據(jù),寄存器DL存放累加的結(jié)果,寄存器CL作為循環(huán)次數(shù)計數(shù)器。程序如下:ORG2000HSTART:SUBAL,AL;清ALMOVDX,8000H;置DH=80H,DL=00HMOVCL,8;置循環(huán)次數(shù)AGAIN:ORAL,DH;建立新試探值MOVDL,AL;存入DL中 INA

15、L,15H;輸入比較結(jié)果的狀態(tài);若VXVC,則D5=0ANDAL,20H;屏蔽除D5外的所有位JZOK;小于VX,轉(zhuǎn)至OKMOVAL,DHNOTALANDAL,DL;使新的試探值置0MOVDL,AL;和DLOK:RRDH;移至下一位試探MOVAL,DLDECCLJNZAGAIN;未完,進入下一循環(huán)DONE:HALT對于8位的轉(zhuǎn)換,若CPU為8080,時鐘周期為500ns,則轉(zhuǎn)換時間為240s。若要求更快轉(zhuǎn)換,則可用硬件實現(xiàn)的逐次逼近式轉(zhuǎn)換器。 12.2.3 A/D轉(zhuǎn)換芯片介紹1. 8通道8位A/D轉(zhuǎn)換器ADC 0809ADC 0809是CMOS的8位單片A/D轉(zhuǎn)換器。片內(nèi)有8路模擬開關(guān),可控制

16、選擇8個模擬量中的一個。A/D轉(zhuǎn)換采用逐次逼近原理。輸出的數(shù)字信號有TTL三態(tài)緩沖器控制,故可直接連至數(shù)據(jù)總線。(1) 主要功能 分辨率為8位; 總的不可調(diào)誤差在12LSB1LSB范圍內(nèi); 轉(zhuǎn)換時間為100s; 具有鎖存控制的8路多路開關(guān); 輸出有三態(tài)緩沖器控制; 單一5V電源供電,此時模擬電壓輸入范圍為05V; 輸出與TTL兼容; 工作溫度范圍為-4085。(2) ADC 0809功能方框圖ADC 0809的結(jié)構(gòu)如圖12-18所示。模擬輸入部分有8路多路開關(guān),可由三位地址輸入ADDA、ADDB、ADDC的不同組合來選擇(這三條地址輸入信號可鎖存)。主體部分是采用逐次逼近式的A/D轉(zhuǎn)換電路,由

17、CLK信號控制內(nèi)部電路的工作,由START信號控制轉(zhuǎn)換開始。轉(zhuǎn)換后的數(shù)字信號在內(nèi)部鎖存,通過三態(tài)緩沖器接至輸出端。 ADC 0809的引腳如圖12-19所示。其中,START為啟動命令,高電平有效。由它啟動ADC 0809內(nèi)部的A/D轉(zhuǎn)換過程。當(dāng)模/數(shù)轉(zhuǎn)換完成,輸出信號EOC#(End of Convert)有效(低電平有效)。OE(Output Enable)為輸出允許信號,高電平有效。當(dāng)在此輸入端供給一個有效信號時,打開輸出三態(tài)緩沖器,把轉(zhuǎn)換后的結(jié)果輸送至數(shù)據(jù)總線。 (3) ADC 0809時序ADC 0809的時序如圖12-20所示。當(dāng)模擬量送到某一輸入端后,由三位地址信號來選擇,地址信

18、號由地址鎖存允許ALE(Address Latch Enable)鎖存。由啟動命令START啟動轉(zhuǎn)換。轉(zhuǎn)換完成EOC#輸出一個負(fù)脈沖,外界的輸出允許信號OE,打開三態(tài)緩沖器把轉(zhuǎn)換的結(jié)果送上數(shù)據(jù)總線。一次A/D轉(zhuǎn)換的過程就完成了。2. 12位A/D轉(zhuǎn)換器AD7870/AD7875/AD7876(1) 主要功能AD7870/AD7875/AD7876 是一組完全12位 8s逐次逼近式A/D 轉(zhuǎn)換器。它們由基于快速設(shè)置的電壓輸出DAC、高速比較器和逐次逼近寄存器(SAR)、采樣保持放大器、時鐘和控制邏輯組成。它有一個自包含的內(nèi)部時鐘以保證轉(zhuǎn)換時間的精確控制,不需要外部時鐘。若需要的話,內(nèi)部時鐘也可被

19、外部時鐘超越。整個操作由5V電源供電。AD7870和AD7876分別接收3V和10V輸入信號范圍而AD7875接收單極性的0V+5V輸入范圍。 (2) AD7870的結(jié)構(gòu)和引腳其結(jié)構(gòu)如圖12-21所示。AD7870接收到有效的CONVST命令后,內(nèi)部的逐次逼近寄存器從最高位開始順次經(jīng)DAC在比較器上與模擬量相比較。檢測完所有位后,SAR中包含轉(zhuǎn)換后的12位二進制碼。轉(zhuǎn)換完成后,SAR發(fā)出INT信號(低電平有效),打開三態(tài)緩沖器輸出數(shù)據(jù)。各個引腳的功能為:腳1RD# 讀。輸入,低電平有效。此輸入引腳用于與低電平有效的CS#相結(jié)合以允許數(shù)據(jù)輸出。腳2BUSY#/INT#忙/中斷。低有效,輸出以指示

20、轉(zhuǎn)換器狀態(tài)。參見時序圖。腳3CLK 時鐘輸入。一外部TTL兼容的時鐘可以供給至此輸入腳。若連接此腳至VSS,啟用內(nèi)部時鐘。腳4DB11/HBEN數(shù)據(jù)位11(最高有效位)/高字節(jié)啟用。此腳的功能取決于12/8/CLK輸入的狀態(tài)。當(dāng)選擇12位并行數(shù)據(jù)時,此腳提供DB11輸出。當(dāng)選擇字節(jié)數(shù)據(jù)時,此腳變?yōu)镠BEN邏輯輸入,用于與8位總線接口。當(dāng)HBEN是低,DB7/LOWDB0/DB8變?yōu)镈B7DB0。若HBEN為高,DB7/LOW到DB0/DB8用于數(shù)據(jù)的高四位。 腳5DB10/SSTRB數(shù)據(jù)位10/串行選通。當(dāng)選擇12位數(shù)據(jù)時,此腳提供DB10輸出。SSTRB是一個低有效漏極開路輸出為串行數(shù)據(jù)提供

21、選通或幀脈沖。在SSTRB上需要一個4.7k的上拉電阻。腳6DB9/SCLK數(shù)據(jù)位9/串行時鐘。當(dāng)選擇12位并行數(shù)據(jù)時,此腳提供DB9輸出。SCLK是以內(nèi)部或外部ADC時鐘導(dǎo)出的可控的串行時鐘輸出。若12/8/CLK輸入是-5V,于是SCLK繼續(xù)運行。若12/8/CLK是0V,于是SCLK在串行發(fā)送完成之后關(guān)閉。SCLK是一個漏極開路輸出并要求外部2k上拉電阻。腳7DB8/SDATA數(shù)據(jù)位8/串行數(shù)據(jù)。當(dāng)選擇12位并行數(shù)據(jù)時,此腳提供DB8輸出。SDATA是一漏極開路串行數(shù)據(jù)輸出,它與CLK和SSTRB一起用于串行數(shù)據(jù)傳送。當(dāng)SSTRB為低時,串行數(shù)據(jù)在SCLK的下降沿有放。在SDATA上要求

22、一個外部的4.7k上拉電阻。腳8腳11DB7/LOWDB4/LOW由CS和RD控制的三態(tài)數(shù)據(jù)輸出。它們的功能取決于12/8/CLK和HBEN輸入。在12/8/CLK高時,它們是DB7DB4。在12/8/CLK低或-5V,它們的功能由HBEN控制(見表12-6)。 腳12DGND 數(shù)字地。腳13腳16DB3/DB11DB0/DB8由CS和RD控制的三態(tài)數(shù)據(jù)輸出。它們的功能取決于12/8/CLK和HBEN輸入。若12/8/CLK為高,它們是DB3DB0。若12/8/CLK為低或-5V,它們的功能由 HBEN控制(見表12-6)。腳17VDD正電源,+5V5%。腳18AGND 模擬地。腳19REF

23、OUT參考電壓輸出。在此腳上提供內(nèi)部3V參考電壓外部負(fù)載能力是500A。腳20VIN模擬輸入。對于AD7870是3V,對于AD7876是10V,對于AD7875是+5V。腳21VSS負(fù)電源,-5V5%。腳2212/8/CLK 三功能輸入。定義數(shù)據(jù)格式和串行時鐘格式。若此腳為+5V,輸出數(shù)據(jù)是12位并行。若此腳為0V,或者是字節(jié)或者是串行數(shù)據(jù),且SCLK不連續(xù)。若此腳為-5V,或者字節(jié)或者串行數(shù)據(jù)但現(xiàn)在SCLK連續(xù)。腳23CONVST#啟動轉(zhuǎn)換。在此輸入腳上由低變?yōu)楦?,使采?保持處在保持方式并啟動轉(zhuǎn)換。此腳與CLK輸入是異步的。腳24CS#片選,輸入、低有效。當(dāng)此輸入有效,選中此設(shè)備。若CON

24、VST連接為低,當(dāng)CS#變低,啟動新的轉(zhuǎn)換。 (3) AD 7870的操作方式與時序AD7870/AD7875/AD7876有兩種基本操作模式: 模式1、模式2。在第一種模式(模式1)中,CONVST#線用于啟動轉(zhuǎn)換并驅(qū)使采樣/保持電路進入保持方式。在轉(zhuǎn)換結(jié)束,采樣/保持電路返回采樣方式。對于要求在時間上精確采樣的數(shù)字信號處理和別的應(yīng)用程序,傾向于用這種模式。對于這種情況,CONVST#線由定時器或若干精確時鐘源驅(qū)動。第二種模式是把CONVST#線硬連為低而實現(xiàn)。這種模式(模式2)傾向用于微處理器同時控制和啟動 ADC轉(zhuǎn)換并讀數(shù)據(jù)的系統(tǒng)中。CS#啟動轉(zhuǎn)換,在轉(zhuǎn)換間隔由BUSY#/INT#線使微

25、處理器處在WAIT狀態(tài)。 模式1接口轉(zhuǎn)換由在CONVST#輸入腳上的低脈沖啟動。CONVST#脈沖的上升沿,啟動轉(zhuǎn)換并且驅(qū)使采樣/保持放大器進入保持方式。若CS#是低電平則轉(zhuǎn)換不啟動。在這種模式,BUSY#/INT#狀態(tài)輸出作為中斷功能。INT#正常是高電平,在轉(zhuǎn)換結(jié)束時變低。INT#線能用于中斷微處理器。對ADC的讀操作訪問數(shù)據(jù)且在CS#和RD#的下降沿INT#線重置為高電平。為了對這種模式的ADC正確操作,當(dāng)CS#和RD#都變低時,CONVST#必須為高電平。在這種模式下,CS#和RD#不能硬連為低。在轉(zhuǎn)換期間不能讀數(shù)據(jù),因為片上的鎖存器在轉(zhuǎn)換進行中是屏蔽的。圖12-24給出12位并行數(shù)據(jù)

26、輸出格式(12/8/CLK=+5V)時模式1的時序圖。在轉(zhuǎn)換結(jié)束時對ADC的讀同時訪問所有12位數(shù)據(jù)。對于這種數(shù)據(jù)輸出格式,串行數(shù)據(jù)是不可以用的。AD7870提供三種數(shù)據(jù)輸出格式: 單個并行的12位字、兩個8位字節(jié)或串行數(shù)據(jù)。并行數(shù)據(jù)格式是對16位數(shù)據(jù)總線提供單12位并行字;對于8位數(shù)據(jù)總線提供兩個字節(jié)格式。數(shù)據(jù)字節(jié)格式由12/8/CLK 輸入控制。在此腳上的邏輯高電平,只選擇12位并行輸出格式。若邏輯低電平或-5V供給此輸入,允許用戶訪問字節(jié)格式或串行的數(shù)據(jù)。在任一種操作模式中,這三種數(shù)據(jù)輸出格式都是可選的。 并行輸出格式在第一種格式中,12位數(shù)據(jù)在DB11DB0上同時可用。在第二種格式中,

27、訪問數(shù)據(jù)要求兩次讀。在選擇了這種格式時,DB11/HBEN腳作為HBEN(高字節(jié)允許)功能,它選擇從ADC讀數(shù)據(jù)的哪個字節(jié)。當(dāng)HBEN為低,在讀操作期間數(shù)據(jù)的低8位放至數(shù)據(jù)總線;當(dāng)HBEN為高,12位字的高4位放至數(shù)據(jù)總線。這4位是右對齊的,因此占用低4位而高4位包含4個0。 串行輸出格式在AD7870/AD7875/AD7876上可以輸出串行數(shù)據(jù)。當(dāng)12/8/CLK輸入是0V或-5V時,DB10/SSTRB、DB9/SCLK和DB8/SDATA腳起串行功能。串行數(shù)據(jù)是一個16位的字,4個前導(dǎo)0,跟著是12位轉(zhuǎn)換的結(jié)果,最高有效位在前。數(shù)據(jù)同步于串行時鐘輸出(SCLK)由串行選通(SSTRB)

28、確定一幀。數(shù)據(jù)當(dāng)SSTRB輸出為低時,在串行時鐘由低變高時輸出而在時鐘的下降沿有效。SSTRB在CONVST后三個時鐘周期內(nèi)變低,且第一個串行數(shù)據(jù)位(第一個前導(dǎo)0)在SCLK的第一個下降沿有效。這三個串行線都是漏極開路并要求外部上拉電阻。串行時鐘輸出是以ADC時鐘源導(dǎo)出的,它可以是內(nèi)部的或外部的。對于字節(jié)和串行數(shù)據(jù),模式1的時序如圖12-25所示。 INT#在轉(zhuǎn)換結(jié)束后變低由CS#和RD#的第一個下降沿重置為高。在轉(zhuǎn)換結(jié)束后的第一次讀能訪問數(shù)據(jù)的低字節(jié)或高字節(jié)取決于HBEN的狀態(tài)。圖12-25同時顯示了非連續(xù)和連續(xù)的運行時鐘(虛線)。 模式2接口第二種接口模式由硬連CONVST#為低,轉(zhuǎn)換由當(dāng)

29、HBEN為低使CS#為低啟動的。采樣/保持放大器在CS#的下降沿進入保持方式。在此模式,BUSY#/INT#腳起B(yǎng)USY#功能(作為8086的READY線)。在轉(zhuǎn)換開始BUSY#變低并且在轉(zhuǎn)換期間保持為低,當(dāng)轉(zhuǎn)換完成返回高電平。它通常用作并行接口,使微處理器在轉(zhuǎn)換期間處在WAIT狀態(tài)。 圖12-26顯示12位并行數(shù)據(jù)輸出格式(12/8/CLK=+5V)模式2時序圖。在這種情況下,ADC的行為像慢速存儲器。這種接口的主要優(yōu)點是允許微處理器啟動轉(zhuǎn)換、等待,然后用單個讀指令讀數(shù)據(jù)。用戶不需要關(guān)心中斷服務(wù)或保證在轉(zhuǎn)換期間的延時。 字節(jié)和串行數(shù)據(jù)的模式2時序如圖12-27所示。對于讀兩字節(jié),低字節(jié)(DB

30、0DB7)必須先訪問,因為要啟動轉(zhuǎn)換,HBEN必須為低。對于第一次讀,ADC的行為像慢速存儲器。但第二次訪問數(shù)據(jù)的高字節(jié)是正常的讀。串行功能的操作在模式1和模式2是相同的,如圖12-27所示。 12.2.4 A/D轉(zhuǎn)換芯片與CPU的接口1. A/D轉(zhuǎn)換芯片與CPU接口要注意的問題(1) 啟動信號A/D轉(zhuǎn)換器要求的啟動信號一般有兩種形式: 電平啟動信號和脈沖啟動信號。有些A/D轉(zhuǎn)換芯片要求用電平作為啟動信號,整個轉(zhuǎn)換過程中都必須保證啟動信號有效,如果中途撤走啟動信號,就會停止轉(zhuǎn)換而得到錯誤結(jié)果。為此,CPU一般要通過并行接口來對A/D芯片發(fā)啟動信號,或者用D觸發(fā)器使啟動信號在A/D轉(zhuǎn)換期間保持在

31、有效電平。另外一些A/D轉(zhuǎn)換芯片要求用脈沖信號來啟動,對這種芯片,通常用CPU執(zhí)行輸出指令時所發(fā)出的片選信號和寫信號即可在片內(nèi)產(chǎn)生啟動脈沖,從而開始轉(zhuǎn)換。(2) 轉(zhuǎn)換結(jié)束與轉(zhuǎn)換數(shù)據(jù)的讀取A/D轉(zhuǎn)換結(jié)束時,A/D轉(zhuǎn)換芯片會輸出轉(zhuǎn)換結(jié)束信號,通知CPU讀取轉(zhuǎn)換數(shù)據(jù)。CPU一般可以采用以下四種方式和A/D轉(zhuǎn)換器進行聯(lián)絡(luò)來實現(xiàn)對轉(zhuǎn)換數(shù)據(jù)的讀取。第一種是程序查詢方式。這種方式的思想就是在啟動A/D轉(zhuǎn)換器工作之后,程序不斷地讀取A/D轉(zhuǎn)換結(jié)束信號,如果發(fā)現(xiàn)結(jié)束信號有效,則認(rèn)為完成一次轉(zhuǎn)換,因而用輸入指令讀取數(shù)據(jù)。 第二種是中斷方式。用這種方式時,把轉(zhuǎn)換結(jié)束信號作為中斷請求信號,送到中斷控制器(如8259)

32、的中斷請求輸入端。第三種是CPU等待方式。這種方式利用CPU的READY引腳的功能,設(shè)法在A/D轉(zhuǎn)換期間使READY處于低電平,以使CPU停止工作,轉(zhuǎn)換結(jié)束時,則使READY成為高電平,CPU讀取轉(zhuǎn)換數(shù)據(jù)。第四種是固定的延遲程序方式。用這種方式時,要預(yù)先精確地知道完成一次A/D轉(zhuǎn)換所需要的時間。這樣,CPU發(fā)出啟動命令之后,執(zhí)行一個固定的延遲程序,此程序執(zhí)行完時,A/D轉(zhuǎn)換也正好結(jié)束,于是CPU讀取數(shù)據(jù)。 如果CPU的轉(zhuǎn)換時間比較長,或者有幾件事情需要CPU處理,那么,用中斷方式效率比較高。但是,如果A/D轉(zhuǎn)換時間比較短,中斷方式就失去了優(yōu)越性,因為響應(yīng)中斷、保護現(xiàn)場、恢復(fù)現(xiàn)場、中斷返回這一系

33、列環(huán)節(jié)所花去的時間將和A/D轉(zhuǎn)換的時間相當(dāng)。此時可用上述的三種非中斷方式之一來實現(xiàn)轉(zhuǎn)換數(shù)據(jù)的讀取。 采用中斷方式時,程序設(shè)計非常簡單。主程序中,只要有一條輸出指令即可以啟動A/D轉(zhuǎn)換。假設(shè)A/D轉(zhuǎn)換器的端口號為PROTAD,則執(zhí)行指令:OUT PORTAD,AL后,A/D轉(zhuǎn)換器便開始轉(zhuǎn)換。在這條輸出指令中,寄存器AL預(yù)先放什么內(nèi)容是無關(guān)緊要的,執(zhí)行這條指令的目的是為了得到有效的片選信號和寫信號,使A/D轉(zhuǎn)換器啟動。 此后,便開始A/D轉(zhuǎn)換過程。轉(zhuǎn)換結(jié)束后,A/D芯片會輸出一個轉(zhuǎn)換結(jié)束信號,此信號產(chǎn)生中斷請求,CPU響應(yīng)中斷后,便轉(zhuǎn)去執(zhí)行中斷處理程序。中斷處理程序中最主要的指令是讀取轉(zhuǎn)換結(jié)果的輸

34、入指令:INAL,PORTAD這條指令在執(zhí)行時,使三態(tài)輸出門開啟,從而CPU獲得轉(zhuǎn)換數(shù)據(jù)。 2. 8位轉(zhuǎn)換器的接口當(dāng)A/D轉(zhuǎn)換芯片與CPU接口時,除了數(shù)據(jù)的輸入至CPU外,與通常的I/O接口一樣,還需要有控制信息和狀態(tài)信息,如圖12-28所示。在實際應(yīng)用時,A/D的模擬輸入端接至采樣/保持電路的輸出,如圖12-14中所示。但轉(zhuǎn)換的開始,要由CPU用軟件來控制(輸出一條指令);而轉(zhuǎn)換總是需要一定時間才能完成,故A/D轉(zhuǎn)換電路必須給出一個DONE/BUSY的狀態(tài)信息。 一個典型的8位A/D轉(zhuǎn)換的接口電路如圖12-29所示。其中,輸入輸出接口電路采用8212,顯然也可以采用8255A。程序如下:OR

35、G2000HSTART: LDBX,DATACONV: OUT37H,AL;啟動轉(zhuǎn)換TEST:INAL,66H;輸入狀態(tài)ANDAL,80H;檢測DONE標(biāo)志JZTEST;未完成,等待INAL,65H;輸入轉(zhuǎn)換后的數(shù)據(jù)MOVBX,AL;存入內(nèi)存RETORG3000HDATA:DS1;給輸入數(shù)據(jù)保留一個存儲單元END上述程序是用查詢方式與A/D交換信息,顯然也可以用中斷方式,用DONE信息作為中斷請求信號。若把ADC 0809接至TP801A單板機,其接線如圖12-30所示。 若要把8個模擬量輪流輸入至內(nèi)存緩沖區(qū),輸入在中斷服務(wù)程序中執(zhí)行。程序如下:;主程序START:MOVBX,DATA;設(shè)輸入

36、緩沖器指針MOVCH,8MOVCL,0STIMOVAL,CLOUTPADC,ALHALTLOOP:XORAL,ALINCCLMOVAL,CLCMPAL,8JZDONEOUTPADC,ALJMPLOOPDONE:HALT;中斷服務(wù)程序ORG0038HDWINTSEV 3. 10位A/D轉(zhuǎn)換接口當(dāng)A/D轉(zhuǎn)換的精度要求高時,就要求有10位、12位或更多位的A/D轉(zhuǎn)換芯片。如何把一個多于8位的A/D轉(zhuǎn)換芯片與8位的微型計算機接口呢?圖12-31是一個典型的10位A/D轉(zhuǎn)換的接口電路。其中,狀態(tài)信號和數(shù)據(jù)的高兩位,用了同一個輸入接口芯片8212,只要在程序上加以區(qū)分是不會混淆的。 其程序為:ORG200

37、0HADC:PUSHAXPUSHBXMOVBX,ADTAOUT37H,AL;啟動轉(zhuǎn)換TEST:INAL,66H;輸入狀態(tài)及高兩位數(shù)據(jù)ADDAL,80H;檢查D7=1? 但不影響D1和D0JNCTEST;轉(zhuǎn)換未完則等待MOV BX+1,AL;存入高位字節(jié)(兩位)INAL,65H;輸入低8位MOV BX,ALPOPBXPOPAXRETORG 3000HDATADS2;為輸入數(shù)據(jù)保留兩個存儲單元END 12.2.5 D/A和A/D轉(zhuǎn)換應(yīng)用舉例 1. D/A轉(zhuǎn)換舉例鋸齒波信號廣泛用于示波器的掃描電路,鋸齒波信號一般是利用阻容電路的充電來實現(xiàn)的,由于阻容充放電的過程是近似線性的,所以很難得到一個線性好的

38、波形,通過D/A轉(zhuǎn)換電路可以得到線性度相當(dāng)高的波形。圖12-32就是一個利用DAC 0832芯片實現(xiàn)鋸齒波信號的電路。對于圖12-32所示電路,執(zhí)行下面的程序時,就可以產(chǎn)生一個鋸齒波信號。MOVDX,PORTA;PORTA為D/A轉(zhuǎn)換器端口地址MOVAL,0FFH;初值為0FFHROTATE:INC ALOUTDX,AL;往D/A轉(zhuǎn)換器輸出數(shù)據(jù)JMP ROTATE 2. A/D轉(zhuǎn)換舉例有一數(shù)據(jù)采集電路如圖12-33所示,圖中ADC 0809通過8255A與8086 CPU連接,要求從模擬通道IN0開始轉(zhuǎn)換,連續(xù)采樣24個數(shù)據(jù);然后采樣下一個模擬通道IN1,同樣采樣24個數(shù)據(jù);直至IN7。采樣后的數(shù)據(jù)存放在數(shù)據(jù)段中2000H開始的數(shù)據(jù)區(qū)中。(1) 電路分析地址譯碼器74LS138的地址輸入端C、B、A分別接A4、A3、A2,G2A#與或門5輸出相連,或門5的輸入為M/IO#和A5,只有在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論