《單片機(jī)原理及應(yīng)用》第10章:?jiǎn)纹瑱C(jī)的擴(kuò)展技術(shù)_第1頁(yè)
《單片機(jī)原理及應(yīng)用》第10章:?jiǎn)纹瑱C(jī)的擴(kuò)展技術(shù)_第2頁(yè)
《單片機(jī)原理及應(yīng)用》第10章:?jiǎn)纹瑱C(jī)的擴(kuò)展技術(shù)_第3頁(yè)
《單片機(jī)原理及應(yīng)用》第10章:?jiǎn)纹瑱C(jī)的擴(kuò)展技術(shù)_第4頁(yè)
《單片機(jī)原理及應(yīng)用》第10章:?jiǎn)纹瑱C(jī)的擴(kuò)展技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10章單片機(jī)的擴(kuò)展技術(shù)10.1A/D轉(zhuǎn)換器概述10.2D/A轉(zhuǎn)換器概述習(xí)題與思考題10.1A/D轉(zhuǎn)換器在單片機(jī)應(yīng)用系統(tǒng)中,總是要對(duì)許多連續(xù)變化的模擬量(如溫度、壓力)等進(jìn)行測(cè)量,而這些模擬量對(duì)于單片機(jī)來說是無法直接測(cè)量的,單片能夠直接接收的是數(shù)字量,因此必須進(jìn)行模數(shù)轉(zhuǎn)換后才能送給單片機(jī)進(jìn)行處理。我們把模擬量轉(zhuǎn)換成數(shù)字量的過程稱為A/D轉(zhuǎn)換。本節(jié)主要介紹并行A/D器件ADC0809和串行A/D器件TLC1549。10.1.1幾種常用的A/D方法介紹A/D轉(zhuǎn)換器的種類很多,例如:計(jì)數(shù)器式A/D轉(zhuǎn)換器(結(jié)構(gòu)簡(jiǎn)單,但轉(zhuǎn)換速度也很慢,所以很少采用)、雙積分式A/D轉(zhuǎn)換器(抗干擾能力強(qiáng),轉(zhuǎn)換精度高,但轉(zhuǎn)換速度不理想)、逐次逼近式A/D轉(zhuǎn)換器(既照顧了速度,又具有一定得精度,是目前應(yīng)用最多的一種)、并行比較型/串并行型A/D轉(zhuǎn)換器、Σ-Δ調(diào)制型A/D轉(zhuǎn)換器、電容陣列逐次比較型A/D轉(zhuǎn)換器、壓頻變換型A/D轉(zhuǎn)換器。在這些轉(zhuǎn)換中,主要區(qū)別是速度、精度和價(jià)格,一般來說速度越快,精度越高,則價(jià)格也越高。1、逐次逼近式A/D轉(zhuǎn)換器逐次逼近式A/D轉(zhuǎn)換器也稱連續(xù)比較式A/D轉(zhuǎn)換器是以D/A轉(zhuǎn)換器為基礎(chǔ),加上比較器、逐次逼近式寄存器、置數(shù)選擇邏輯電路以及時(shí)鐘等組成。如圖10.1所示在啟動(dòng)信號(hào)控制下,首先置數(shù)選擇邏輯電路給逐次逼近式寄存器最高位置“1”,VREF經(jīng)D/A轉(zhuǎn)換成模擬量與輸入的模擬量VIN進(jìn)行比較,電壓比較器給出比較結(jié)果。如果輸入量大于或等于經(jīng)D/A轉(zhuǎn)換輸出的量,則比較器輸出為“1”,否則為“0”,置數(shù)選擇邏輯電路根據(jù)比較器輸出的結(jié)果,修改逐次逼近式寄存器中的內(nèi)容,使其D/A轉(zhuǎn)換后的模擬量逐次逼近輸入的模擬量。這樣一來,經(jīng)過若干次修改后的數(shù)字量,就是A/D轉(zhuǎn)換的結(jié)果量1、逐次逼近式A/D轉(zhuǎn)換器逐次逼近式電路的優(yōu)點(diǎn)是速度較高,功耗低,在低分辨率(精度)(<12位)時(shí)價(jià)格低,但高精度(>12為)時(shí)價(jià)格高?,F(xiàn)在單片機(jī)內(nèi)集成的A/D模塊許多都是逐次逼近式的,其一般都可以實(shí)現(xiàn)8~12位的分辨率。實(shí)際得到的精度要比其分辨率低1~2位,如果要實(shí)現(xiàn)其更高的分辨率的采樣,就需要使用Σ-Δ型A/D了。2、Σ-Δ調(diào)制型A/D轉(zhuǎn)換器Σ-Δ型A/D由積分器、比較器、1位DA轉(zhuǎn)換器和數(shù)字濾波器等組成。原理上近似于積分型,將輸入電壓轉(zhuǎn)換成時(shí)間(脈沖寬度)信號(hào),用數(shù)字濾波器處理后得到數(shù)字值。主要用于音頻和測(cè)量。電路的數(shù)字部分基本上容易單片化,因此容易做到高分辨率;其缺點(diǎn)是轉(zhuǎn)換速率較慢。3、并行比較型/串并行型A/D轉(zhuǎn)換器并行比較型A/D采用多個(gè)比較器,僅作一次比較而實(shí)行轉(zhuǎn)換,又稱FLash(快速)型。由于轉(zhuǎn)換速率極高,n位的轉(zhuǎn)換需要2n-1個(gè)比較器,因此電路規(guī)模也極大,價(jià)格也高,只適用于視頻A/D轉(zhuǎn)換器等速度特別高的領(lǐng)域。它由三部分構(gòu)成:分壓器、比較器、編碼器。這種A/D變換器的優(yōu)點(diǎn)是轉(zhuǎn)換速度快,缺點(diǎn)是所需比較器數(shù)目多,位數(shù)越多矛盾越突出。輸入電壓Ux比較器輸出編碼器輸出ABCDEFGD2D1D0E>Ux>7E/811111111117E/8>Ux>6E/811111101106E/8>Ux>5E/811111001015E/8>Ux>4E/811110001004E/8>Ux>3E/811100000113E/8>Ux>2E/811000000102E/8>Ux>1E/810000000011E/8>Ux>000000000004、壓頻變換型壓頻變換型(Voltage-FrequencyConverter)是通過間接轉(zhuǎn)換方式實(shí)現(xiàn)模數(shù)轉(zhuǎn)換的。其原理是首先將輸入的模擬信號(hào)轉(zhuǎn)換成頻率,然后用計(jì)數(shù)器將頻率轉(zhuǎn)換成數(shù)字量。從理論上講這種A/D的分辨率幾乎可以無限增加,只要采樣的時(shí)間能夠滿足輸出頻率分辨率要求的累積脈沖個(gè)數(shù)的寬度。其優(yōu)點(diǎn)是分辯率高、功耗低、價(jià)格低,但是需要外部計(jì)數(shù)電路共同完成A/D轉(zhuǎn)換。10.1.2A/D轉(zhuǎn)換技術(shù)指標(biāo)ADC(Analog-DigitalConverter,模/數(shù)轉(zhuǎn)換器)的性能指標(biāo)是正確選用A/D芯片的基本依據(jù),也是衡量A/D質(zhì)量的關(guān)鍵問題。ADC性能指標(biāo)很多,例如,線性度、偏移誤差、溫度靈敏度和功耗等。分辨率分辨率(Resolution)是指轉(zhuǎn)換器所能分辨的被測(cè)量的最小值。對(duì)于ADC來講,分辨率表示輸出數(shù)字量變化一個(gè)相鄰數(shù)碼所需要輸入模擬電壓的最小變化量。如果數(shù)字量的位數(shù)為n,分辨率就等于1/2n滿刻度值。需要注意的是,分辨率和精度并不是一個(gè)概念,精度會(huì)受到各種因素的影響。比如,一個(gè)10位分辨率的A/D轉(zhuǎn)化你,其精度往往要低于10位。轉(zhuǎn)換速度(ConversionRate)是指完成一次A/D轉(zhuǎn)換所需時(shí)間的倒數(shù),是一個(gè)非常重要的指標(biāo)。ADC型號(hào)不同,轉(zhuǎn)換速度差別很大。一般情況下,8位逐次逼近式ADC轉(zhuǎn)換時(shí)間為100μs左右。選用ADC型號(hào)時(shí),首先應(yīng)看現(xiàn)場(chǎng)信號(hào)變化的頻繁程度是否與ADC的速度相匹配,在被控系統(tǒng)控制時(shí)間允許的情況下,應(yīng)盡量選用價(jià)格便宜的逐次逼近式A/D轉(zhuǎn)換器。轉(zhuǎn)換精度(Conversionaccuracy)由模擬誤差和數(shù)字誤差組成。模擬誤差是比較器、解碼網(wǎng)絡(luò)中的電阻值以及基準(zhǔn)電壓波動(dòng)等引起的誤差。數(shù)字誤差主要包括丟碼誤差和量化誤差,前者屬于非固定誤差,由器件質(zhì)量確定,后者和A/D轉(zhuǎn)換器數(shù)字量的位數(shù)有關(guān),位數(shù)越多,誤差越小。量化間隔量化間隔是A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)之一,可以理解為A/D轉(zhuǎn)換的“臺(tái)階”、“步長(zhǎng)”,可由下面的式子求得:其中,n為轉(zhuǎn)換器的位數(shù)。量化誤差在A/D轉(zhuǎn)換過程中,模擬量是一種連續(xù)變化的量,數(shù)字量是斷續(xù)的量。因此,在A/D轉(zhuǎn)換器位數(shù)固定的情況下,并不是所有的模擬電壓都能用數(shù)字量精確表示。例如,假設(shè)2位二進(jìn)制A/D轉(zhuǎn)換器的滿量程值VAD為3V,即輸入模擬電壓可以在0~3V之間連續(xù)變化,但2位數(shù)字量只能有4種組合。如果輸入模擬電壓為0V、1V、2V和3V,2位數(shù)字量恰好能精確表示,不會(huì)出現(xiàn)量化誤差。如果輸入模擬電壓為其余值,則會(huì)出現(xiàn)量化誤差,輸入模擬電壓為:0.5V、1.5V和2.5V時(shí)量化誤差最大,應(yīng)當(dāng)是0.5V,故量化誤差的定義為分辨率(A/D轉(zhuǎn)換器所能分辨的最小模擬電壓)的1/2。量化誤差有兩種表示方法:一種是絕對(duì)量化誤差;另一種是相對(duì)量化誤差。例如,當(dāng)滿量程電壓為5V,采用10位A/D轉(zhuǎn)換器的量化間隔、絕對(duì)量化誤差、相對(duì)量化誤差分別是為10.1.3并行轉(zhuǎn)換芯片ADS7804ADS7804是一種新型12位A/D轉(zhuǎn)換器。該A/D轉(zhuǎn)換器采用逐次逼近式工作原理,單通道輸入,模擬輸入電壓的范圍為±10V,采樣速率為100kHz。與8位和16位的A/D轉(zhuǎn)換器相比,12位A/D轉(zhuǎn)換器以其較高的性能價(jià)格比在儀器儀表中得到廣泛的應(yīng)用。VIN為輸入的模擬信號(hào)。D11~D0(6~18腳)為數(shù)字量并行輸出口,DZ(19~22腳)是為了使管腳與16位A/D轉(zhuǎn)換器ADS7805兼容而設(shè)的,可懸空??刂菩盘?hào)類(輸入)為片選信號(hào),R/(輸入)為讀取結(jié)果/模數(shù)轉(zhuǎn)換控制信號(hào),(輸出)用于指示轉(zhuǎn)換是否完成,BYTE(輸入)信號(hào)用來控制從總線讀出的數(shù)據(jù)是轉(zhuǎn)換結(jié)果的高字節(jié)還是低字節(jié)。將R/(pin24)低電平至少40ns(最大6μs)將啟動(dòng)ADC轉(zhuǎn)換;引腳(pin26)將變低電平并且保持低電平直到轉(zhuǎn)換完成并且輸出寄存器更新;DATA將以二進(jìn)制補(bǔ)碼的形式進(jìn)行輸出;處于高電平的時(shí)候才可以鎖存數(shù)據(jù),當(dāng)處于低電平的時(shí)候其轉(zhuǎn)換結(jié)果可以忽略。ADS7804內(nèi)部結(jié)構(gòu)因?yàn)檗D(zhuǎn)換結(jié)果為12位,所以對(duì)8位單片機(jī)而言,必須分兩次讀入,這個(gè)功能由BYTE腳實(shí)現(xiàn)。當(dāng)BYTE腳為高電平時(shí),數(shù)據(jù)總線上輸出高字節(jié),反之,輸出低字節(jié)。ADS7804轉(zhuǎn)換得到的數(shù)字結(jié)果是以補(bǔ)碼形式給出的,表10.3給出模擬電壓和數(shù)字電壓的輸出關(guān)系。-10V~

