第11章at89s51單片機與da、ad轉換器的接口_第1頁
已閱讀1頁,還剩147頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1,第11章 AT89S51單片機與D/A、 A/D 轉換器的接口,1,,2,2,第11章 目錄11.1 AT89S51單片機與DAC的接口 11.1.1 D/A轉換器簡介 11.1.2 AT89S51單片機與8位D/A轉換器0832的接口設計 11.1.3 AT89S51單片機與12位D/A轉換器AD667的接口設計 11.1.4 AT89S51與串入的12位

2、D/A轉換器AD7543的接口設計11.2 AT89S51單片機與ADC的接口 11.2.1 A/D轉換器簡介 11.2.2 AT89S51與逐次比較型8位A/D轉換器ADC0809的接口 11.2.3 AT89S51與逐次比較型12位A/D轉換器AD1674的接口,3,11.2.4 AT89S51與雙積分型A/D轉換器MC14433的接口11.3 89S51單片機與V/F轉換器的接口 1

3、1.3.1 用V/F轉換器實現A/D轉換的原理 11.3.2 常用V/F轉換器LMX31簡介 11.3.3 V/F轉換器與MCS-51單片機接口 11.3.4 LM331應用舉例,4,內容概要在單片機測控系統(tǒng)中,被測量的溫度、壓力、流量、速度等非電物理量,須經傳感器先轉換模擬電信號,必須轉換成數字量后才能在單片機中用軟件進行處理。模擬量轉換成數字量的器件為A/D轉換器(ADC)。單片機處理完畢的數字

4、量,有時需轉換為模擬信號輸出。器件稱為D/A轉換器(DAC)。本章介紹典型的ADC、DAC集成電路芯片,以及與單片機的硬件接口設計及軟件設計。,5,11.1 AT89S51單片機與DAC的接口介紹單片機系統(tǒng)如何輸出模擬量。目前商品化DAC芯片較多,設計者只需要合理的選用合適的芯片,了解它們的功能、引腳外特性以及與單片機的接口設計方法即可。由于現在部分的單片機芯片中集成了D/A轉換器,位數一般在10位左右,且轉換速度也很快,所以單

5、片的DAC開始向高的位數和高轉換速度上轉變。低端的產品,如8位的D/A轉換器,開始面臨被淘汰的危險,但是在實驗室或涉及某些工業(yè)控制方面的應用,低,5,6,端的8位DAC以其優(yōu)異性價比還是具有相當大的應用空間的。11.1.1 D/A轉換器簡介1.概述購買和使用D/A轉換器時,要注意D/A轉換器選擇的幾個問題。(1)D/A轉換器的輸出形式有兩種輸出形式。一種是電壓輸出,即給D/A轉換器輸入的是數字量,而輸出為電壓。另一種是

6、電流輸出。,6,7,對電流輸出的D/A轉換器,如需要模擬電壓輸出,可在其輸出端加一個由運算放大器構成的I-V轉換電路,將電流輸出轉換為電壓輸出。(2)D/A轉換器與單片機的接口形式單片機與D/A轉換器的連接,早期多采用8位數字量并行傳輸的并行接口,現在除并行接口外,帶有串行口的D/A轉換器品種也不斷增多。除了通用的UART串行口外,目前較為流行的還有I2C串行口和SPI串行口等。所以在選擇單片D/A轉換器時,要考慮單片機與D/A轉

7、換器的接口形式。,7,8,2.主要技術指標指標很多,使用者最關心的幾個指標如下。(1)分辨率指單片機輸入給D/A轉換器的單位數字量的變化,所引起的模擬量輸出的變化,通常定義為輸出滿刻度值與2n之比(n為D/A轉換器的二進制位數)。習慣上用輸入數字量的二進制位數表示。位數越多,分辨率越高,即D/A轉換器對輸入量變化的敏感程度越高。例如,8位的D/A轉換器,若滿量程輸出為10V,根據分辨率定義,則分辨率為10V/2n,分辨率為

8、:,8,9,10V/256=39.1mV ,即輸入的二進制數最低位的變化可引起輸出的模擬電壓變化39.1mV,該值占滿量程的0.391%,常用符號1LSB表示。同理:10位D/A轉換1 LSB = 9.77mV = 0.1%滿量程12位D/A轉換1 LSB = 2.44mV = 0.024%滿量程16位D/A轉換1 LSB =

9、0;0.076mV = 0.00076%滿量程使用時,應根據對D/A轉換器分辨率的需要來選定D/A轉換器的位數。,9,10,(2)建立時間描述D/A轉換器轉換快慢的一個參數,用于表明轉換時間或轉換速度。其值為從輸入數字量到輸出達到終值誤差?(1/2)LSB時所需的時間。電流輸出的轉換時間較短,而電壓輸出的轉換器,由于要加上完成I-V轉換的運算放大器的延遲時間,因此轉換時間要長一些。快速D/A轉換器的轉換時

