《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第9章 80C51單片機(jī)與DAC、ADC接口芯片的設(shè)計(jì)_第1頁(yè)
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第9章 80C51單片機(jī)與DAC、ADC接口芯片的設(shè)計(jì)_第2頁(yè)
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第9章 80C51單片機(jī)與DAC、ADC接口芯片的設(shè)計(jì)_第3頁(yè)
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第9章 80C51單片機(jī)與DAC、ADC接口芯片的設(shè)計(jì)_第4頁(yè)
《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真》-第9章 80C51單片機(jī)與DAC、ADC接口芯片的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩108頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

9.1單片機(jī)與DAC0832的接口9.1.1D/A轉(zhuǎn)換器概述9.1.2單片機(jī)與8位DAC0832的接口9.1.3單片機(jī)與DAC0832接口的應(yīng)用設(shè)計(jì)9.2單片機(jī)與ADC0809的接口9.2.1A/D轉(zhuǎn)換器概述9.2.2與8位逐次比較型ADCADC0809的接口9.2.3單片機(jī)控制ADC0809的輸入采集設(shè)計(jì)9.3單片機(jī)與串行ADC0832的接口在單片機(jī)測(cè)控系統(tǒng)中,由于單片機(jī)只能處理數(shù)字量,對(duì)于非電量如溫度、壓力、流量、速度等非電物理量,必須經(jīng)傳感器先轉(zhuǎn)換成模擬電信號(hào)(電壓或電流),然后再將模擬電信號(hào)轉(zhuǎn)換成數(shù)字量后,送單片機(jī)處理。實(shí)現(xiàn)模數(shù)轉(zhuǎn)化的器件稱為ADC(A/D轉(zhuǎn)換器)。單片機(jī)實(shí)現(xiàn)控制算法處理后,常常需要對(duì)執(zhí)行機(jī)構(gòu)進(jìn)行輸出控制,數(shù)字量需要轉(zhuǎn)換為模擬量輸出。實(shí)現(xiàn)數(shù)模轉(zhuǎn)換的器件稱為DAC(D/A轉(zhuǎn)換器)。本章介紹典型的ADC、DAC芯片與80C51單片機(jī)的接口設(shè)計(jì)。29.1單片機(jī)與DAC0832的接口

由于應(yīng)用場(chǎng)合和控制對(duì)象不同,單片機(jī)輸出控制可以分為以下幾類:模擬量控制、開(kāi)關(guān)量控制、電機(jī)控制等。單片機(jī)開(kāi)關(guān)量控制在第4章已經(jīng)介紹,電機(jī)控制將在第12章介紹,本章介紹模擬量的控制輸出,采用D/A轉(zhuǎn)換設(shè)計(jì)來(lái)實(shí)現(xiàn)。39.1.1D/A轉(zhuǎn)換器概述D/A轉(zhuǎn)換器性能各異,品種很多。在選購(gòu)和使用時(shí),首先要了解DAC分類,考慮DAC輸入數(shù)字量的位數(shù)、輸入碼型、輸出模擬量的形式、與單片機(jī)的接口形式等,然后進(jìn)一步了解DAC主要性能指標(biāo)以及與單片機(jī)的接口設(shè)計(jì)。

1.D/A轉(zhuǎn)換的分類D/A轉(zhuǎn)換器從輸入數(shù)字量的位數(shù)分,主要有8位、10位、12位和16位等;從輸入的碼型分,主要有二進(jìn)制和BCD碼;從D/A轉(zhuǎn)換器與單片機(jī)的接口形式分,主要有并行接口和串行接口,其中,串行接口多采用SPI;從輸出模擬量形式分主要有電流輸出和電壓輸出,其中,電壓輸出型又有單極性和雙極性,電流輸出型的DAC在輸出端加一個(gè)運(yùn)算放大器構(gòu)成I-V轉(zhuǎn)換電路,可轉(zhuǎn)換為電壓輸出;從與單片機(jī)的輸入接口分,有帶輸入鎖存的和不帶輸入鎖存的。2.D/A轉(zhuǎn)換器的主要性能指標(biāo)

(1)分辨率(Resolution)分辨率指DAC輸入單位數(shù)字量引起的最小輸出模擬增量,定義為輸出滿刻度值與2n-1之比(n為DAC的二進(jìn)制位數(shù)),習(xí)慣上用輸入數(shù)字量的二進(jìn)制位數(shù)n表示,n越大,DAC輸出對(duì)輸入變化的敏感程度越高,分辨率越高。也可以用最小輸出電壓(最低有效位1即1LSB對(duì)應(yīng)的輸出電壓)與最大輸出5電壓即滿量程之比,用符號(hào)1LSB表示。例如8位DAC,滿量程輸出5V,分辨率為5V/(28-1)=5V/255

=

19.6mV,1LSB

=0.0039。選用DAC時(shí),主要根據(jù)DAC分辨率的需要選擇位數(shù)。(2)轉(zhuǎn)換精度(ConversionAccuracy)轉(zhuǎn)換精度是指滿量程時(shí),DAC實(shí)際模擬輸出值和理論值的接近程度。如滿量程10V輸出9.99~10.01V,則精度為10mV。(3)建立時(shí)間建立時(shí)間是指描述DAC轉(zhuǎn)換速度的參數(shù),即從輸入數(shù)字量到輸出模擬量(終值誤差±1/2LSB)時(shí)所需時(shí)間。電流輸出型6DAC轉(zhuǎn)換時(shí)間較短,電壓輸出時(shí)需加I-V變換,建立時(shí)間稍長(zhǎng)。DAC建立時(shí)間較快的可在1us以下。(4)線性度線性度(Linearity)指DAC的實(shí)際轉(zhuǎn)換特性曲線和理想直線之間的最大偏移差。(5)偏移量誤差偏移量誤差(OffsetError)指輸入數(shù)字量為零時(shí),輸出模擬量對(duì)零的偏移值。73.單處機(jī)與DAC的連接(1)數(shù)據(jù)線的連接DAC與單片機(jī)數(shù)據(jù)線連接要考慮兩個(gè)問(wèn)題:一是DAC位數(shù),當(dāng)高于8位的DAC與8位數(shù)據(jù)總線80C51單片機(jī)連接時(shí),單片機(jī)數(shù)據(jù)線需要分時(shí)輸出;二是DAC有無(wú)輸入鎖存器的問(wèn)題,若DAC內(nèi)部無(wú)輸入鎖存器時(shí),必須增設(shè)鎖存器或I/O接口。(2)地址線的連接DAC一般只有片選信號(hào),無(wú)地址線。一般需要將單片機(jī)地址線通過(guò)全譯碼或部分譯碼后,控制DAC片選信號(hào),也可由單片機(jī)某一位I/O線來(lái)控制DAC片選信號(hào)。(3)控制線的連接DAC有片選信號(hào)、寫信號(hào)和啟動(dòng)轉(zhuǎn)換信號(hào)等控制信號(hào),可以由單片機(jī)的I/O線或譯碼器提供。9.1.280C51與8位DAC0832的接口設(shè)計(jì)DAC0832是美國(guó)NationalSemiconductor公司生產(chǎn)的一種電流型8位DAC,該系列產(chǎn)品包括DAC0830、DAC0831、DAC0832,管腳完全兼容,均為20腳雙插直列式封裝。DAC1208和DAC1230系列均為美國(guó)NationalSemiconductor公司的12位分辨率產(chǎn)品。1.DAC0832的特性(1)DAC0832是8位DAC,當(dāng)滿量程輸出5V時(shí),分辨率為19.6mV。(2)輸出模擬量為電流。(3)建立時(shí)間為1us。10(4)單一電源供電,VCC輸入電壓范圍為+5V~+15V;低功耗,功耗為20mW。