9.99512V為量程,4.88mV為電壓分辨率。因?yàn)锳DS7804的

信號(hào)脈沖寬度要求為40ns~6μs之間,而對(duì)于單片機(jī)而言,只要對(duì)外

部設(shè)備進(jìn)行讀操作,即會(huì)產(chǎn)生脈沖,其寬度為6個(gè)振蕩周期,如采用12MHz的晶振,其脈沖寬度為500ns,所以將ADS7804的接單片機(jī)的RD信號(hào)是再合適不過了。至于R/、和BYTE信號(hào),只需連接到普通的鎖存功能的端口即可。圖10.7是ADS7804與單片機(jī)AT89C51的接口電路。ADS7804與51單片機(jī)的接口參考程序?yàn)槊?ms采集一次數(shù)據(jù),使用定時(shí)器0,方式1進(jìn)行采樣,將采樣的結(jié)果按順序存入array[N]數(shù)組中,數(shù)組N采用宏定義的方式進(jìn)行定義,也可以修改N的值,但是要注意counter變量的定義范圍,無符號(hào)char型的取值為0~255;如果采集的數(shù)據(jù)大于255個(gè)數(shù)據(jù),需要改變變量的類型。其參考程序如下:#include<reg51.h>#include<absacc.h>#defineuintunsignedint#defineucharunsignedchar#defineN100/*定采樣長(zhǎng)度為100點(diǎn)*/sbitBYTE=P1^0;sbitRC=P1^1;sbitBUSY=P1^2;/*定義控制信號(hào)位*/intxdataarray[N];/*在外部存儲(chǔ)器內(nèi)定義長(zhǎng)度為N的有符號(hào)整數(shù)個(gè)數(shù)*/ucharcounter;intADS7804(void);/*ADS7804底層驅(qū)動(dòng)程序***/IntADS7804(void){uintUlow,Uhigh;intresult;RC=0;/*低電平,進(jìn)入轉(zhuǎn)換模式*/Ulow=XBYTE[0xffff];