10、間可控制在1?s以下。,10,11,(3)轉換精度理想情況下,轉換精度與分辨率基本一致,位數越多精度越高。但由于電源電壓、基準電壓、電阻、制造工藝等各種因素存在著誤差。嚴格講,轉換精度與分辨率并不完全一致。只要位數相同,分辨率則相同,但相同位數的不同轉換器轉換精度會有所不同。例如,某種型號的8位DAC精度為?0.19%,而另一種型號的8位DAC精度為?0.05%。,11,12,11.1.2 AT89S51與8位D/A轉換器

11、0832的接口設計1.DAC0832芯片介紹(1)DAC0832的特性美國國家半導體公司的DAC0832芯片是具有兩個輸入數據寄存器的8位DAC,它能直接與AT89S51單片機連接,主要特性如下。① 分辨率為8位。② 電流輸出,建立時間為1?s。,12,13,③ 可雙緩沖輸入、單緩沖輸入或直接數字輸入。④ 單一電源供電(+5V~+15V)。⑤ 低功耗,20mW。(2)DAC0832的引腳及邏輯結構引腳如圖11-1

12、所示,DAC0832的邏輯結構如圖11-2所示。,13,14,14,圖11-1 DAC0832的引腳圖,15,15,圖11-2 DAC0832的邏輯結構,16,引腳功能:DI0~DI7:8位數字信號輸入端,與單片機的數據總線P0口相連,用于接收單片機送來的待轉換為模擬量的數字量,DI7為最高位。 :片選端,當 為低電平時,本芯片被選中。ILE:數據鎖存允許控制端,高電平有效。 :第一級輸入寄存器寫選

13、通控制,低電平有效。當 =0,ILE=1, =0時,待轉換的數據信號被鎖存到第一級8位輸入寄存器中。,16,,,17,:數據傳送控制,低電平有效。 :DAC寄存器寫選通控制端,低電平有效。當 =0, =0時,輸入寄存器中待轉換的數據傳入8位DAC寄存器中。IOUT1:D/A轉換器電流輸出1端,輸入數字量全為“1”時,IOUT1最大,輸

14、入數字量全為“0”時,IOUT1最小。IOUT2:D/A轉換器電流輸出2端,IOUT2 + IOUT1 = 常數。Rfb:外部反饋信號輸入端,內部已有反饋電阻Rfb,根據需要也可外接反饋電阻。VCC:電源輸入端,在+5V~+15V范圍內。,17,,,18,DGND:數字信號地。AGND:模擬信號地,最好與基準電壓共地。DAC0832內部電路如圖11-2所示。“8位輸入寄存器”用于存放

15、單片機送來的數字量,使輸入數字量得到緩沖和鎖存,由 加以控制;“8位DAC寄存器”用于存放待轉換的數字量,由 控制; “8位D/A轉換電路”受“8位DAC寄存器”輸出的數字量控制,能輸出和數字量成正比的模擬電流。因此,需外接I-V轉換的運算放大器電路,才能得到模擬輸出電壓。,18,19,2.AT89S51單片機與DAC0832的接口電路設計設計接口電路時,常用單緩沖方式或雙緩沖方式的單極性輸

16、出。(1)單緩沖方式指DAC0832內部的兩個數據緩沖器有一個處于直通方式,另一個處于受AT89S51單片機控制的鎖存方式。在實際應用中,如果只有一路模擬量輸出,或雖是多路模擬量輸出但并不要求多路輸出同步的情況下,可采用單緩沖方式。單緩沖方式的接口電路如圖11-3所示。,19,20,20,圖11-3 單緩沖方式下單片機與DAC0832的接口電路,21,圖11-3所示的是單極性模擬電壓輸出電路,由于DAC0832是8位(28=

17、256)的D/A轉換器,由基爾霍夫定律列出的方程組可解得0832輸出電壓vo與輸入數字量B的關系為 顯然,輸出的模擬電壓vo和輸入的數字量B以及基準電壓VREF成正比,且B為0時,vo也為0,輸入數字量為255時,vo為最大的絕對值輸出,且不會大于VREF。,21,,22,圖11-3中, 和 接地,故DAC0832的“8位DAC寄存器”(見圖11-2)工作于直通方式。“8位輸入寄存器”受

18、 和 端控制,而且 由譯碼器輸出端FEH送來(也可由P2口的某一條口線來控制)。因此,單片機執(zhí)行如下兩條指令就可在 和 上產生低電平信號,使DAC0832接收AT89S51送來的數字量。MOVR0,#0FEH;DAC端口地址FEH→R0MOVX@R0,A;單片機的 和譯碼器FEH輸出端有效,22,23,現舉例說明單緩沖方式下DAC0832的應用。【例11-1】 DAC083