(5)可工作在直通輸入、單緩沖輸入或雙緩沖輸入。

2.DAC0832內(nèi)部結(jié)構(gòu)

DAC0832數(shù)字輸入端具有兩級(jí)輸入數(shù)據(jù)寄存器,能直接與80C51單片機(jī)連接,實(shí)現(xiàn)雙緩沖、單緩沖或直通方式輸入接口,它的內(nèi)部結(jié)構(gòu)如圖9-1所示。12圖9-1DAC0832內(nèi)部結(jié)構(gòu)13圖9-2DAC0832的引腳3.DAC0832的引腳DAC0832采用雙列直插式封裝,有20只引腳,如圖9-2所示。其中,與單片機(jī)連接的有8位數(shù)字線和5只控制引腳,與外設(shè)連接的為3只輸出引腳,還有4只與電源相關(guān)。各引腳功能如下。(1)數(shù)字量輸入引腳DI0~DI7:8位數(shù)字量輸入端,接單片機(jī)輸出數(shù)字量。(2)控制引腳ILE:數(shù)據(jù)輸入鎖存允許控制線,高電平有效。:片選信號(hào)輸入線,低電平有效。:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖有效。:DAC寄存器寫選通輸入線,負(fù)脈沖有效。:數(shù)據(jù)傳送控制信號(hào)輸入線,低電平有效。

14

當(dāng)ILE、、同時(shí)有效時(shí),第一級(jí)8位輸入寄存器被選通。待轉(zhuǎn)換的輸入數(shù)字量被鎖存到第一級(jí)8位輸入寄存器中。當(dāng)、同時(shí)有效時(shí),第一級(jí)輸入寄存器中待轉(zhuǎn)換數(shù)字量進(jìn)入第二級(jí)8位DAC寄存器中。(3)模擬量輸出①IOUT1:模擬電流輸出線1,當(dāng)8位DAC寄存器為全1時(shí),IOUT1最大。8位DAC寄存器為全0時(shí),IOUT1最小。②IOUT2:模擬電流輸出線2,IOUT2+IOUT1=常數(shù);采用單極性輸出時(shí),IOUT2常常接地。③Rfb:片內(nèi)反饋電阻引出線,反饋電阻制作在芯片內(nèi)部,用作外接的I-V轉(zhuǎn)換運(yùn)算放大器的反饋電阻,改變Rfb外接電阻可調(diào)轉(zhuǎn)換滿量程精度。(4)電源與地①VREF:基準(zhǔn)電壓輸入線。電壓范圍為-10V~+10V。②VCC:工作電源輸入端,可接+5V~+15V電源。③AGND:模擬地,最好與基準(zhǔn)電壓供地。④DGND:數(shù)字地。4.DAC0832輸出電壓與輸入數(shù)字量的關(guān)系DAC0832片內(nèi)8位D/A轉(zhuǎn)換電路由倒T型R-2R電阻網(wǎng)絡(luò)、8個(gè)模擬開(kāi)關(guān)和參考電壓VREF等部分組成,如圖9-3所示。由倒T型R-2R電阻網(wǎng)絡(luò)分析計(jì)算,可推理得到DAC0832輸出電流Iout1與輸入8位二進(jìn)制數(shù)的轉(zhuǎn)換表達(dá)式為:因此,DAC0832輸出電流Iout1和輸入二進(jìn)制數(shù)字成線性關(guān)系。DAC0832是電流輸出型DAC,在其輸出端加一個(gè)由運(yùn)算放大器構(gòu)成的I-V轉(zhuǎn)換電路,將電流輸出轉(zhuǎn)換為電壓輸出。則運(yùn)算放大器輸出的模擬量V0為:在電路內(nèi)部,Rfb與R相等,上式進(jìn)一步簡(jiǎn)化??梢?jiàn),DAC0832輸出的模擬量與輸入數(shù)字量成正比,實(shí)現(xiàn)了從數(shù)字量到模擬量的轉(zhuǎn)換。圖9-3DAC0832片內(nèi)8位D/A轉(zhuǎn)換電路5.DAC0832的工作方式單片機(jī)控制DAC0832芯片的接口方式有三種:直通方式、單緩沖方式和雙緩沖方式。(1)直通方式當(dāng)、、、直接接地,ILE接電源,即所有控制信號(hào)均有效,DAC0832工作于直通方式,不受單片機(jī)控制,此時(shí),8位輸入寄存器和8位DAC寄存器都直接處于導(dǎo)通狀態(tài),DI0~DI7上外接的8位數(shù)字量直接進(jìn)行D/A轉(zhuǎn)換,從輸出端得到轉(zhuǎn)換的模擬量。(2)單緩沖方式當(dāng)?shù)谝患?jí)輸入寄存器和第二級(jí)DAC寄存器中的一個(gè)處于直通狀態(tài),另一個(gè)處于受單片機(jī)控制的狀態(tài),或者兩個(gè)被控制同時(shí)導(dǎo)通,DAC0832就工作于單緩沖方式。單緩沖連接電路如圖9-4所示,只要數(shù)據(jù)寫入8位數(shù)據(jù)輸入寄存器,就開(kāi)始轉(zhuǎn)換,轉(zhuǎn)換結(jié)果通過(guò)輸出端輸出。圖9-4DAC0832與單片機(jī)的單緩沖方式連接(3)雙緩沖方式當(dāng)8位輸入寄存器和8位DAC寄存器分時(shí)控制導(dǎo)通時(shí),DAC0832工作于雙緩沖方式,雙緩沖方式適宜多個(gè)DAC0832同時(shí)輸出的場(chǎng)合,例如,分別控制各個(gè)DAC0832數(shù)據(jù)輸入寄存器導(dǎo)通并接收數(shù)據(jù),再控制各個(gè)DAC0832的8位DAC寄存器同時(shí)選通,數(shù)字量從8位輸入寄存器同時(shí)傳輸?shù)紻AC寄存器,可同時(shí)啟動(dòng)轉(zhuǎn)換,輸出多路模擬信號(hào)。雙緩沖連接電路如圖9-5所示。圖9-5DAC0832與單片機(jī)的雙緩沖方式連接6.DAC0832的用途