/*產(chǎn)生讀脈沖,啟動(dòng)A/D轉(zhuǎn)換*/while(BUSY==0);/*等待轉(zhuǎn)換完成*/RC=1;BYTE=0;

/*進(jìn)入讀模式,選擇低字節(jié)*/Ulow=XBYTE[0xffff];/*讀轉(zhuǎn)換結(jié)果低8位*/BYTE=1;/*選擇高字節(jié)*/Uhigh=XBYTE[0xffff]&0x0f;/*讀轉(zhuǎn)換結(jié)果高4位*/result=Uhigh*256+Ulow;

/*得到12位結(jié)果*/if(result>=0x0800)result=result|0xf000;/*如為負(fù)值,則符號(hào)擴(kuò)展*/return(result);/*返回轉(zhuǎn)換結(jié)果*/}/***ADS7804采樣程序*******/Voidmain(void){TMOD=0x01;/*定時(shí)器0,方式1*/TH0=0xFC;TL0=0x18;/每1ms采集一次數(shù)據(jù)EA=1;ET0=1;TR0=1;/*啟動(dòng)定時(shí)*/while(1);}/***ADS7804中斷程序********/VoidTimer0()interrupt1{array[counter++]=ADS7804if(counter==N)counter=0;

TH0=0xFC;TL0=0x18}10.1.4串行轉(zhuǎn)換芯片TLC15491、概述TLC1549系列是美國(guó)德州儀器公司生產(chǎn)的具有串行控制、連續(xù)逐次逼近型的模數(shù)轉(zhuǎn)換器,它采用兩個(gè)差分基準(zhǔn)電壓高阻輸入和一個(gè)三態(tài)輸出構(gòu)成三線接口,其中三態(tài)輸出分別為片選(CS低電平有效),輸入/輸出時(shí)鐘(I/OCLOCK),數(shù)據(jù)輸出(DATAOUT)。TLC1549引腳排列如圖10-8所示。TLC1549能以串行方式送給單片機(jī),其功能結(jié)構(gòu)如圖10-9所示。由于TLC1549采用CMOS工藝。內(nèi)部具有自動(dòng)采樣保持、可按比例量程校準(zhǔn)轉(zhuǎn)換范圍、抗噪聲干擾功能,而且開關(guān)電容設(shè)計(jì)使在滿刻度時(shí)總誤差最大僅為±1LSB(4.8mV),因此可廣泛應(yīng)用于模擬量和數(shù)字量的轉(zhuǎn)換電路。TLC1549在工作溫度范圍內(nèi)的極限參數(shù):電源電壓范圍:-0.5V~6.5V;125℃輸入電壓范圍:-0.3V~VCC+0.3V;輸出電壓范圍:-0.3~VCC+0.3V;正基準(zhǔn)電壓:VCC+0.1V;負(fù)基準(zhǔn)電壓:-0.1V;峰值輸入電流:+20mA;峰值總輸入電流:±30mA;工作溫度范圍:TLC1549M為-55℃~125℃,TLC1549C為0℃~70℃,TLC1549I為-40℃~85℃。2、TLC1549工作原理TLC1549具有6種串行接口時(shí)序模式,這些模式是由I/OCLOCK周期和CS定義。根據(jù)TLC1549的功能結(jié)構(gòu)和工作時(shí)序,其工作過程可分為3個(gè)階段:模擬量采樣、模擬量轉(zhuǎn)換和數(shù)字量傳輸。圖10-8所示為TLC1549的時(shí)序圖。在第3個(gè)I/OCLOCK下降沿,輸入模擬量開始采樣,采樣持續(xù)7個(gè)I/OCLOCK周期,采樣值在第10個(gè)I/OCLOCK下降沿鎖存。其詳細(xì)步驟為:門限檢測(cè)器檢測(cè)第一只電容(weight=512)的電壓,該電容的節(jié)點(diǎn)512連接到REF+。梯型網(wǎng)絡(luò)中,其他電容的等效節(jié)點(diǎn)接到REF-。如果總節(jié)點(diǎn)的電壓大于門限檢測(cè)器的電壓(大約VCC的一半),“0”被送至輸出寄存器,此時(shí)512-weight的電容連接到REF-。經(jīng)反相后為“1”,即為最高位MSB為1;如果總節(jié)點(diǎn)的電壓小于門限檢測(cè)器的電壓(大約VCC的一半),“1”被送至輸出寄存器,此時(shí)512-weight的電容連接到REF+,經(jīng)反相后為“0”,存為最高位MSB為0。對(duì)于256-weight的電容和128-weight的電容也要通過連續(xù)逐次逼近型的重復(fù)操作,直到確定從高位(MSB)到低位(LSB)所有數(shù)字量,即為初始的模擬電壓數(shù)字量。整個(gè)轉(zhuǎn)換過程調(diào)整VREF+和VREF1以便從數(shù)字0至1跳變的電壓(VZT)為0.0024V,滿度跳變電壓(VFT)為4.908V,即1LSB=4.8mV。即CS由高變?yōu)榈蜁r(shí),串行接口接收上一次轉(zhuǎn)換結(jié)果。首先移出上一次轉(zhuǎn)換結(jié)果數(shù)字量對(duì)應(yīng)的最高位,下一個(gè)I/OCLOCK的下降沿驅(qū)動(dòng)DATAOUT輸出上一次轉(zhuǎn)換結(jié)果數(shù)字量對(duì)應(yīng)的次高位,第9個(gè)I/OCLOCK的下降沿將按次序驅(qū)動(dòng)DATAOUT輸出上一次轉(zhuǎn)換結(jié)果數(shù)字量的最低位,第10個(gè)I/OCLOCK的下降沿,DATAOUT輸出一個(gè)低電平,以便串行接口傳輸超過10個(gè)時(shí)鐘;I/OCLOCK從主機(jī)串行接口接收長(zhǎng)度在10~16個(gè)時(shí)鐘的輸入序列。CS的下降沿,上一次轉(zhuǎn)換的MSB出現(xiàn)在DATAOUT端。10位數(shù)字量通過DATAOUT發(fā)送到主機(jī)串行接口。為了開始傳輸,最少需要10個(gè)時(shí)鐘脈沖,如果I/OCLOCK傳送大于10個(gè)時(shí)鐘,那么在第10個(gè)時(shí)鐘的下降沿,內(nèi)部邏輯把DATAOUT拉至低電平以確保其余位清零。在正常轉(zhuǎn)換周期內(nèi),即規(guī)定的時(shí)間內(nèi)CS端由高電平至低電平的跳變可以終止該周期,器件返回初始狀態(tài)(輸出數(shù)據(jù)寄存器的內(nèi)容保持為上一次轉(zhuǎn)換結(jié)果)。由于可能破壞輸出數(shù)據(jù),所以在接近轉(zhuǎn)換完成時(shí)要小心防止CS拉至低電平。例:TLC1549轉(zhuǎn)換程序#include"reg51.H"