19、2用作波形發(fā)生器。試根據圖11-3,分別寫出產生鋸齒波、三角波和矩形波的程序。在圖11-3中,運算放大器A輸出端Vout直接反饋到Rfb,故這種接線產生的模擬輸出電壓是單極性的。產生上述三種波形的參考程序如下。① 鋸齒波的產生 ORG2000HSTART:MOVR0,#0FEH;DAC地址FEH→ R0MOVA,#00H;數字量→A,23,24,LOOP:MOVX@R0,A ;數字量→D/A轉換器

20、 INCA ;數字量逐次加1SJMP LOOP當輸入數字量從0開始,逐次加1進行D/A轉換,模擬量與其成正比輸出。當A = FFH時,再加1則溢出清0,模擬輸出又為0,然后又重新重復上述過程,如此循環(huán),輸出的波形就是鋸齒波,如圖11-4所示。實際上,每一上升斜邊要分成256個小臺階,每個小臺階暫留時間為執(zhí)行后三條指令所需要的時間。因此 “INC A”指令后插入NOP指令或延時程

21、序,則可改變鋸齒波頻率。,24,25,25,圖11-4 DAC0832產生的鋸齒波輸出,26,② 三角波的產生。 ORG2000HSTART:MOVR0,#0FEHMOVA,#00HUP: MOVX @R0,A;產生三角波的上升邊INCAJNZUPDOWN:DECA ;A=0時減1為FFH, 產生三角波的下降邊,26,27,MOVX@R0,AJNZDOWN

22、SJMPUP輸出的三角波如圖11-5所示。 圖11-5 DAC0832產生的三角波輸出,27,28,③ 矩形波的產生 ORG2000HSTART:MOV R0,#0FEHLOOP:MOVA,#data1 ;#data1為上限電平對應的數字量MOVX@R0,A;置矩形波上限電平LCALL DELAY1;調

23、用高電平延時程序MOV A,#data2 ;#data2為下限電平對應的數字量MOVX@R0,A;置矩形波下限電平LCALL DELAY2;調用低電平延時程序SJMP LOOP;重復進行下一個周期,28,29,圖11-6 DAC0832產生的矩形波輸出輸出的矩形波如圖11-6所示。 DELAY1、DELAY2為兩個延時程序,分別決定輸出的矩形波高、低電平時的持續(xù)寬度。

24、矩形波頻率也可用延時方法改變。,29,30,(2)雙緩沖方式多路的D/A轉換要求同步輸出時,必須采用雙緩沖同步方式。此方式工作時,數字量的輸入鎖存和D/A轉換輸出是分兩步完成的。單片機必須通過 來鎖存待轉換的數字量,通過 來啟動D/A轉換(見圖11-2)。因此,雙緩沖方式下,DAC0832應該為單片機提供兩個I/O端口。AT89S51單片機和DAC0832在雙緩沖方式下的連接如圖11-7所示。,30

25、,31,31,圖11-7 單片機和兩片DAC0832的雙緩沖方式接口電路,32,由圖11-7可見,1#DAC0832因 和譯碼器FDH相連而占有FDH和FFH兩個I/O端口地址(由譯碼器的連接邏輯來決定),而2#DAC0832的兩個端口地址為FEH和FFH。其中,FDH和FEH分別為1#和2#DAC0832的數字量輸入控制端口地址,而FFH為動D/A轉換的端口地址。其余連接如圖11-7所示。若把圖11-7中DAC輸出

26、的模擬電壓Vx和Vy來控制X-Y繪圖儀,則應把Vx和Vy分別加到X-Y繪圖儀的X通道和Y通道,而X-Y繪圖儀由X、Y兩個方向的步進電機驅動,其中一個電機控制繪筆沿X方向運動;另一個電機控制繪筆沿Y方向運動。,32,33,因此對X-Y繪圖儀的控制有一基本要求:就是兩路模擬信號要同步輸出,使繪制的曲線光滑。如果不同步輸出,例如先輸出X通道的模擬電壓,再輸出Y通道的模擬電壓,則繪圖筆先向X方向移動,再向Y方向移動,此時繪制的曲線就是階梯狀的。

27、通過本例,也就不難理解DAC設置雙緩沖方式的目的所在。,33,34,【例11-2】設AT89S51內部RAM中有兩個長度為20的數據塊,其起始地址為分別為addr1和addr2,根據圖11-7,編寫能把addr1和addrr2中數據從1#和2#DAC0832同步輸出的程序。程序中addr1和addr2中的數據,即為繪圖儀所繪制曲線的x、y坐標點。由圖11-7可知,DAC0832各端口地址為:FDH:1#DAC0832數字量輸入控制