DAC0832主要用作單極型電壓輸出和雙極型電壓輸出。

(1)DAC0832作為單極性電壓輸出(0~5V)

DAC0832作為單極性電壓輸出電路如圖9-6所示。

Vout=-(D×VREF)/256

D=b7*2^7+b6*2^6+…+b0*2^0

上式中,D為輸入數(shù)字量的十進(jìn)制值。運(yùn)放的輸出電壓與參考電壓VREF是反極性。圖9-6DAC0832作為單極性電壓輸出電路例如,設(shè)VREF=-5V,當(dāng)D=FFH=255時(shí),這是最大的輸出電壓。若D=01H=1時(shí),對(duì)應(yīng)的輸出電壓最小。圖9-7DAC0832作為雙極性電壓輸出電路

(2)DAC作為雙極性電壓輸出(-5~+5V)DAC0832作為雙極性電壓輸出電路如圖9-7所示。由電路列方程:I1+I2+I3=0,其中,I1=Va/7.5,I2=Vout/15,I3=VREF/15,Va=-D×VREF/256則有:Vout=(D-128)*VREF/128可見(jiàn),當(dāng)VREF=5V,D從0到255變化,輸出電壓變化范圍是:-5~+5v。9.1.3單片機(jī)與DAC0832接口的應(yīng)用設(shè)計(jì)