#include"intrins.h"

externucharTLC1549_value_h;//高2位

externucharTLC1549_value_l;//低8位

sbitTLC1549_CS=P1^7;sbitTLC1549_DATA=P1^6;sbitTLC1549_CLK=P1^5;例:TLC1549轉(zhuǎn)換程序voidTLC1549_conver(void){uchari;TLC1549_value_h=0;TLC1549_value_l=0;TLC1549_CS=1;//初始狀態(tài)

TLC1549_CLK=0;_nop_();TLC1549_CS=0;_nop_();_nop_();_nop_();_nop_();例:TLC1549轉(zhuǎn)換程序if(TLC1549_DATA==1)//bit9{TLC1549_value_h|=0x01;}else{TLC1549_value_h&=0xFE;}TLC1549_value_h=TLC1549_value_h<<1;TLC1549_CLK=1;TLC1549_CLK=0;//clk的下降沿DAYA端輸出新的數(shù)據(jù)

if(TLC1549_DATA==1)//bit8{TLC1549_value_h|=0x01;}else{TLC1549_value_h&=0xFE;}例:TLC1549轉(zhuǎn)換程序for(i=0;i<8;i++)//讀低8位的數(shù)據(jù)

{TLC1549_CLK=1;TLC1549_CLK=0;//clk的下降沿DAYA端輸出新的數(shù)據(jù)

TLC1549_value_l=TLC1549_value_l<<1;if(TLC1549_DATA==1)//bit7~0{TLC1549_value_l|=0x01;}else{TLC1549_value_l&=0xFE;}}

TLC1549_CLK=1;TLC1549_CLK=0;//TLC1549_CS=1;}

TLC154910位編程#include"reg51.H“#include"intrins.h"externuintTLC1549_value;sbitTLC1549_CS=P1^7;sbitTLC1549_DATA=P1^6;sbitTLC1549_CLK=P1^5;voidTLC1549_conver(void){uchari;TLC1549_value=0;

TLC1549_CS=1;//初始狀態(tài)

TLC1549_CLK=0;_nop_();TLC1549_CS=0;_nop_();_nop_();_nop_();_nop_();for(i=0;i<10;i++)

{TLC1549_CLK=1;TLC1549_CLK=0;//clk的下降沿DAYA端輸出新的數(shù)據(jù)TLC1549_value=TLC1549_value<<1;if(TLC1549_DATA==1)//bit9~0{TLC1549_value|=0x01;}} TLC1549_CLK=1;TLC1549_CLK=0;//TLC1549_CS=1;}

10.1.5設(shè)計(jì)一簡(jiǎn)易數(shù)字電壓表

本方案選用了一只四聯(lián)共陰極數(shù)碼管作為顯示器,按照動(dòng)態(tài)顯示原理接線,其中段碼通過鎖存器74LS245驅(qū)動(dòng)后接于P0口,注意P0口必須接上拉電阻。位碼由4只PNP型三極管驅(qū)動(dòng)后接于P2.0~P2.3。A/D轉(zhuǎn)換芯片采用TLC1549,以通用I/O口方式與單片機(jī)連接。圖中TLC1549的3個(gè)引腳CLK、DOUT和分別于單片機(jī)的P1.0、P1.1和P1.2相連。數(shù)字電壓表原理圖具體的程序如下所示#include<REG51.H>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definenop_nop_()charmap[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};sbitTLC1549_CLKP1.0sbitTLC1549_DOUTP1.1sbitTLC1549_CSP1.2uintADConvertor(void);voiddisplay(uintvalue);voiddelay20us(void);//用于TLC1549的轉(zhuǎn)換voiddelay();/********************************主函數(shù)***************************/voidmain(){ uintvalue=0;value=ADConvertor();//TLC1543每次讀取的都是上一次的轉(zhuǎn)換結(jié)果,所以首次上//電需調(diào)用此函數(shù),以保證數(shù)據(jù)讀取正確。value=0; while(1){ value=ADConvertor(); display(display)}}/****TLC1549的驅(qū)動(dòng)程序*****/uintADConvertor(void);{ uintresult=0;uchari; TLC1549_CS=1; nop; TLC1549_CS=0; for(i=0;i<10;i++)//讀取AD數(shù)據(jù)

{

TLC1549_CLK=0;result=(result<<1)|TLC1549_DOUT; TLC1549_CLK=1; nop();}delay20us();//延時(shí)時(shí)間小于21μsTLC1549_CS=1;return(result);//返回采集的數(shù)據(jù)}/*****顯示程序*****/voidprint(uintvalue){ charp_buf[4]=“

”; chari,pos=0xF7; for(i=0;i<4;i++){ p_buf[i]=value%10; value/=10; if(value==10); break;}for(i=0;i<4;i++){ P2=P2|0x0F; P2=P2&pos; P0=map[p_buf[i]]; pos=(pos>>1)|0x80; delay();}}/*****************延時(shí)函數(shù)***********************/Voiddelay(){ chari; for(i=0;i<100;i++);}/*********************延時(shí)函數(shù)***********************/voiddelay20us(void)//誤差0us{unsignedchara,b;for(b=1;b>0;b--)for(a=7;a>0;a--);}10.2D/A轉(zhuǎn)換器概述圖10.18中,被控對(duì)象的過程信號(hào)由變送器或傳感器變換成相應(yīng)的模擬電量,然后經(jīng)多路開關(guān)匯集給ADC,轉(zhuǎn)換后的數(shù)字量送給單片機(jī)。單片機(jī)經(jīng)過運(yùn)算和處理,結(jié)果可有兩種輸出形式:通過人機(jī)交互單元(如打印、顯示等)報(bào)告當(dāng)前狀態(tài);通過DAC變換成模擬電量對(duì)被控對(duì)象進(jìn)行調(diào)整。如此往復(fù),以實(shí)現(xiàn)目標(biāo)控制要求。10.2.1D/A轉(zhuǎn)換原理一般情況下,由于執(zhí)行機(jī)構(gòu)都是電流驅(qū)動(dòng),D/A轉(zhuǎn)換器輸出的模擬量必須經(jīng)過電壓/電流轉(zhuǎn)換才能驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)動(dòng)作,以此控制被控實(shí)體的工作。D/A轉(zhuǎn)換器的輸出模擬量能隨輸入數(shù)字量正比地變化,使輸出模擬量能直接反應(yīng)數(shù)字量的大小,即有如下關(guān)系式:=式中,VR為常量,由D/A轉(zhuǎn)換器的參考電壓VREF決定;=權(quán)電阻網(wǎng)絡(luò)型D/A轉(zhuǎn)換器所謂“權(quán)電阻”是指電阻值的大小,與有關(guān)數(shù)字量的權(quán)重密切相關(guān)。如圖10.19所示,S3、S2、S1和S0的狀態(tài)分別受代碼d3、d2、d1和d0的取值控制,代碼為1時(shí),開關(guān)接到參考電壓Vref上,代碼為0時(shí)開關(guān)接地。在運(yùn)算放大器輸入電流為零的條件下可得:由于V-≈0,因而各支路電流分別為:2、倒T形電阻D/A轉(zhuǎn)換器如圖10.20所示,由圖可知,電阻網(wǎng)絡(luò)中只有R、2R兩種阻值的電阻,這給集成電路的設(shè)計(jì)和制作帶來了很大的方便。如圖10.21所示,從AA、BB、CC、DD每個(gè)端口向左看過去的等效電阻都是R,因此參考電源流入倒T形電阻網(wǎng)絡(luò)的總電流為I=VREF/R,而每個(gè)支路的電流依次為:I/2,I/4,I/8,I/16。3、權(quán)電流型D/A轉(zhuǎn)換器在分析電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器和倒T型電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器的過程中,都把模擬開關(guān)作為理想開關(guān)處理,但實(shí)際中每個(gè)開關(guān)都有一定的導(dǎo)通電阻和導(dǎo)通壓降,而且每個(gè)開關(guān)的情況也不完全相同,這些問題的存在會(huì)引起轉(zhuǎn)換誤差,影響轉(zhuǎn)換精度,所以出現(xiàn)了權(quán)電流型D/A轉(zhuǎn)換器。10.2.2D/A轉(zhuǎn)換技術(shù)指標(biāo)1、分辨率分辨率是指D/A轉(zhuǎn)換器能分辨的最小輸出模擬增量,取決于輸入數(shù)字量的二進(jìn)制位數(shù)。一個(gè)n位的DAC所能分辨的最小電壓增量定義為滿量程值得2-n倍。例如,滿量程為10V的8位DAC芯片的分辨率為10V2-8=39mV;一個(gè)同樣量程的16位的分辨率高達(dá)10V2-16=153μV。轉(zhuǎn)換精度2、轉(zhuǎn)換精度轉(zhuǎn)換精度和分辨率是兩個(gè)不同的概念。轉(zhuǎn)換精度是指滿量程時(shí)DAC的實(shí)際模擬輸出值和理論值的接近程度。對(duì)T型電阻網(wǎng)絡(luò)的DAC,其轉(zhuǎn)換精度與參考電壓VREF、電阻值和電子開關(guān)的誤差有關(guān)。例如,滿量程時(shí)理論輸出值為10V,實(shí)際輸出值在9.99~10.01V之間,其轉(zhuǎn)換精度為

10mV。通常,DAC的轉(zhuǎn)換精度為分辨率的一半,即為L(zhǎng)SB/2。LSB即為分辨率,指最低1位數(shù)字量變化引起輸出電壓幅度的變化量。3、偏移量誤差偏移量誤差是指輸入數(shù)字量為零時(shí),輸出模擬量對(duì)零的偏移值。這種誤差通??梢酝ㄟ^DAC的外接VREF和電位器加以調(diào)整。4、線性度線性度是指DAC的實(shí)際轉(zhuǎn)換特性曲線和理想直線之間的最大偏差。通常,線性度不應(yīng)超出

。除上述指標(biāo)外,轉(zhuǎn)換速度和溫度靈敏度也是DAC得重要技術(shù)參數(shù)。不過,因?yàn)樗麄兌急容^小,通常情況下可以不予考慮。10.2.3并行轉(zhuǎn)換芯片MAX526MAX526D/A芯片是Maxim公司生產(chǎn)的12位、4路高精密并行數(shù)模轉(zhuǎn)換器。數(shù)據(jù)通過兩次寫操作(低8位LSB,高4位MSB)裝入各輸入寄存器。并通過異步裝載輸入信號(hào)將輸入寄存器數(shù)據(jù)裝入寄存器。建立時(shí)間為3μs,1LSB不可校正誤差的優(yōu)點(diǎn),使其廣泛地應(yīng)用在工業(yè)處理控制、自動(dòng)測(cè)試設(shè)備等方面。其主要性能指標(biāo)如下:分辨率為12位并行輸入

總不可校正線性誤差為

1LSB4路單端電壓輸出型外接基準(zhǔn)源,可接DC或AC信號(hào)與TCL/CMOS芯片兼容最小轉(zhuǎn)換時(shí)間為3μs,由內(nèi)部或外部采集控制模擬量輸出,輸出電壓為,NB的值為000H~FFFH與VOUT的0~10V對(duì)應(yīng)。主要引腳及功能:輸出端:4通道電壓型模擬量輸出引腳VOUTA~VOUTD電源信號(hào):AGND(模擬地)、DGND(數(shù)字地)、VSS(-5V)、VDD(+12V)控制信號(hào):CSMSB、CSLSB(高低字節(jié)位選擇,當(dāng)CSLSB為0時(shí)低8位數(shù)據(jù)輸出;CSMSB為0時(shí),高4位數(shù)據(jù)輸出)、LDAC(為0時(shí)將各自輸入寄存器的內(nèi)容轉(zhuǎn)換到它各自獨(dú)立的DAC寄存器中)、A0A1(通道選擇)數(shù)據(jù)線:D0~D7、D8~D11與D0~D3復(fù)用基準(zhǔn)信號(hào)源:REFAB(A、B模擬量基準(zhǔn)輸入)、REFCD(C、D模擬量基準(zhǔn)輸入)從圖10.25MAX526的內(nèi)部結(jié)構(gòu)中可以看出此D/A數(shù)模轉(zhuǎn)換器內(nèi)部結(jié)構(gòu)共有四組配置一樣的電路。且每組電路中的12位分為低8位和高4位兩個(gè)寄存器;通過A0(PIN18)和A1(PIN17)選擇以便區(qū)分訪問的是VOUTA~VOUTD。通過CSLSB(PIN21)、CSMSB(PIN22)、WR(PIN20)三個(gè)信號(hào)將轉(zhuǎn)換數(shù)據(jù)裝入各個(gè)輸入寄存器,并區(qū)分寫入的數(shù)據(jù)是高位還是低位輸入寄存器,具體的操作參考表10.6。CSLSB、CSMSB、WR從數(shù)據(jù)總線加載到由A0和A1選擇的輸入寄存器。拉低CSLSB、WR可以將輸入寄存器的低8位進(jìn)行加載,而拉低CSMSB、WR可將高4位進(jìn)行加載。數(shù)據(jù)加載到輸入寄存器中的順序并不重要。重要的是通過將CSLSB、CSMSB、WR拉低,可以同時(shí)將輸入寄存器的12位進(jìn)行加載。請(qǐng)注意,數(shù)據(jù)將分別寫入4MSBs(D8~D11)和4LSBs(D3~D0)。圖10.26為MAX526的輸入控制邏輯。MAX526與單片機(jī)的接口電路單片機(jī)的P0口用作數(shù)據(jù)口,注意設(shè)計(jì)P0口時(shí)需要添加上拉電阻;P2口的P2.2~P2.7和MAX526的控制信號(hào)線相連接A1、A0為通道選擇;A1=0,A0=0選通A通道,A1=0,A0=1選通B通道,A1=1,A0=0選通C通道,A1=1,A0=1選通D通道,DATA_M為輸入的數(shù)據(jù),先輸入低8位,后輸入高4位。#include<reg52.h>#include<intrins.h>#defineDATA_MP0#defineucharunsignedcharsbitWR=P2^2;sbitA0=P2^3;sbitA1=P2^4;sbitCSMSB=P2^5;sbitCSLSB=P2^6;sbitLDAC=P2^7;voidmax526()

/*驅(qū)動(dòng)函數(shù)*/{DATA_M=0x0F;//可根據(jù)要求輸出所需要的數(shù)據(jù)A1=1;//選擇的C通道A0=0;CSMSB=0;CSLSB=0;WR=0;_nop_();_nop_();WR=1;DATA_M=0x0F;//可根據(jù)要求輸出所需要的數(shù)據(jù)CSMSB=0;CSLSB=1;WR=0;_nop_();_nop_();WR=1;_nop_();_nop_();LDAC=0;}voidmain(){ max526(); while(1);}9.2.2并行D/A轉(zhuǎn)換器件DAC08321、DAC0832的內(nèi)部結(jié)構(gòu)DAC0832是采用CMOS工藝制成的單片直流輸出型8位數(shù)/模轉(zhuǎn)換器。如圖9-11所示,它由倒T型R-2R電阻網(wǎng)絡(luò)、模擬開關(guān)、運(yùn)算放大器和參考電壓VREF四大部分組成。運(yùn)算放大器輸出的模擬量V0為:

主要性能指標(biāo):(1)分辨率:8位(2)輸出穩(wěn)定時(shí)間:1μs(3)功耗:20mw(4)工作電源:+5V~+15V(5)非線性誤差:0.2%(6)工作方式:直通、單緩沖、雙緩沖4、DAC0832的應(yīng)用舉例【例9-1】:應(yīng)用DAC0832設(shè)計(jì)一個(gè)鋸齒波信號(hào)發(fā)生器。#include<absacc.h>#include<reg52.h>#include<intrins.h>#defineDAC0832XBYTE[0xfeff]intnum;voidmain(){while(1){for(num=0;num<255;num++)//DAC0832=num; {P2=num;}}}【例9-2】按圖9-15連接電路生成三角波。分析:三角波數(shù)據(jù)從0增加到FFH后,再依次減,減到0后再依次加,反復(fù)循環(huán)可產(chǎn)生三角波。程序如下:#include<absacc.h>#include<reg52.h>#include<intrins.h>intnum;voidmain(){while(1){for(num=0;num<255;num++) {P2=num;}for(num=254;num>=0;num--){P2=num;}}}9.3生成正弦波#include<absacc.h>#include<math.h>#include<reg51.h>#definepi 3.14voidmain(){ inti; floatT;

while(1) { for(i=0;i<256;i++) { T=pi*i/32; T=100*sin(T)+100; P0=(int)T; }//主函數(shù)

}}9.2.3串行D/A轉(zhuǎn)換器件TLC5615TLC5615為美國(guó)德州儀器公司1999年推出的產(chǎn)品,是具有串行接口的數(shù)模轉(zhuǎn)換器,其輸出為電壓型,最大輸出電壓是基準(zhǔn)電壓值的兩倍。帶有上電復(fù)位功能,即把DAC寄存器復(fù)位至全零。1、TLC5615的特點(diǎn)(1)10位CMOS電壓輸出;(2)5V單電源供電;(3)與CPU三線串行接口;(4)最大輸出電壓可達(dá)基準(zhǔn)電壓的二倍;(5)輸出電壓具有和基準(zhǔn)電壓相同極性;(6)建立時(shí)間12.5μs;(7)內(nèi)部上電復(fù)位;(8)低功耗,最大僅1.75mW。

2、TLC5615引腳說明TLC5615有小型和塑料DIP封裝,DIP封裝的TLC5615芯片引腳排列如圖所示。引腳功能說明如下:腳1DIN:串行數(shù)據(jù)輸入端;腳2SCLK:串行時(shí)鐘輸入端;腳3CS:芯片選用通端,低電平有效;腳4DOUT:用于級(jí)聯(lián)時(shí)的串行數(shù)據(jù)輸出端;腳5AGND:模擬地;腳6REFIN:基準(zhǔn)電壓輸入端;腳7OUT:DAC模擬電壓輸出端;腳8VDD:正電源端。3、TLC5615的時(shí)序分析TLC5615的時(shí)序如圖所示。由時(shí)序圖可以看出,當(dāng)片選CS為低電平時(shí),輸入數(shù)據(jù)DIN由時(shí)鐘SCLK同步輸入或輸出,而且最高有效位在前,低有效位在后。輸入時(shí)SCLK的上升沿把串行輸入數(shù)據(jù)DIN移入內(nèi)部的16位移位寄存器,SCLK的下降沿輸出串行數(shù)據(jù)DOUT,片選CS的上升沿把數(shù)據(jù)傳送至DAC寄存器。當(dāng)片選CS為高電平時(shí),串行輸入數(shù)據(jù)DIN不能由時(shí)鐘同步送入移位寄存器;輸出數(shù)據(jù)DOUT保持最近的數(shù)值不變而不進(jìn)入高阻狀態(tài)。由此要想串行輸入數(shù)據(jù)和輸出數(shù)據(jù)必須滿足兩個(gè)條件:第一時(shí)鐘SCLK的有效跳變;第二片選CS為低電平。這里,為了使時(shí)鐘的內(nèi)部饋通最小,當(dāng)片選CS為高電平時(shí),輸入時(shí)鐘SCLK應(yīng)當(dāng)為低電平。串行數(shù)模轉(zhuǎn)換器TLC5615的使用有兩種方式,即級(jí)聯(lián)方式和非級(jí)聯(lián)方式。如不使用級(jí)聯(lián)方式,DIN只需輸入12位數(shù)據(jù)。DIN輸入的12位數(shù)據(jù)中,前10位為TLC5615輸入的D/A轉(zhuǎn)換數(shù)據(jù),且輸入時(shí)高位在前,低位在后,后兩位必須寫入數(shù)值為零的低于LSB的位,因?yàn)門LC5615的DAC輸入鎖存器為12位寬。如果使用TL5615的級(jí)聯(lián)功能,來自DOUT的數(shù)據(jù)需要輸入16位時(shí)鐘下降沿,因此完成一次數(shù)據(jù)輸入需要16個(gè)時(shí)鐘周期,輸入的數(shù)據(jù)也應(yīng)為16位。輸入的數(shù)據(jù)中,前4位為高虛擬位,中間10位為D/A轉(zhuǎn)換數(shù)據(jù),最后2位為低于LSB的位即零。4、應(yīng)用電路實(shí)例圖給出了在開關(guān)電源中,TLC5615和51單片機(jī)的接口電路。在電路中,51單片機(jī)的P3.0-P3.2分別控制TLC5615的片選CS,串行時(shí)鐘輸入SCLK和串行數(shù)據(jù)輸入DIN。電路的連接采用非級(jí)聯(lián)方式。根據(jù)開關(guān)電源的設(shè)計(jì)要求,可變基準(zhǔn)電壓范圍為0V~4V。因此,TLC5615的基準(zhǔn)電壓選為2.048V,其最大模擬輸出電壓為4.096V。可滿足開關(guān)電源的要求。TLC5615采用非級(jí)聯(lián)方式,將要輸入的12位數(shù)據(jù)存在R0、R1寄存器中,其D/A轉(zhuǎn)換程序如下:CLRP3.0;片選有效MOVR2,#4;將要送入的前四位數(shù)據(jù)位數(shù)MOVA,R0;前四位數(shù)據(jù)送累加器低四位SWAPA;A中高四位與低四位互換LCALLWRdata;DIN輸入前四位數(shù)據(jù)MOVR2,#8;將要送入的后八位數(shù)據(jù)位數(shù)MOVA,R1;八位數(shù)據(jù)送入累加器ALCALLWRdata;DIN輸入后八位數(shù)據(jù)CLRP3.1;時(shí)鐘低電平SETBP3.0;片選高電平,輸入的12位數(shù)據(jù)有效END