28、端口FEH:2#DAC0832數字量輸入控制端口FFH:1#和2#DAC0832啟動D/A轉換端口,34,35,首先使工作寄存器0區(qū)的R1指向addr1;1區(qū)的R1指向addr2;0區(qū)工作寄存器的R2存放數據塊長度;0區(qū)和1區(qū)工作寄存器區(qū)的R0指向DAC端口地址。程序如下: ORG2000Haddr1DATA 20H;定義存儲單元addr2 DATA 40H;定義存儲單元DTOUT:MOV

29、R1,#addr1;0區(qū)R1指向addr1MOVR2,#20;數據塊長度送0區(qū)R2SETBRS0 ;切換到工作寄存器1區(qū)MOVR1,#addr2;1區(qū)R1指向addr2CLRRS0;返回工作寄存器0區(qū)NEXT:MOVR0,#0FDH ;0區(qū)R0指向1#DAC數字量控制端口MOVA,@R1;addr1中數據送A,35,36,MOVX @R

30、0,A;addr1中數據送1#DACINCR1;修改addr1指針0區(qū)R1SETBRS0;轉入1區(qū)MOVR0,#0FEH;1區(qū)R0指向2#DAC0832數字量控制端口MOVA,@R1;addr2中數據送AMOVX @R0,A;addr2中數據送2#DAC0832INCR1;修改addr2指針1區(qū)R1INCR0;1區(qū)R0指向DAC的啟動D/A轉換端口MOVX

31、 @R0,A;啟動DAC進行轉換CLRRS0;返回0區(qū)DJNZR2,NEXT;若未完, 則跳轉NEXTLJMPDTOUT;若送完, 則循環(huán),36,37,3.DAC0832的雙極性的電壓輸出有些場合則要求DAC0832雙極性模擬電壓輸出,下面介紹如何實現。在雙極性電壓輸出的場合下,可以按照圖11-8所示接線。圖中,DAC0832的數字量由單片機送來,A1和A2均為運算放大器,vo通過2R電阻反

32、饋到運算放大器A2輸入端,G點為虛擬地,其他電路如圖11-8所示。由基爾霍夫定律列出的方程組可解得,37,,38,由上式知,當單片機輸出給DAC0832的數字量B≥128時,即數字量最高位b7為1 ,輸出的模擬電壓vo為正;當單片機輸出給DAC0832的數字量B<128時,即數字量最高位為0,則vo的輸出電壓為負。 圖11-8 雙極性DAC的接法,38,39,11.1.3 AT89S51與12位

33、D/A轉換器AD667的接口設計8位分辨率不夠時,可以采用高于8位分辨率的DAC,例如,10位、12位、14位、16位(例如AD669)的DAC。AD667是一種分辨率為12位的并行輸入、電壓輸出型D/A轉換器,建立時間≤3?s。輸入方式為雙緩沖輸入;輸出方式為電壓輸出,通過硬件編程可輸出+5V、+10V、?2.5V、?5V和?10V;內含高穩(wěn)定的基準電壓源,可方便地與4位、8位或16位微處理器接口;雙電源工作電壓為?12V~?15

34、V。,39,40,1.引腳介紹AD667為28腳雙列直插式封裝,圖11-9所示為雙列直插式封裝引腳圖,表11-1為其引腳說明。 圖11-9 AD667引腳圖,40,41,41,42,(1)內部功能結構圖11-10所示為AD667內部功能結構框圖。,42,圖11-10 AD667內部功能結構框圖,43,(2)應用特性① 模擬電壓輸出范圍的配置AD667通過片外引腳的不同電路連接,可獲

35、得不同的輸出電壓量程范圍。單極性工作時,可以獲得0~5V和0~10V的電壓。雙極性工作時,可獲得?2.5V、?5.5V和?10V的電壓。具體量程配置可由引腳1、2、3、9的不同連接實現,見表11-2。由于AD667內置的量程電阻與其他元器件具有熱跟蹤性能,所以AD667的增益和偏置漂移非常小。,43,44,44,45,② 單極性電壓輸出圖11-11為0~10V單極性電壓輸出電路原理圖。,45,圖11-11 0~10V單極性電壓

36、輸出的電路原理圖,46,在電路運行之前,為保證轉換精度,首先要進行電路調零和增益調節(jié)。 電路調零 數字輸入量全為“0”時,調節(jié)50k?電位器RP1,使其模擬電壓輸出端(VOUT)電壓為0.000V。在大多數情況下,并不需要調零,只要把腳4與腳5相連(接地)即可。增益調節(jié) 數字輸入量全為“1”時,調節(jié)100?電位器RP2 ,使其模擬電壓輸出為9.9976V,即滿量程的10.000V減去1LSB(約為2.44mV)所對應的模擬輸出量