DAC0832在實(shí)際應(yīng)用中經(jīng)常作為波形發(fā)生器,利用它產(chǎn)生各種波形。產(chǎn)生波形的原理利用了DAC輸出電壓模擬量與輸入數(shù)字量成正比的特點(diǎn),由單片機(jī)向DAC0832送出隨時(shí)間呈一定規(guī)律變化的數(shù)字量,則DAC0832轉(zhuǎn)換器輸出隨時(shí)間按一定規(guī)律變化的電流量,再經(jīng)過(guò)運(yùn)算放大器轉(zhuǎn)換成相應(yīng)的電壓波形。27【例9-1】用DAC0832產(chǎn)生鋸齒波。單片機(jī)與DAC0832以單緩沖方式連接,接口電路如圖9-8所示,單片機(jī)采用線譯碼方式,P2.0接DAC0832片選端,由此可確定一組DAC0832的接口地址為FEFFH。將單片機(jī)寫信號(hào)P3.6接端,數(shù)據(jù)總線P0直接連接DAC0832數(shù)據(jù)輸入端,可直接控制數(shù)據(jù)輸出,當(dāng)向端口地址送數(shù)時(shí),P2.0腳為低,單片機(jī)信號(hào)有效,數(shù)字量通過(guò)P0口送入DAC0832,并轉(zhuǎn)換輸出。DAC0832是電流輸出型DAC,加一運(yùn)算放大器741構(gòu)成I-V轉(zhuǎn)換電路,將電流輸出轉(zhuǎn)換為電壓輸出。電路中用虛擬直流電壓表測(cè)量經(jīng)運(yùn)放741經(jīng)過(guò)I-V轉(zhuǎn)換后的電壓值,觀察電壓變化。運(yùn)行后,看到虛擬直流電壓表顯示輸出電壓在0V~5V(參考電壓VREF為-5V)。28電路中同時(shí)用虛擬示波器觀察鋸齒波形,仿真運(yùn)行時(shí),將彈出虛擬示波器,調(diào)試示波器旋鈕,觀察波形輸出。當(dāng)關(guān)閉虛擬示波器后,如需再啟用示波器,可點(diǎn)擊鼠標(biāo)右鍵,選擇“Oscilloscope”,DAC0832輸出0V~5V鋸齒波形如圖9-9所示。圖9-8單片機(jī)控制DAC0832產(chǎn)生波形圖9-9單片機(jī)控制DAC0832產(chǎn)生鋸齒波參考程序如下:P0832.c#include<reg51.h>#include<absacc.h>//定義絕對(duì)地址訪問(wèn)#defineuintunsignedint#defineDAC0832XBYTE[0xFEFF]voidmain(void){uinti;while(1) {for(i=0;i<0x100;i++) {DAC0832=i;} }}圖9-10單片機(jī)控制DAC0832產(chǎn)生鋸齒波【例9-2】DAC0832工作在單緩沖方式,產(chǎn)生三角波。單片機(jī)與DAC0832接口電路如圖9-8所示,DAC0832輸出0V~5V三角波形如圖9-10所示。參考C程序如下:#include<absacc.h>//絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineDAC0832XBYTE[0xFEFF]voidmain(){uchari;while(1){ for(i=0;i<0xff;i++) {DAC0832=i;} for(i=0xff;i>0;i--) {DAC0832=i;}}}圖9-11單片機(jī)控制DAC0832產(chǎn)生鋸齒波【例9-3】DAC0832工作在單緩沖方式,產(chǎn)生方波。單片機(jī)與DAC0832接口電路如圖9-8所示,DAC0832輸出0V和5V方波如圖9-11所示。參考程序如下:p0832s.c#include<absacc.h>//絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineDAC0832XBYTE[0xFEFF]voiddelay(void);voidmain(){ uchari; while(1) {DAC0832=0;//輸出低電平 delay();//延時(shí) DAC0832=0xff;//輸出高電平 delay();//延時(shí) }}voiddelay()//延時(shí)函數(shù){ uchari; for(i=0;i<0xff;i++){;}}圖9-12DAC0832輸出正弦波【例9-4】DAC0832工作在單緩沖方式,產(chǎn)生正弦波。單片機(jī)與DAC0832接口電路如圖9-8所示,DAC0832輸出正弦波如圖9-12所示。參考程序如下。p0832sin.c#include<absacc.h>//絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineDAC0832XBYTE[0xFEFF]ucharcodeSINBUF[256]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c};voidmain(){ uchari; while(1) { for(i=0;i<=0xff;i++) DAC0832=SINBUF[i]; }}【例9-5】單片機(jī)與DAC0832以雙緩沖方式連接,編程實(shí)現(xiàn)2路DAC0832分時(shí)傳送數(shù)據(jù),同時(shí)啟動(dòng)轉(zhuǎn)換并同步輸出結(jié)果,分別產(chǎn)生三角波和鋸齒波,接口電路如圖9-13所示。單片機(jī)采用線譯碼方式選通2片DAC0832,單片機(jī)P2.5引腳連接DAC0832(U1)片選端,P2.6接DAC0832(U4)片選端,P2.7接DAC0832(U1)和DAC0832(U4)的引腳,將單片機(jī)寫信號(hào)(P3.6)連接2片DAC0832的和,單片機(jī)數(shù)據(jù)總線P0直接連接2片DAC0832數(shù)據(jù)輸入端,由此可確定,轉(zhuǎn)換數(shù)據(jù)寫入DAC0832(U1)輸入寄存器的地址為DFFFH,轉(zhuǎn)換數(shù)據(jù)寫入DAC0832(U4)輸入寄存器的地址為BFFFH,同時(shí)啟動(dòng)DAC0832(U1)和DAC0832(U4)轉(zhuǎn)換寄存器的地址為7FFFH。程序設(shè)計(jì)思路:?jiǎn)纹瑱C(jī)首先延時(shí)500ms后,向DAC0832(U1)的DFFFH地址送產(chǎn)生三角波數(shù)據(jù),向DAC0832(U4)的BFFFH地址送產(chǎn)生鋸齒波數(shù)據(jù),向7FFFH地址送任意數(shù)據(jù)則同時(shí)啟動(dòng)2片DAC0832開(kāi)始轉(zhuǎn)換。2片DAC0832分別加一運(yùn)算放大器741構(gòu)成I-V轉(zhuǎn)換電路,將電流輸出轉(zhuǎn)換為電壓輸出。仿真結(jié)果觀測(cè)如下:(1)電路中使用2個(gè)虛擬直流電壓表,測(cè)量D/A轉(zhuǎn)換電流經(jīng)過(guò)I-V轉(zhuǎn)換電路(運(yùn)放741)后的電壓值,觀察電壓變化。仿真運(yùn)行后,看到2個(gè)虛擬直流電壓表在三角波上升期間與鋸齒波電壓變化一致。(2)為了進(jìn)一步觀察2片DAC0832啟動(dòng)轉(zhuǎn)換過(guò)程,在Proteus仿真電路中添加了靜態(tài)圖表,說(shuō)明如下:電路中,在運(yùn)算放大器741(U3)輸出端被測(cè)點(diǎn)加電壓探針X1;在運(yùn)算放大器741(U5)輸出端被測(cè)點(diǎn)加電壓探針Y1。在Proteus工具箱中,選擇ANALOGUE模擬圖形,在原理圖中拖出圖表框。在圖表框中添加X(jué)1和Y1探針。雙擊圖表框,將Stoptime改為70(秒),以顯示1個(gè)以上周期的波形。按空格鍵或選擇菜單Graph→SimulateGraph命令,則生成波形,靜態(tài)圖表如圖9-14所示。由靜態(tài)圖表可見(jiàn),在經(jīng)過(guò)共同的延時(shí)時(shí)間后,2片DAC0832同步輸出三角波和鋸齒波,在三角波上升階段,2輸出波形完全重合,在三角波過(guò)頂點(diǎn)下降時(shí),鋸齒波上升。圖9-13DAC0832雙緩沖方式同步產(chǎn)生三角波及鋸齒波圖9-14DAC0832雙緩沖產(chǎn)生三角波及鋸齒波靜態(tài)圖表參考C程序如下:#include<absacc.h>#defineucharunsignedchar#defineDAC0832_1XBYTE[0xDFFF]#defineDAC0832_2XBYTE[0xBFFF]#defineDAC0832XBYTE[0x7FFF]voiddelay(uchar);voidmain(){ delay(500); while(1) {uchari; for(i=0;i<0xff;i++) {DAC0832_1=i; delay(50);

DAC0832_2=i;delay(50); DAC0832=0x00; } for(i=0xff;i>0;i--) {DAC0832_1=i; delay(50); DAC0832_2=0xfe-i;delay(50); DAC0832=0x00; } }}voiddelay(ucharx)//1ms{ucharj;while(x--){for(j=0;j<125;j++);}}9.280C51單片機(jī)與ADC0809的接口A/D轉(zhuǎn)換器(ADC)是將模擬量轉(zhuǎn)換成數(shù)字量的器件,模擬量只有轉(zhuǎn)變成數(shù)字量才能被單片機(jī)CPU采集、分析和處理。模擬量有電壓、電流等電信號(hào),也有聲、光、壓力和溫度等隨非電物理量,非電物理量可選擇合適的傳感器轉(zhuǎn)換成電信號(hào),傳感器和ADC構(gòu)成單片機(jī)的采集系統(tǒng)。本節(jié)介紹ADC原理,詳細(xì)介紹80C51單片機(jī)與8位A/D轉(zhuǎn)換器ADC0809的接口設(shè)計(jì)與應(yīng)用。

499.2.1A/D轉(zhuǎn)換器概述以下重點(diǎn)介紹A/D轉(zhuǎn)換器分類、轉(zhuǎn)換原理以及主要技術(shù)指標(biāo)。1.A/D轉(zhuǎn)換器類型及原理隨著超大規(guī)模集成電路技術(shù)的飛速發(fā)展,為滿足不同測(cè)控系統(tǒng)要求,出現(xiàn)了不同內(nèi)部結(jié)構(gòu)、轉(zhuǎn)換原理的各種ADC芯片。從轉(zhuǎn)換原理分有計(jì)數(shù)型、逐次比較式、雙重積分型和并行式等;按其分辨率可分為4位、8位、10位、12位、14位、16位并行接口輸出以及