結(jié)束送數(shù)子程序如下:WRdata:NOP

;空操作LOOP:CLRP3.1;時(shí)鐘低電平

RLCA;數(shù)據(jù)送入位標(biāo)志位CY

MOVP3.2,C;數(shù)據(jù)輸入有效

SETBP3.1;時(shí)鐘高電平

DJNZR2,LOOP;循環(huán)送數(shù)

RET

;返回5、結(jié)語由于采用接口簡(jiǎn)單的模擬數(shù)字轉(zhuǎn)換器TLC5615,使得開關(guān)電源的硬件電路大為簡(jiǎn)化,線路板面積縮小,成本降低。10.2.5設(shè)計(jì)一波形發(fā)生器利用單片機(jī)和TLC5615芯片設(shè)計(jì)出能產(chǎn)生鋸齒波、正弦波、方波的信號(hào)發(fā)生器,系統(tǒng)中設(shè)計(jì)三個(gè)按鍵,分別是產(chǎn)生鋸齒波、正弦波、方波的觸發(fā)器。按下一次觸發(fā)信號(hào)發(fā)生器發(fā)出相關(guān)信號(hào),再按一下,將停止。其電路圖如10.33所示。電路的P2.0~P2.2接TLC5615的DIN、SCLK、CS;P1.0~P1.2接按鍵。單片機(jī)與TLC5615連接圖#include<reg51.h>#include<intrins.h>#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint#definepi3.14/**********相關(guān)端口設(shè)計(jì)*************/sbitDIN=P2^0; //TLC5615傳輸口sbitSCLK=P2^1; //TLC5615時(shí)鐘線sbitCS=P2^2; //TLC5615片選sbitKEY1=P1^0; //方波sbitKEY2=P1^1; //鋸齒波sbitKEY3=P1^2; //正弦波/*******延時(shí)函數(shù)****/voiddelayms(uintz){

uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddelayus(uinti){

uintj; for(i=j;j>0;j--);}/**TLC5615的驅(qū)動(dòng)程序****/voidoutput(uintDA_Value) {unsignedchari;DA_Value=DA_Value<<6;SCLK=0; //為低,準(zhǔn)備輸入數(shù)據(jù)CS=0;//片選for(i=12;i>0;i--)//從高位開始,連續(xù)取出12位數(shù)據(jù){if(DA_Value&0x8000)DIN=1;elseDIN=0;

SCLK=1; //上升沿,準(zhǔn)備輸入寄存器SCLK=0;//準(zhǔn)備下一次輸入DA_Value=DA_Value<<1;}CS=1; //在SCLK為低的時(shí)候,CS上升沿,數(shù)據(jù)開始DA轉(zhuǎn)化。}/*****主函數(shù)********/voidmain(){ uchari; uintj;floatT; while(1) {if(KEY1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論