37、。,46,47,③ 雙極性電壓輸出圖11-12為-5V~+5V雙極性電壓輸出的電路。在電路運行之前,為保證轉換精度,首先要進行偏置調節(jié)和增益調節(jié)。 偏置調節(jié) 數字輸入量全為“0”時,調節(jié)100?的電位器RP1 ,使其模擬電壓輸出端電壓為?5.000V。 增益調節(jié) 數字輸入量全為“1” ,調節(jié)電位器RP2 ,使其模擬輸出電壓值為4.9976V,即正滿量程電壓輸出5.000V減去1LSB(約為2.44mV)所對應的模擬輸出量。,

38、47,48,,48,圖11-12 ±5V雙極性電壓輸出電路原理圖,49,④ 內部/外部基準電壓源的使用AD667有內置低噪聲基準電源,其絕對精度和溫度系數都是通過激光修正,具有長期穩(wěn)定性。片內基準電源可提供片內D/A轉換器所需的基準電流,還可通過緩沖電路驅動外部電路,一般可向外部負載提供0.1mA的驅動電流。⑤ 接地與動態(tài)電容的接法AD667把模擬地AGND與電源地PGND分開,可以減少器件的低頻噪聲和增強高速性能

39、。把地回路分開的目的是為了盡量減少低電平信號路徑中的電流。,49,50,AGND是輸出放大器中的地端,應與系統(tǒng)中的模擬輸出電壓基準地直接相連,任何由輸出放大器驅動的負載都應該接在模擬地引腳上。電源地PGND可以與模擬電源的接地點就近連接。最后AGND與PGND在一點上進行連接,一般連接到電源地PGND上。另外,AD667的電源引腳到模擬地引腳間應加上適當的去耦電容。在輸出放大器反饋電阻兩端加一個20pF的小電容,可以明顯改善

40、輸出放大器的動態(tài)性能。,50,51,⑥ 數字輸入控制與數據代碼AD667的總線接口邏輯由4個獨立的可尋址鎖存器組成,其中有3個4位的輸入數據鎖存器(第一級鎖存器)和1個12位的DAC鎖存器(第二級鎖存器)。利用3個4位鎖存器可以直接從4位、8位或16位微處理器總線分次或一次加載12位數字量;一旦數字量被裝入12位的輸入數據鎖存器,就可以把12位數據傳入第二級的DAC鎖存器,這種雙緩沖結構可以避免產生錯誤的模擬輸出。4個鎖存器由4

41、個地址輸入A0~A3和 控制,所有的控制都是低電平有效,對應關系見表11-3。,51,52,52,53,所有鎖存器都是電平觸發(fā),也就是說,當對應的控制信號都有效時,鎖存器輸出跟蹤輸入數據;當任何一個控制信號無效時,數據就被鎖存。它允許一個以上的鎖存器被同時鎖存。建議任何未使用的數據和控制引腳最好與電源地相連,以改善抗噪聲干擾特性。AD667使用正邏輯的二進制輸入編碼,大于2.0V的輸入電壓表示邏輯“1”,而小于0.8V的

42、輸入電壓表示邏輯“0”。,53,54,單極性輸出時,輸入編碼采用直接二進制編碼,全“0”數據輸入000H產生零模擬輸出;全“1”數據輸入FFFH產生比滿量程少1LSB的模擬輸出。雙極性輸出時,輸入編碼采用偏移二進制編碼,數據輸入為000H時,產生負的滿量程輸出;數據輸入為FFFH時,產生比滿量程少1LSB的模擬輸出;數據輸入為800H時,模擬輸出為0。其中1LSB為最低位對應的模擬電壓。雙極性輸出時輸入與輸出關系如圖11-13所示,

43、輸入數字量N與輸出模擬電壓VOUT的關系為:,54,,55,式中,VR為輸出電壓量程。,55,圖11-13 雙極性輸出與輸入關系,56,⑦ 與單片機接口的數據格式AD667與單片機接口的數據格式為左對齊或右對齊的數據格式。左對齊數據格式為:右對齊數據格式為:,56,57,2.AD667與AT89S51單片機的接口圖11-14所示為AT89S51單片機與AD667的接口電路。,57,圖11-14 AD667與AT89

44、S51單片機的接口電路,58,單片機把AD667所占的3個端口地址視為外部數據存儲器的3個單元,對其進行選通,完成對AD667數據傳送鎖存及轉換的功能。假定低8位數據存20H單元,高4位數據存21H的低4位,D/A轉換的程序如下:MOVA,20HMOVDPTR,#7FFEHMOVX@DPTR,A;低8位進第一級鎖存器MOVA,21HMOVDPTR,#7FFDHMOVX@DPTR,A;高