等BCD碼輸出ADC芯片。(1)計(jì)數(shù)型ADC計(jì)數(shù)型ADC由計(jì)數(shù)器、比較器和DAC組成,轉(zhuǎn)換開(kāi)始時(shí),計(jì)數(shù)器從零開(kāi)始加一計(jì)數(shù),每加一計(jì)數(shù)后,新計(jì)數(shù)值送DAC轉(zhuǎn)換,通過(guò)比較器比較輸入模擬信號(hào)與D/A轉(zhuǎn)換后的模擬信號(hào),若輸入模擬量大于計(jì)數(shù)器轉(zhuǎn)換量,則計(jì)數(shù)值加1后,重復(fù)D/A轉(zhuǎn)換和比較過(guò)程。直到D/A轉(zhuǎn)換模擬信號(hào)大于等于輸入的模擬信號(hào),則計(jì)數(shù)停止,此時(shí)計(jì)數(shù)器中數(shù)字量即為與輸入模擬量相當(dāng)?shù)臄?shù)字量。計(jì)數(shù)型ADC在需要較高精度時(shí),隨著位數(shù)增大,轉(zhuǎn)換速度較慢,在實(shí)際中很少使用。51(2)逐次逼近型ADC逐次逼近型ADC是由一個(gè)比較器、寄存器、DAC以及控制電路組成。轉(zhuǎn)換原理是:轉(zhuǎn)換開(kāi)始時(shí),寄存器清0,最高位置1,將寄存器內(nèi)容送DAC轉(zhuǎn)換,將輸入的模擬量與DAC轉(zhuǎn)換模擬量送入比較器比較,若DAC轉(zhuǎn)換模擬量比輸入的模擬量小,則寄存器中1保留,若轉(zhuǎn)換模擬量比輸入模擬量大,則1不保留,寄存器次高位置1,重復(fù)上述過(guò)程,直至寄存器最低位置1,轉(zhuǎn)換后與輸入模擬量比較。則寄存器內(nèi)容即為輸入模擬量對(duì)應(yīng)的數(shù)字量??梢?jiàn),n位的逐次逼近型ADC轉(zhuǎn)換需要比較n次,逐次逼近型ADC轉(zhuǎn)換速度、精度和價(jià)格適中,是最常用的ADC。53常用產(chǎn)品有美國(guó)NationalSemiconductor公司的ADC0801~ADC0805型、ADC0808/0809型和ADC0816/0817型等8位MOS型ADC,以及美國(guó)模擬器件公司的快速12位ADCAD574。(3)雙重積分型ADC雙重積分型ADC先將輸入模擬量變換成與其平均值成正比的時(shí)間間隔,再將此時(shí)間間隔轉(zhuǎn)換成數(shù)字量,屬于間接型轉(zhuǎn)換器。其轉(zhuǎn)換過(guò)程分為采樣和比較兩個(gè)階段。在采樣階段,輸入模擬電壓經(jīng)積分器進(jìn)行固定時(shí)間的積分,輸入模擬量越大(采樣值越大),正向積分值越大;在比較階段,基準(zhǔn)電壓經(jīng)積分器反向積分,直至積分器為0,由于基準(zhǔn)電壓值固定所以采樣值越大,反向積分時(shí)間越長(zhǎng),即反向積分時(shí)間與輸入電壓值成正比。將反向積分時(shí)間轉(zhuǎn)換成數(shù)字量,即是與輸入模擬量對(duì)應(yīng)的數(shù)字量。雙重積分型ADC轉(zhuǎn)換精度高,穩(wěn)定性好,采用的模擬量為輸入電壓的平均值,而非瞬時(shí)值,因此具有較強(qiáng)抗干擾能力,但轉(zhuǎn)換速度較慢,在工業(yè)領(lǐng)域應(yīng)用比較廣泛。雙重積分式轉(zhuǎn)換器的常用產(chǎn)品有:ICL7106/ICL7107/ICL7126、MC14433/5G14433、ICL7135等。54(4)∑-Δ式ADC∑-Δ式ADC集成雙重積分型與逐次比較型ADC的優(yōu)點(diǎn)。對(duì)工業(yè)現(xiàn)場(chǎng)的串模干擾抑制能力強(qiáng),不亞于雙重積分型ADC,且比雙重積分型ADC轉(zhuǎn)換速度高。同逐次比較型ADC比,分辨率高,具有較高的信噪比,且線性度好。所以∑-Δ式ADC受到越來(lái)越廣泛的重視。552.ADC主要技術(shù)指標(biāo)(1)分辨率分辨率是衡量ADC能夠分辨的輸入模擬量最小變化程度,取決于ADC的位數(shù),一般用輸出的二進(jìn)制或BCD位數(shù)表示。例如,ADC0809輸入模擬電壓最高為5V,輸出是8位二進(jìn)制數(shù),即256個(gè)量化級(jí),分辨率能力為1LSB,即5V/28=19.53mV,或說(shuō)能分辨出輸入模擬電壓19.53mV的變化,其分辨率按位數(shù)為12位。又如,AD574A分辨率為12位,其百分?jǐn)?shù)分辨率為:1/4096×100%=0.0244%56模擬信號(hào)數(shù)字化的實(shí)質(zhì)是用規(guī)定的N個(gè)電平表示模擬信號(hào)樣值,此過(guò)程稱為量化,量化過(guò)程中由于用有限位數(shù)字量對(duì)模擬量進(jìn)行量化,會(huì)引起量化誤差。量化誤差規(guī)定為一個(gè)單位分辨率的一半,即±1/2LSB,可見(jiàn)A/D轉(zhuǎn)換位數(shù)提高既提高分辨率,又能減少量化誤差。(2)量程量程是指ADC輸入模擬量的變化范圍。如雙積分型輸出BCD碼的ADCMC14433,其最大輸入電壓為2V。(3)轉(zhuǎn)換時(shí)間或轉(zhuǎn)換速率轉(zhuǎn)換速率是指完成一次A/D轉(zhuǎn)換所需要的時(shí)間。轉(zhuǎn)換速率與轉(zhuǎn)換時(shí)間互為倒數(shù)。ADC轉(zhuǎn)換速度有超高速(轉(zhuǎn)換時(shí)間≤1ns)、高速(轉(zhuǎn)換時(shí)間≤1us)、中速(轉(zhuǎn)換時(shí)間≤1ms)、低速(轉(zhuǎn)換時(shí)間≤1s)等幾種。(4)轉(zhuǎn)換精度轉(zhuǎn)換精度是指實(shí)際ADC與理想ADC在量化值上的差值,用絕對(duì)誤差或相對(duì)誤差表示。9.2.280C51與逐次比較型8位ADC0809的接口ADC0809是美國(guó)NationalSemiconductor公司生產(chǎn)的CMOS工藝、單片型逐次比較型ADC,具有8路電壓模擬量輸入通道、8位數(shù)字量輸出,模擬輸入電壓范圍為0~+5V,轉(zhuǎn)換起??煽?,轉(zhuǎn)換時(shí)間為100s,它的內(nèi)部結(jié)構(gòu)如圖9-15所示。59圖9-15ADC0809內(nèi)部結(jié)構(gòu)圖1.ADC0809的內(nèi)部結(jié)構(gòu)ADC0809是采用逐次比較方式實(shí)現(xiàn)A/D轉(zhuǎn)換的,片內(nèi)結(jié)構(gòu)由帶有鎖存功能的8選1模擬轉(zhuǎn)換開(kāi)關(guān)、3-8地址鎖存譯碼器、8位逐次逼近ADC和8位三態(tài)輸出鎖存器等組成。采用單一+5V電源供電。ADC0809對(duì)0~5V的模擬電壓輸入信號(hào)進(jìn)行轉(zhuǎn)換??捎?0C51單片機(jī)控制啟動(dòng)轉(zhuǎn)換,ADC0809轉(zhuǎn)換時(shí)間大約需100μs(轉(zhuǎn)換時(shí)間與加在CLOCK引腳的時(shí)鐘頻率有關(guān)),轉(zhuǎn)換結(jié)束后,可由單片機(jī)控制其輸出8位TTL電平數(shù)字量,輸出直接送80C51單片機(jī)的數(shù)據(jù)總線上。612.引腳及功能ADC0809芯片采用雙列直插式封裝,有28只引腳,如圖9-16,引腳功能如下:(1)IN0~I(xiàn)N7:8路模擬信號(hào)輸入通道。(2)D0~D7:8位三態(tài)數(shù)字量輸出端。(3)ADDC、ADDB、ADDA:通道選擇輸入線,3根輸入線的邏輯組合用于控制8路模擬輸入通道的切換,對(duì)通道的選擇情況見(jiàn)表9-1所示。此3只地址輸入可分別與單片機(jī)的3條地址線或數(shù)據(jù)線相連。62(4)ALE:地址鎖存允許信號(hào),當(dāng)此引腳輸入信號(hào)由低電平變高電平時(shí),ADC0809鎖存ADDC、ADDB、ADDA3只通道選擇輸入線上編碼信號(hào)作為通道選擇信號(hào)。(5)START:?jiǎn)?dòng)轉(zhuǎn)換控制輸入線,該引腳由高電平變低電平時(shí)啟動(dòng)轉(zhuǎn)換。(6)CLK:轉(zhuǎn)換時(shí)鐘輸入線,ADC0809的CLK信號(hào)須外加。典型值640KHz,超過(guò)時(shí)轉(zhuǎn)換精度下降。(7)EOC:A/D轉(zhuǎn)換結(jié)束輸出信號(hào)。當(dāng)啟動(dòng)轉(zhuǎn)換時(shí),該引腳為低電平,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),該引腳輸出高電平。63(8)OE:數(shù)據(jù)輸出允許信號(hào),為輸入引腳,高電平有效。當(dāng)轉(zhuǎn)換結(jié)束后,如果從該引腳輸入高電平,則打開(kāi)輸出三態(tài)門,鎖存器的數(shù)據(jù)從D0~D7輸出。OE為低電平時(shí),D7~D0引腳為浮空態(tài)。(9)VREF+、VREF-:基準(zhǔn)電壓輸入端。(10)Vcc:電源,接+5V電源。(11)GND:地。64圖9-16ADC0809引腳功能表9-1ADC0809通道地址選擇表ADDCADDBADDA選擇通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN73.ADC0809的工作流程多通道ADC一般都有確定轉(zhuǎn)換通道、啟動(dòng)轉(zhuǎn)換、等待轉(zhuǎn)換結(jié)束和讀取轉(zhuǎn)換結(jié)果等過(guò)程,ADC0809的工作流程如圖9-17所示。(1)確定轉(zhuǎn)換通道:通過(guò)ADDC、ADDB、ADDA引腳輸入3位地址,使ALE引腳為高電平,其上升沿將地址存入3-8地址鎖存與譯碼器中,經(jīng)譯碼從8路模擬通道中選通一路電壓模擬量給比較器。(2)啟動(dòng)轉(zhuǎn)換:給START引腳一高電平信號(hào),該信號(hào)上升沿使逐次逼近寄存器復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換,且使轉(zhuǎn)換結(jié)束輸出引腳EOC信號(hào)為低電平。67

(3)等待轉(zhuǎn)換結(jié)束:A/D轉(zhuǎn)換過(guò)程有需要一定的時(shí)間,當(dāng)轉(zhuǎn)結(jié)束后,轉(zhuǎn)換的結(jié)果送入三態(tài)輸出鎖存器,并使EOC引腳高電平,此信號(hào)可通知CPU轉(zhuǎn)換已經(jīng)結(jié)束。(4)讀取轉(zhuǎn)換數(shù)據(jù):CPU執(zhí)行讀數(shù)據(jù)指令,使OE為高電平將數(shù)據(jù)從輸出端D0~D1讀出。圖9-17ADC0809的工作流程單片機(jī)讀取ADC結(jié)果可采用查詢方式和中斷方式。(1)查詢方式可檢測(cè)EOC引腳是否變?yōu)楦唠娖?,高電平則表示ADC轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)果可讀。(2)中斷方式可將EOC通過(guò)反相器后與單片機(jī)外部中斷請(qǐng)求引腳連接,單片機(jī)響應(yīng)中斷進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中讀取轉(zhuǎn)換結(jié)果。4.ADC0809輸出數(shù)字量與輸入模擬電壓量的關(guān)系A(chǔ)DC0809輸入模擬電壓范圍為0~+5V,輸出是8位數(shù)字量,即00~0xFF,轉(zhuǎn)換輸出數(shù)字量D與輸入模擬電壓Vin關(guān)系如下:D=255·Vin/5其中:轉(zhuǎn)換輸出數(shù)字量D為十進(jìn)制數(shù),Vin處于0~5V之間。715.ADC0809的轉(zhuǎn)換工作原理討論接口設(shè)計(jì)前,先了解單片機(jī)如何控制ADC開(kāi)始轉(zhuǎn)換,如何得知轉(zhuǎn)換結(jié)束以及如何讀入轉(zhuǎn)換結(jié)果的問(wèn)題。單片機(jī)控制ADC0809進(jìn)行A/D轉(zhuǎn)換過(guò)程如下:首先由加到C、B、A上的編碼決定選擇ADC0809的某一路模擬輸入通道,同時(shí)產(chǎn)生高電平加到ADC0809的START引腳,開(kāi)始對(duì)選中通道轉(zhuǎn)換。當(dāng)轉(zhuǎn)換結(jié)束時(shí),ADC0809發(fā)出轉(zhuǎn)換結(jié)束EOC(高電平)信號(hào)。當(dāng)單片機(jī)讀取轉(zhuǎn)換結(jié)果時(shí),需控制OE端為高電平,把轉(zhuǎn)換完畢的數(shù)字量讀入到單片機(jī)內(nèi)。9.2.3單片機(jī)控制ADC0809的輸入采集設(shè)計(jì)下面介紹單片機(jī)擴(kuò)展ADC0809芯片接口設(shè)計(jì)及軟件編程?!纠?-6】單片機(jī)控制ADC0809采集電源電壓(由于Proteus庫(kù)中無(wú)ADC0809仿真模型,仿真中由與ADC0808性能相同、可完全兼容的ADC0808代替),并將采集結(jié)果通過(guò)P1口連接的8只LED輸出顯示。模擬量電源電壓通過(guò)可變電阻器RV1后,輸入ADC0808IN2通道,通道地址線C、B、A分別連接連接單片機(jī)數(shù)據(jù)線D2、D1、D0;ADC0808的輸入時(shí)鐘CLK端連接外部時(shí)鐘650kHz;由于P2.7端和單片機(jī)寫信73號(hào)經(jīng)過(guò)或非門連接啟動(dòng)和地址控制引腳,P2.7端和單片機(jī)讀信號(hào)經(jīng)過(guò)或非門連接ADC0808的輸出控制端,所以可用地址0x0000作為ADC0808的地址。(1)單片機(jī)以延時(shí)方式讀取ADC0808轉(zhuǎn)換結(jié)果延時(shí)方式讀取ADC0808轉(zhuǎn)換結(jié)果電路原理圖如圖9-18所示,由于ADC0809芯片轉(zhuǎn)換一次大約需要100us,單片機(jī)啟動(dòng)ADC后,可延時(shí)200us后,采集電壓值,將ADC0808轉(zhuǎn)換后的二進(jìn)制結(jié)果取反后通過(guò)P1口輸出。7475圖9-18單片機(jī)以延時(shí)方式讀取ADC0809轉(zhuǎn)換結(jié)果參考程序如下:#include<reg51.h>#include<absacc.h>//定義絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineP0809XBYTE[0x0000]//ADC0809端口地址voidDelay(unsignedintx)//延時(shí)200us函數(shù){ucharj;while(x--){for(j=0;j<25;j++);}}voidmain(void){uchartemp;76while(1){P0809=2;//啟動(dòng)通道2轉(zhuǎn)換Delay(1);temp=P0809; P1=~temp;}}(2)單片機(jī)以查詢方式讀取ADC0809轉(zhuǎn)換結(jié)果查詢方式讀取轉(zhuǎn)換結(jié)果電路原理圖如圖9-19所示,單片機(jī)啟動(dòng)ADC0808后,經(jīng)100us左右轉(zhuǎn)換結(jié)束,EOC引腳由低電平變?yōu)楦唠娖?。電路連接EOC與P2.0引腳,通過(guò)查詢P2.0引腳,一旦變高后可讀ADC0808轉(zhuǎn)換后的二進(jìn)制結(jié)果。圖9-19單片機(jī)以查詢方式讀取ADC0809轉(zhuǎn)換結(jié)果參考程序如下:#include<reg51.h>#include<absacc.h>//定義絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineP0809XBYTE[0x0000]//通道0的地址sbitEOC=P2^0;voidmain(void){uchartemp;while(1){EOC=1;P0809=2;//啟動(dòng)通道2轉(zhuǎn)換while(!EOC);temp=P0809; P1=~temp;}}80(3)單片機(jī)以中斷方式控制讀取ADC0809轉(zhuǎn)換結(jié)果中斷方式控制讀取轉(zhuǎn)換結(jié)果電路原理圖如圖9-20所示,將EOC引腳經(jīng)過(guò)74LS04反相器后連接單片機(jī)外部中斷1輸入引腳。單片機(jī)控制ADC啟動(dòng)后,轉(zhuǎn)換結(jié)束時(shí)EOC變?yōu)楦唠娖胶髮⑸暾?qǐng)外部中斷,單片機(jī)可以在外部中斷服務(wù)程序中讀取ADC0808轉(zhuǎn)換后的二進(jìn)制結(jié)果并顯示。圖9-20單片機(jī)以中斷方式讀取ADC0809轉(zhuǎn)換結(jié)果參考程序如下:#include<reg51.h>#include<absacc.h>//定義絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineP0809XBYTE[0x0000]//通道0的地址voidDelay(unsignedintx)//延時(shí)1ms函數(shù){ucharj;while(x--){for(j=0;j<125;j++);}}voidmain(void){EA=1;ET1=1;EX1=1;