45、4位進第一級鎖存器MOVDPTR,#7FFBHMOVX@DPTR,A ;啟動第二級鎖存器RET,58,59,11.1.4 AT89S51與串行輸入的12位D/A轉換器AD7543的接口設計1. AD7543簡介美國AD公司為異步串行口設計的12位價廉D/A轉換器。直接與AT89S51的串行口相連,結構如圖11-15所示。AD7543片內由12位串行輸入并行輸出移位寄存器(寄存器A)和12位DAC

46、輸入寄存器(寄存器B)組成。在選通信號的前沿或后沿(可選擇)定時把SRI引腳上的串行數據裝入寄存器A,一旦寄存器A裝滿,在加載脈沖的控制下,寄存器A的數據便裝入寄存器B中。,60,60,圖11-15 AD7543的片內結構,61,AD7543的引腳如圖11-16所示,功能如下:OUT1:AD7543的電流輸出引腳1。OUT2:AD7543的電流輸出引腳2。AGND:模擬地。STB1:寄存器A的選通控制信號。 :寄

47、存器B加載1輸入。當 和 為低電平時,寄存器A的內容送到寄存器B。SRI:單片機輸入到寄存器A的串行數據輸入引腳。 :寄存器B加載2輸入。,61,,,62,:寄存器A選通3輸入。STB4:寄存器A選通4輸入。DGND:數字地。 :寄存器B清除輸入,用于異步地將寄存器B復位至 000H。VDD:+5V電源。VREF:基準電壓輸入。Rfb:DAC反

48、饋輸入引腳。,62,,,63,63,圖11-16 AD7543的引腳,64,2. AD7543與AT89S51的接口接口電路如圖11-17所示,圖中只給出與D/A轉換有關的電路。,64,圖11-17 AD7543與AT89S51的接口電路,65,圖11-17中的單片機串行口直接與AD7543相連,串行口選用方式0,其TXD端移位脈沖的負跳變將RXD輸出的串行位數據移入AD7543,利用地址譯碼器的輸出信號產生 ,從而將AD754

49、3移位寄存器A中的內容移入到寄存器B中,并啟動D/A轉換。由于AD7543的12位數據是高至低逐位串行輸入的,而AT89S51的串行口方式0是低至高逐位串行輸出的,因,65,66,此在數據傳輸到AD7543之前必須重新裝配。下面是單片機的驅動程序,假設AD7543的端口地址為“addrH”,數據緩沖器單元地址為dbufh(高4位)和dbufl(低8位)。OUTDA:MOV A,#dbufh;取高4位數據ACALL A

50、SMB;調用裝配子程序MOVSBUF,A;串行口輸出MOV A,#dbufl;取低8位數據,66,67,ACALLASMB;調用裝配子程序MOVSBUF,A;串行口輸出MOVDPTR,#addrH;AD7543端口地址送數據指針MOVX@DPTR,A ;將AD7543寄存器A送寄存器BRETASMB:MOVR6,#00H;裝配子程序MOVR7,#

51、08HCLRC,67,68,AL0:RLCAXCHA,R6RRCAXCHA,R6DJNZR7,AL0XCHA,R6RET,68,69,11.2 AT89S51單片機與ADC的接口11.2.1 A/D轉換器簡介A/D轉換器把模擬量轉換成數字量,以便于單片機進行數據處理。隨著超大規(guī)模集成電路技術的飛速發(fā)展,A/D轉換器的新設計思想和制造技術層出不窮。為滿足各種不同的檢測

52、及控制任務的需要,大量結構不同、性能各異的A/D轉換芯片應運而生。,69,70,1.A/D轉換器概述目前單片的ADC芯片較多,對設計者來說,只需合理的選擇芯片即可。現在部分的單片機片內集成了A/D轉換器,在片內A/D轉換器不能滿足需要,還是需外擴。另外作為擴展A/D轉換器的基本方法,讀者還是應當掌握。盡管A/D轉換器的種類很多,但目前廣泛應用在單片機應用系統(tǒng)中的主要有逐次比較型轉換器和雙積分型轉換器,此外?-Δ式轉換器逐漸得到重

53、視和較為廣泛的應用。逐次比較型A/D轉換器,在精度、速度和價格上都適中,是最常用的A/D轉換器。,70,71,雙積分型A/D轉換器,具有精度高、抗干擾性好、價格低廉等優(yōu)點,與逐次比較型A/D轉換器相比,轉換速度較慢,近年來在單片機應用領域中也得到廣泛應用。 ? -?式ADC具有積分式與逐次比較型ADC的雙重優(yōu)點。它對工業(yè)現場的串模干擾具有較強的抑制能力,不亞于雙積分ADC,它比雙積分ADC有較高的轉換速度,與逐次比較型