83P0809=2;//啟動(dòng)通道2轉(zhuǎn)換while(1);// {P1=0xFF;}

}voidadcint(void)interrupt2//中斷函數(shù){uchartemp; temp=P0809; P1=~temp; P0809=2;}84【例9-7】設(shè)計(jì)單片機(jī)和ADC0809接口電路,實(shí)現(xiàn)一個(gè)8路模擬量輸入的巡回檢測(cè)系統(tǒng),如圖9-21所示,使用中斷方式采樣數(shù)據(jù),把采樣轉(zhuǎn)換所得的數(shù)字量按通道號(hào)序存于片內(nèi)RAM的50H~57H單元中。要求循環(huán)采集8路模擬量,并通過(guò)P1口以二進(jìn)制形式顯示輸出通道IN0的采集結(jié)果。85圖9-21一個(gè)8路模擬量輸入的巡回檢測(cè)系統(tǒng)參考程序如下:#include<reg51.h>#include<absacc.h>//定義絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineAD0809XBYTE[0x0000]//通道0的地址data ucharbuf[8]_at_0x50; //定義8個(gè)結(jié)果數(shù)組地址bitflag=0;uchari=0;voidmain(void){EX1=1; EA=1; P1=0xFF; AD0809=0;while(1)

87{P1=~buf[0];}//等待中斷} voidadcint(void)interrupt2{buf[i]=AD0809;//接收轉(zhuǎn)換結(jié)果 i++;if(i<8) {AD0809=i;//啟動(dòng)下一個(gè)通道返回 } else {i=0; AD0809=i; }}88【例9-8】在上例的基礎(chǔ)上,設(shè)計(jì)單片機(jī)和AD0809接口電路,實(shí)現(xiàn)一個(gè)8路模擬量輸入的巡回檢測(cè)及數(shù)碼管顯示系統(tǒng),如圖9-22所示,使用中斷方式采集數(shù)據(jù),把采集轉(zhuǎn)換所得的數(shù)字量按通道號(hào)序存于片內(nèi)RAM的0x50~0x57單元中。能夠循環(huán)采集8路模擬電壓量,并通過(guò)4位數(shù)碼管依次顯示8路輸入電壓即時(shí)值。圖9-228路模擬量輸入巡回檢測(cè)及數(shù)碼管顯示參考程序如下:#include<reg51.h>#include<absacc.h>//絕對(duì)地址訪問(wèn)#defineucharunsignedchar#defineAD0809XBYTE[0x0000]//AD0809端口地址data ucharsampl[8]_at_0x50; //定義8個(gè)結(jié)果數(shù)組地址ucharleddat[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,},segment[4],bt=0x01,i=0;voidDelay(unsignedintx)//延時(shí)函數(shù){unsignedintn,j;while(x--)for(j=0;j<120;j++);}91voiddisplay() //顯示函數(shù){ucharp;for(p=0;p<4;p++){P2=bt<<p;P1=segment[p];if(p==3) //顯示小數(shù)點(diǎn)P1=P1|0x80;Delay(1);}}voidmain(void){EX1=1; EA=1; AD0809=0;