54、ADC相比,有較高的信噪比,分辨率高,線性度好,不需要采樣保持電路。由于上述優(yōu)點,???式ADC得到了重視,已有多種???式A/D芯片可供用戶選用。,71,72,A/D轉換器按照輸出數字量的有效位數分為4位、8位、10位、12位、14位、16位并行輸出以及BCD碼輸出的 3位半、4位半、5位半等多種。目前,除并行輸出A/D轉換器外,隨著單片機串行擴展方式的日益增多,帶有同步SPI串行接口的A/D轉換器的使用也逐漸增多。串行輸出的A/

55、D轉換器具有占用端口線少、使用方便、接口簡單等優(yōu)點,因此,讀者要給予足夠重視。較為典型的串行A/D轉換器為美國TI公司的TLC549(8位)、TLC1549(10位)以及TLC1543(10位)和TLC2543(12位)。,72,73,單片機與串行A/D轉換器接口設計,涉及同步串行口SPI的內容,本章不做介紹,感興趣的讀者,請見第12章。本章僅介紹單片機與各種并行輸出A/D轉換器的接口設計。A/D轉換器按照轉換速度可大致分為超高速(

56、轉換時間≤1ns)、高速(轉換時間≤1?s)、中速(轉換時間≤1ms)、低速(轉換時間≤1s)等幾種不同轉換速度的芯片。為適應系統(tǒng)集成的需要,有些轉換器還將多路轉換開關、時鐘電路、基準電壓源、二–十進制譯碼器和轉換電路集成在一個芯片內,為用戶提供很多方便。,73,74,2.A/D轉換器的主要技術指標(1)轉換時間和轉換速率A/D完成一次轉換所需要的時間。轉換時間的倒數為轉換速率。(2)分辨率在A/D轉換器中,分辨率是衡量A/

57、D轉換器能夠分辨出輸入模擬量最小變化程度的技術指標。分辨率取決于A/D轉換器的位數,所以習慣上用輸出的二進制位數或BCD碼位數表示。例如,A/D轉換器AD1674的滿量程輸入電壓為5V,可輸出12位二進制數,即用212個數進行量化,,74,75,其分辨率為1LSB,也即5V/212=1.22mV,其分辨率為12位,或A/D轉換器能分辨出輸入電壓1.22mV的變化。又如,雙積分型輸出BCD 碼的A/D轉換器MC14433,其滿量程輸入

58、電壓為2V,其輸出最大的十進制數為1999,分辨率為三位半(BCD 碼),如果換算成二進制位數表示,其分辨率約為11位,因為1999最接近于211=2048。量化過程引起的誤差稱為量化誤差。是由于有限位數字量對模擬量進行量化而引起的誤差。理論上規(guī)定為一個單位分辨率的-1/2 - +1/2LSB ,提高A/D位數既可以提高分辨率,又能夠減少量化誤差。,75,76,(3)轉換精度A/D轉換器的轉換精度定義為一個實際A/D轉換器與一個

59、理想A/D轉換器在量化值上的差值,可用絕對誤差或相對誤差表示。11.2.2 AT89S51與逐次比較型8位A/D轉換器ADC0809的接口1.ADC0809引腳及功能逐次比較型8路模擬輸入、8位數字量輸出的A/D轉換器,其引腳如圖11-18所示。,76,77,77,圖11-18 ADC0809的引腳圖,78,共28引腳,雙列直插式封裝。引腳功能如下: IN0~IN7:8路模擬信號輸入端。 D0~D7:轉換完畢的8

60、位數字量輸出端。 A、B、C與ALE:控制8路模擬輸入通道的切換。A、B、C分別與單片機的三條地址線相連,三位編碼對應8個通道地址端口。C、B、A = 000~111分別對應IN0~IN7通道的地址。各路模擬輸入之間切換由軟件改變C、B、A引腳的編碼來實現。,78,79,OE、START、CLK:OE為輸出允許端,START為啟動信號輸入端,CLK為時鐘信號輸入端。VR(+)、VR(?):基準電壓輸入端。2.A

61、DC0809結構及轉換原理結構如圖11-19所示。采用逐次比較法完成A/D轉換,單一的+5V電源供電。片內帶有鎖存功能的8選1模擬開關,由C、B、A的編碼來決定所選的通道。完成一次轉換需100?s左右(轉換時間與CLK腳的時鐘頻率有關),具有輸出TTL三態(tài)鎖存緩沖器,可直接連到單片機數據總線上。通過適當的外接電路,ADC0809可對0~5V的模擬信號進行轉換。,79,80,80,圖11-19 ADC0809結構框圖,81,3.AT