92while(1){; } }voidadcint(void)interrupt2{unsignedintadvalue;ucharm;sampl[i]=AD0809;advalue=sampl[i]*19.608;segment[0]=leddat[advalue%10]; //計(jì)算段選碼個(gè)位segment[1]=leddat[advalue/10%10]; //計(jì)算段選碼十位segment[2]=leddat[advalue/100%10]; //計(jì)算段選碼百位 segment[3]=leddat[advalue/1000]; //計(jì)算段選碼千位

93for(m=0;m<=250;m++) {display(); }i++;if(i<8) {AD0809=i;//啟動(dòng)下一個(gè)通道 } else {i=0; AD0809=i; } }9.380C51單片機(jī)與串行ADC0832的接口1.ADC0832的結(jié)構(gòu)與引腳ADC0832是美國(guó)NationalSemiconductor公司生產(chǎn)的一種8位分辨率、雙通道、帶SPI串行接口的ADC。供電電源5V,模擬輸入電壓范圍是0~5V,工作頻率為250kHz,典型轉(zhuǎn)換時(shí)間僅為32μs,功耗為15mW。商用級(jí)芯片溫寬為0°C~+70°C,工業(yè)級(jí)芯片溫寬為?40°C~+85°C,由于它具有體積小、占用單片機(jī)的端口少、接口簡(jiǎn)單、兼容性強(qiáng)以及性價(jià)比高等優(yōu)點(diǎn),已得到廣泛使用。95圖9-23ADC0832引腳ADC0832是8只引腳的雙列直插封裝,其引腳排列如圖9-23所示,能分別對(duì)2路模擬輸入電壓信號(hào)進(jìn)行模-數(shù)轉(zhuǎn)換,可在單端輸入方式和差分輸入方式下工作,輸入輸出電平與TTL/CMOS相兼容;其引腳和功能說(shuō)明如下。(1):片選使能,低電平有效。(2)CH0:模擬輸入通道0,或作為IN+/-使用。(3)CH1:模擬輸入通道1,或作為IN+/-使用。(4)CLK:芯片時(shí)鐘輸入。(5)DI:數(shù)字信號(hào)輸入,選擇通道控制。(6)DO:數(shù)字信號(hào)輸出,轉(zhuǎn)換數(shù)據(jù)輸出。(7)Vcc/REF:電源輸入及參考電壓輸入。(8)GND:芯片參考0電位(地)。972.單片機(jī)對(duì)ADC0832的控制時(shí)序正常使用時(shí),單片機(jī)與ADC0832接口數(shù)據(jù)線應(yīng)有4條,分別是、CLK、DO、DI。電路設(shè)計(jì)時(shí),由于DO與DI與單片機(jī)通信時(shí),并未同時(shí)有效且通信方向相反,所以,可以將DO和DI并聯(lián)后與單片機(jī)同一I/O引腳連接。單片機(jī)控制ADC轉(zhuǎn)換時(shí)序如圖9-24所示,說(shuō)明如下。(1)當(dāng)ADC0832未工作時(shí),輸入端應(yīng)為高電平,CLK和DO/DI的電平可任意。當(dāng)要進(jìn)行A/D轉(zhuǎn)換時(shí),須先將片選端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。(2)芯片開(kāi)始轉(zhuǎn)換工作時(shí),由單片機(jī)向ADC0832時(shí)鐘輸入端CLK輸入時(shí)鐘脈沖。圖9-24單片機(jī)控制ADC0832轉(zhuǎn)換的時(shí)序

(3)單片機(jī)向DI引腳送出通道功能選擇信號(hào)。在第1個(gè)時(shí)鐘脈沖CLK上升沿之前,DI是高電平,表示起始信號(hào)。在第2、3個(gè)CLK上升沿之前,DI應(yīng)輸入2位數(shù)據(jù)用于選擇通道。第3個(gè)脈沖的下降沿后,DI端的輸入信號(hào)就失去作用,但要保持高電平,直到第4個(gè)CLK結(jié)束??刂七x擇通道情況如表9-2所示。表9-2ADC0832通道選擇表102(4)單片機(jī)通過(guò)數(shù)據(jù)輸出DO引腳讀取轉(zhuǎn)換結(jié)果。從第4個(gè)CLK下降沿開(kāi)始由DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位b7,此后每一個(gè)CLK下降沿DO端輸出下一位數(shù)據(jù)。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論