62、89S51單片機與ADC0809的接口先了解單片機如何控制ADC開始轉換,如何得知轉換結束以及如何讀入轉換結果的問題。控制ADC0809過程如下:先用指令選擇ADC0809的一個模擬輸入通道,當執(zhí)行“MOVX @DPTR,A”時,單片機的 信號有效,從而產生一個啟動脈沖。信號給ADC0809的START腳,開始對選中通道轉換。當轉換結束后,ADC0809發(fā)出轉換結束EOC(高電平)信號,該信號可供單片機查詢,也

63、可反相后作為向單片機發(fā)出的中斷請求信號。,81,82,當執(zhí)行指令“MOVX A,@DPTR”時,單片機發(fā)出讀控制 信號,通過邏輯電路控制OE端為高電平,把轉換完畢的數字量讀入到單片機的累加器A中。單片機讀取ADC的轉換結果時,可采用查詢和中斷控制兩種方式。查詢方式是在單片機把啟動信號送到ADC之后,執(zhí)行其他程序,同時對ADC0809的EOC腳不斷進行檢測,以查詢ADC變換是否已經結束,如查詢到變換已經結束,則讀入

64、轉換完畢的數據。,82,83,中斷控制方式是在啟動信號送到ADC之后,單片機執(zhí)行其他程序。ADC0809轉換結束并向單片機發(fā)出中斷請求信號時,單片機響應此中斷請求,進入中斷服務程序,讀入轉換完畢的數據。中斷控制方式效率高,所以特別適合于轉換時間較長的ADC。(1)查詢方式ADC0809與AT89S51的查詢式接口如圖11-20所示。,83,84,84,圖11-20 ADC0809與AT89S51查詢式接口,85,圖11-

65、20所示的基準電壓是提供給A/D轉換器在轉換時所需要的基準電壓,這是保證轉換精度的基本條件?;鶞孰妷阂獑为氂酶呔确€(wěn)壓電源供給,其電壓的變化要小于1LSB。否則當被變換的輸入電壓不變,而基準電壓的變化大于1LSB,也會引起A/D轉換器輸出的數字量變化。由于ADC0809片內無時鐘,可利用單片機提供的地址鎖存允許信號ALE經D觸發(fā)器二分頻后獲得,ALE引腳的頻率是AT89S51單片機時鐘頻率的1/6(但要注意,每當訪問外部數據存儲器時

66、,將少一個ALE脈沖)。如果單片機時鐘頻率采用6MHz,則ALE引腳的輸出頻率為1MHz,,85,86,再二分頻后為500kHz,符合ADC0809對時鐘頻率的要求。當然,也可采用獨立的時鐘源輸出,直接加到ADC的CLK腳。由于ADC0809具有輸出三態(tài)鎖存器,其8位數據輸出引腳D0~D7可直接與單片機的P0口相連。地址譯碼引腳C、B、A分別與地址總線的低三位A2、A1、A0相連,以選通IN0~IN7中的一個通道。,86,87,在啟

67、動A/D轉換時,由單片機的寫信號 和P2.7控制ADC的地址鎖存和轉換啟動,由于ALE和START連在一起,因此ADC0809在鎖存通道地址的同時,啟動并進行轉換。在讀取轉換結果時,用低電平的讀信號 和P2.7引腳經一級“或非門”后產生的正脈沖作為OE信號,用來打開三態(tài)輸出鎖存器。下面的程序是采用軟件延時的方式,分別對8路模擬信號輪流采樣一次,并依次把結果轉儲到數據存儲區(qū)的轉換程序。,87,88,MAIN:MOV

68、R1,#data;置數據區(qū)首地址MOVDPTR,#7FF8H;端口地址送DPTR, ;P2.7=0, 且指向通道IN0MOVR7,#08H;置通道個數LOOP:MOVX @DPTR,A;啟動A/D轉換MOVR6,#0AH;軟件延時, 等待轉換結束DELAY:NOPNOPNOPDJNZR6,DELAYMOVX A,@DPTR;讀取轉換結果,88,89

69、,MOV@R1,A;存儲轉換結果INCDPTR;指向下一個通道INCR1;修改數據區(qū)指針DJNZR7,LOOP;8個通道全采樣完;否?未完則繼續(xù)…………,89,90,(2)中斷方式ADC0809與AT89S51單片機的中斷方式接口電路只需要將圖11-20所示的EOC引腳經過一“反門”連接到AT89S51單片機的外中斷輸入引腳 即可。采用中斷方式可大大節(jié)省單片機的時間

溫馨提示

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

評論

0/150

提交評論