數(shù)模轉(zhuǎn)換器與模數(shù)轉(zhuǎn)換器_第1頁
數(shù)模轉(zhuǎn)換器與模數(shù)轉(zhuǎn)換器_第2頁
數(shù)模轉(zhuǎn)換器與模數(shù)轉(zhuǎn)換器_第3頁
數(shù)模轉(zhuǎn)換器與模數(shù)轉(zhuǎn)換器_第4頁
數(shù)模轉(zhuǎn)換器與模數(shù)轉(zhuǎn)換器_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1/105

第9章數(shù)模轉(zhuǎn)換器與模數(shù)轉(zhuǎn)換器本章學(xué)習(xí)目標(biāo)了解數(shù)模轉(zhuǎn)換器的工作原理及性能指標(biāo)掌握模數(shù)轉(zhuǎn)換器的應(yīng)用了解數(shù)模轉(zhuǎn)換器的工作原理及性能指標(biāo)掌握數(shù)模轉(zhuǎn)換器的應(yīng)用2/105隨著數(shù)字電子技術(shù)及計算機技術(shù)的廣泛普及與應(yīng)用,數(shù)字信號的傳輸與處理日趨普遍。自然形態(tài)下的物理量多以模擬量的形式存在的,如溫度、濕度、壓力、流量、速度等,實際生產(chǎn)、生活和科學(xué)實驗中還會遇到化學(xué)量、生物量(包括醫(yī)學(xué))等。從信號工程的角度來看,要進(jìn)行信號的計算機處理,上述所有的物理量、化學(xué)量和生物量等都需要使用相應(yīng)的傳感器,將其轉(zhuǎn)換成電信號(稱之為模擬量)將模擬量轉(zhuǎn)換為計算機能夠識別處理的數(shù)字量,而后再進(jìn)行信號的傳輸、處理、存儲、顯示和控制。3/105同樣,計算機控制外部設(shè)備時,如電動調(diào)節(jié)閥、調(diào)速系統(tǒng)等,需要將計算機輸出的數(shù)字信號變換成外設(shè)能夠接受的模擬信號。將模擬量轉(zhuǎn)換成數(shù)字量的器件稱為模數(shù)轉(zhuǎn)換器(AnalogtoDigitalConverter,ADC),也稱為A/D轉(zhuǎn)換器或者ADC器件;將數(shù)字量轉(zhuǎn)換成模擬量的器件稱為數(shù)模轉(zhuǎn)換器(DigitaltoAnalogConverter,DAC),也稱為D/A轉(zhuǎn)換器。4/105以單片機為核心,具有模擬量輸入和輸出的應(yīng)用系統(tǒng)結(jié)構(gòu)如圖所示。圖9-1具有模擬量輸入輸出的單片機系統(tǒng)5/105傳感器和變送器的區(qū)別檢測儀表在模擬電子技術(shù)條件下,一般是包括傳感器、檢測點取樣設(shè)備及放大器(進(jìn)行抗干擾處理及信號傳輸),當(dāng)然還有電源及現(xiàn)場顯示部分(可選擇)。傳感器是一種把非電量轉(zhuǎn)變成電信號的器件。電信號一般分為連續(xù)量、離散量兩種,實際上還可分成模擬量、開關(guān)量、脈沖量等。6/105模擬信號一般采用4-20mADC的標(biāo)準(zhǔn)信號傳輸。數(shù)字化過程中,常常把傳感器和微處理器及通信網(wǎng)絡(luò)接口封裝在一個器件(稱為檢測儀表)中,完成信息獲取、處理、傳輸、存貯等功能。在自動化儀表中經(jīng)常把檢測儀表稱為變送器,如溫度變送器、壓力變送器等。7/105本章內(nèi)容安排本章首先介紹模數(shù)轉(zhuǎn)換器的工作原理及性能指標(biāo);然后介紹模數(shù)轉(zhuǎn)換器ADS7852與單片機的接口方法及編程應(yīng)用,介紹STC15F2K60S2單片機片內(nèi)集成模數(shù)轉(zhuǎn)換模塊的使用;最后介紹數(shù)模轉(zhuǎn)換器TLV5616與單片機的接口方法及編程應(yīng)用。8/105§9.1模數(shù)轉(zhuǎn)換器的工作原理及性能指標(biāo)一、模數(shù)轉(zhuǎn)換器的工作原理根據(jù)轉(zhuǎn)換的工作原理不同,模數(shù)轉(zhuǎn)換器可以分為計數(shù)-比較式、逐次逼近式和雙斜率積分式。計數(shù)-比較式模數(shù)轉(zhuǎn)換器結(jié)構(gòu)簡單,價格便宜,轉(zhuǎn)換速度慢,較少采用。下面主要介紹逐次逼近式和雙斜率積分式模數(shù)轉(zhuǎn)換器的工作原理。9/1051、逐次逼近式模數(shù)轉(zhuǎn)換器的工作原理逐次逼近式模數(shù)轉(zhuǎn)換器電路框圖如圖所示。圖9-2逐次逼近式模數(shù)轉(zhuǎn)換器的工作原理10/105逐次逼近式模數(shù)轉(zhuǎn)換器主要由逐次逼近寄存器SAR、數(shù)字/電壓轉(zhuǎn)換器、比較器、時序及控制邏輯等部分組成。11/105工作過程當(dāng)模數(shù)轉(zhuǎn)換器收到“轉(zhuǎn)換命令”并清除SAR寄存器后,控制電路先設(shè)定SAR中的最高位為“1”,其余位為“0”,此預(yù)測數(shù)據(jù)被送至D/A轉(zhuǎn)換器,轉(zhuǎn)換成電壓Vc。然后將Vc與輸入模擬電壓Vx在高增益的比較器中進(jìn)行比較,比較器的的輸出為邏輯0或邏輯1。如果Vx≥Vc,說明此位置“1”是對的,應(yīng)予保留;如果Vx<Vc,說明此位置“1”不合適,應(yīng)予清除。按該方法繼續(xù)對次高位進(jìn)行轉(zhuǎn)換、比較和判斷,決定次高位應(yīng)取“1”還是取“0”。重復(fù)上述過程,直至確定SAR最低位為止。該過程完成后,狀態(tài)線改變狀態(tài),表示已完成一次完整的轉(zhuǎn)換,SAR中的內(nèi)容就是與輸入的模擬電壓對應(yīng)的二進(jìn)制數(shù)字代碼。12/1052、雙積分式模數(shù)轉(zhuǎn)換器的工作原理雙積分式模數(shù)轉(zhuǎn)換器轉(zhuǎn)換方法的抗干擾能力比逐次逼近式模數(shù)轉(zhuǎn)換器強。該方法的基礎(chǔ)是測量兩個時間:一個是模擬輸入電壓向電容充電的固定時間另一個是在已知參考電壓下放電所需的時間模擬輸入電壓與參考電壓的比值就等于上述兩個時間值之比。13/105雙積分模數(shù)轉(zhuǎn)換器的組成框圖如圖所示。圖9-3雙積分式模數(shù)轉(zhuǎn)換器的組成框圖14/105雙積分式模數(shù)轉(zhuǎn)換器優(yōu)點具有精度高、抗干擾能力強的特點,在實際工程中得到了使用。由于逐次逼近式模數(shù)轉(zhuǎn)換技術(shù)能很好的兼顧速度和精度,故在16位以下的模數(shù)轉(zhuǎn)換器中得到了廣泛應(yīng)用。15/105二、模數(shù)轉(zhuǎn)換器的性能指標(biāo)A/D轉(zhuǎn)換器是實現(xiàn)單片機數(shù)據(jù)采集的常用外圍器件。A/D轉(zhuǎn)換器的品種繁多,性能各異,在設(shè)計數(shù)據(jù)采集系統(tǒng)時,首先碰到的問題就是如何選擇合適的A/D轉(zhuǎn)換器以滿足系統(tǒng)設(shè)計的要求。選擇A/D轉(zhuǎn)換器需要綜合考慮多項因素,如系統(tǒng)技術(shù)指標(biāo)、成本、功耗、安裝等。16/1051、分辨率分辨率是A/D轉(zhuǎn)換器能夠分辨最小信號的能力,表示數(shù)字量變化一個相鄰數(shù)碼所需輸入模擬電壓的變化量。分辨率越高,轉(zhuǎn)換時對輸入模擬信號變化的反應(yīng)就越靈敏。17/105例如,8位A/D轉(zhuǎn)換器能夠分辨出滿刻度的1/256,若滿刻度輸入電壓為5V,則該8位A/D轉(zhuǎn)換器能夠分辨出輸入電壓變化的最小值為19.5mV。分辨率常用A/D轉(zhuǎn)換器輸出的二進(jìn)制位數(shù)表示。常見的A/D轉(zhuǎn)換器有8位、10位、12位、14位和16位等。18/105一般把8位以下的ADC器件歸為低分辨率ADC器件;9~12位的ADC器件稱為中分辨率ADC器件;13位以上的ADC器件稱為高分辨率ADC器件。如何選擇

10位以下的ADC器件誤差較大,11位以上對減小誤差并無太大貢獻(xiàn),但對ADC器件的要求卻提得過高。因此,取10位或11位是合適的。由于模擬信號先經(jīng)過測量裝置,再經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換后才進(jìn)行處理,因此,總的誤差是由測量誤差和量化誤差共同構(gòu)成的。19/105A/D轉(zhuǎn)換器的精度應(yīng)與測量裝置的精度相匹配。一方面要求量化誤差在總誤差中所占的比重要小,使它不顯著地擴大測量誤差;另一方面必須根據(jù)目前測量裝置的精度水平,對A/D轉(zhuǎn)換器的位數(shù)提出恰當(dāng)?shù)囊蟆?0/1052、通道有的單芯片內(nèi)部含有多個ADC模塊,可同時實現(xiàn)多路信號的轉(zhuǎn)換;常見的多路ADC器件只有一個公共的ADC模塊,由一個多路轉(zhuǎn)換開關(guān)實現(xiàn)分時轉(zhuǎn)換。3、基準(zhǔn)電壓基準(zhǔn)電壓有內(nèi)、外基準(zhǔn)和單、雙基準(zhǔn)之分。21/1054、轉(zhuǎn)換速率轉(zhuǎn)換時間:A/D轉(zhuǎn)換器從啟動轉(zhuǎn)換到轉(zhuǎn)換結(jié)束,輸出穩(wěn)定的數(shù)字量,需要的一定的轉(zhuǎn)換時間。轉(zhuǎn)換速率:轉(zhuǎn)換時間的倒數(shù)就是每秒鐘能完成的轉(zhuǎn)換次數(shù)。A/D轉(zhuǎn)換器的型號不同,轉(zhuǎn)換時間不同。逐次逼近式單片A/D轉(zhuǎn)換器轉(zhuǎn)換時間的典型值為1.0~200μs。22/105應(yīng)根據(jù)輸入信號的最高頻率來確定ADC轉(zhuǎn)換速度,保證轉(zhuǎn)換器的轉(zhuǎn)換速率要高于系統(tǒng)要求的采樣頻率。確定A/D轉(zhuǎn)換器的轉(zhuǎn)換速率時,應(yīng)考慮系統(tǒng)的采樣速率。例如,如果用轉(zhuǎn)換時間為100μs的A/D轉(zhuǎn)換器,則其轉(zhuǎn)換速率為10KHz。根據(jù)采樣定理和實際需要,一個周期的波形需采10個樣點,那么這樣的A/D轉(zhuǎn)換器最高也只有處理頻率為1KHz的模擬信號。對一般的單片機而言,在如此高的采樣頻率下,要在采樣時間內(nèi)完成A/D轉(zhuǎn)換以外的工作,如讀取數(shù)據(jù)、再啟動、保存數(shù)據(jù)、循環(huán)計數(shù)等已經(jīng)比較困難了。23/1055、采樣/保持器采樣/保持也稱為跟蹤/保持(Track/Hold縮寫T/H)。原則上采集直流和變化非常緩慢的模擬信號時可不用采樣保持器。對于其他模擬信號一般都要加采樣保持器。如果信號頻率不高,A/D轉(zhuǎn)換器的轉(zhuǎn)換時間短,即使用高速A/D轉(zhuǎn)換器時,也可不用采樣/保持器。24/1056、量程量程即所能轉(zhuǎn)換的電壓范圍,如2.5V、5V和10V。7、滿刻度誤差滿度輸出時對應(yīng)的輸入信號與理想輸入信號值之差稱為滿刻度誤差。8、線性度實際轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏移稱為線性度。25/1059、數(shù)字接口方式根據(jù)轉(zhuǎn)換的數(shù)據(jù)輸出接口方式,A/D轉(zhuǎn)換器可以分為并行接口和串行接口兩種方式。并行方式一般在轉(zhuǎn)換后可直接接收,但芯片的引腳比較多;串行方式所用芯片引腳少,封裝小,但需要軟件處理才能得到所需要的數(shù)據(jù)。在單片機I/O引腳不多的情況下,使用串行器件可以節(jié)省I/O資源。但是并行器件具有明顯的轉(zhuǎn)換速度優(yōu)勢。在轉(zhuǎn)換速度要求較高的情況下應(yīng)選用并行器件。26/10510、模擬信號類型通常ADC器件的模擬輸入信號都是電壓信號。同時根據(jù)信號是否過零,還分成單極性(Unipolar)信號和雙極性(Bipolar)信號。11、電源電壓電源電壓有單電源,雙電源和不同電壓范圍之分,早期的ADC器件要有+15V/-15V,如果選用單+5V電源的芯片則可以使用單片機系統(tǒng)電源。27/10512、功耗一般CMOS工藝的芯片功耗較低,對于電池供電的手持系統(tǒng)對功耗要求比較高的場合一定要注意功耗指標(biāo)。13、封裝常見的封裝有雙列直插封裝(DualIn-linePackage,DIP)和表貼型(SurfaceMountDevices,SMD)封裝。28/105§9.2模數(shù)轉(zhuǎn)換器的應(yīng)用

本節(jié)首先分別介紹德州儀器公司生產(chǎn)的A/D轉(zhuǎn)換器ADS7852的應(yīng)用方法,然后介紹STC15F2K60S2單片機片內(nèi)集成的ADC模塊的使用。29/105一、12位并行A/D轉(zhuǎn)換器ADS7852及其應(yīng)用1、ADS7852簡介ADS7852是德州儀器公司(TexasInstruments,TI)生產(chǎn)的一款高速逐次逼近式A/D轉(zhuǎn)換器。30/105具有以下主要特點:帶有采樣保持器具有8路模擬量輸入、并行12位輸出內(nèi)部帶有2.5V的參考電壓源,輸入的采樣電壓可以從0V到2倍的參考電壓值500kHz的采樣頻率,轉(zhuǎn)換時間最大只需1.75μs單極性5V工作電壓低功耗:13mW封裝形式為TQFP工作溫度為-40℃到+80℃31/105ADS7852的引腳圖如圖所示。圖9-4ADS7852的引腳圖32/105各引腳的功能介紹如下:AIN0~AIN7:8路模擬量輸入引腳。DB0~DB11:12位數(shù)字量輸出,其中DB0為最低位,DB11為最高位。A0~A2:8路模擬輸入的地址選擇。Vss:電源電壓,正常接+5V。VREF:外接參考電壓。若不用外接參考電壓,可在此引腳和電源地之間接2.2μF和0.1μF去耦電容各一個。AGND和DGND:分別為模擬地和數(shù)字地。CLK:外部時鐘輸入(200KHz~8MHz),時鐘的選擇取決于采樣速度fCLK=16*fSAMPLE。33/105

:忙指示輸出,低電平有效。轉(zhuǎn)換期間保持低電平,轉(zhuǎn)換結(jié)束后變?yōu)楦唠娖?。:片選信號,輸入,低電平有效。/CS和/WR變低時,開始一次新的轉(zhuǎn)換。:讀信號,輸入,低電平有效。/RD和/CS一起有效時用來讀取轉(zhuǎn)換后的數(shù)據(jù)。也用來設(shè)置使芯片工作于省電模式。:寫信號,輸入,低電平有效。/WR與/CS同時有效時開始一次新的轉(zhuǎn)換,也用來選擇模擬量輸入通道。34/1052、ADS7852的內(nèi)部結(jié)構(gòu)ADS7852的內(nèi)部結(jié)構(gòu)如圖所示。圖9-5ADS7852的內(nèi)部結(jié)構(gòu)圖35/105ADS7852是逐次逼近型A/D轉(zhuǎn)換器一個8通道模擬開關(guān)通信雙向存取控制器(CDAC)比較器(Comparator)逐次比較邏輯寄存器(SAR)內(nèi)部基準(zhǔn)電壓源參考電壓緩沖器輸出鎖存和三態(tài)驅(qū)動器等。轉(zhuǎn)換結(jié)果通過三態(tài)并行數(shù)據(jù)總線輸出。36/105工作過程首先置低引腳,然后通過設(shè)置A2、A1和A0的值來選擇輸入通道(000~111分別對應(yīng)0~7通道),置低/WR引腳開始啟動A/D轉(zhuǎn)換。在A/D轉(zhuǎn)換期間,/BUSY引腳輸出低電平并保持到轉(zhuǎn)換結(jié)束。轉(zhuǎn)換完成后,/BUSY引腳輸出變?yōu)楦唠娖?,在DB11~DB0上輸出12位有效數(shù)據(jù),等待處理器讀取,一次轉(zhuǎn)換完成。/BUSY引腳的上升沿可以鎖存12位轉(zhuǎn)換數(shù)據(jù)。需要注意的是,在A/D轉(zhuǎn)換之后,當(dāng)/RD和/CS變?yōu)楦唠娖綍r,A1和A0腳應(yīng)保持低電平,否則ADS7852將進(jìn)入掉電模式。37/1053、通道選擇ADS7852有8路輸入,通過設(shè)置A0、A1、A2來選擇哪一路輸入,具體的選擇控制字如表所示。A2A1A0通道號000通道0001通道1010通道2011通道3100通道4101通道5110通道6111通道7表9-1ADS7852的通道選擇控制字38/1054、ADS78752的接口應(yīng)用【例9-1】ADS78752與STC12C5A60S2單片機的接口電路如圖所示。圖9-6ADS78752的接口連接39/105硬件電路說明由于ADS7852是12位輸出,而STC12C5A60S2單片機的數(shù)據(jù)線只有8位,所以使用STC12C5A60S2的P0口與ADS7852的低8位數(shù)據(jù)(DB0~DB7)相連。ADS7852的高4位(DB8~DB11)通過鎖存器74LS573與STC12C5A60S2的Pl口低4位(P1.0~P1.3)相連。40/105當(dāng)A/D轉(zhuǎn)換結(jié)束STC12C5A60S2讀取轉(zhuǎn)換結(jié)果時,數(shù)據(jù)的低8位(DB0~DB7)被直接讀入STC12C5A60S2內(nèi)部,而在/RD信號的上升沿,數(shù)據(jù)的高4位(DB8~DB11)被74HC573鎖存在STC12C5A60S2的Pl口低4位(P1.0~P1.3),等待被讀取。STC15F2K60S2單片機的時鐘輸出CLKOUT0作為ADS7852的時鐘,頻率設(shè)置為250KHz。41/105ADS7852的/BUSY信號與STC15F2K60S2的P3.2連接。在A/D轉(zhuǎn)換結(jié)束后,通知STC15F2K60S2及時讀取數(shù)據(jù)。在電路設(shè)計中,一般在Vss和地之間接一個0.1uF的瓷片電容和10uF的鉭電容,起濾波和解耦的作用。42/105示例程序代碼如下:#include"stc15.h"http://包含STC15F2K60S2單片機寄存器定義文件//P2.7為片選信號;P3.5/T0CLK0為提供AD轉(zhuǎn)換時鐘sbitbusy=P3^2;//P3.2為AD轉(zhuǎn)換狀態(tài)檢測位sbitA0=P1^5;//P1.5,P1.6,P1.7為通道選擇位sbitA1=P1^6;sbitA2=P1^7; voidmain(void){intADdata; charhighdata,lowdata; charxdata*ADS7852;ADS7852=0x7fff; //AD7852的地址

TMOD=0x02; //T0工作在方式2,8位自動重裝

TH0=254; //12/12/2/2=0.25MHZ INT_CLKO=INT_CLKO|0x1; //T0輸出時鐘

TR0=1; //啟動T0 A0=0;A1=0;A2=0; //選擇通道0 *ADS7852=0x00; //寫操作,開始AD轉(zhuǎn)換43/105while(1) {if(busy==1) //判斷是否轉(zhuǎn)換完畢

{ lowdata=*ADS7852; ADdata=P1; ADdata=(ADdata<<8)+lowdata; //數(shù)據(jù)處理*ADS7852=0x00; //開始下一次AD轉(zhuǎn)換

} }}44/105二、STC15F2K60S2集成的A/D模塊的結(jié)構(gòu)及其使用STC15F2K60S2單片機集成有8路10位高速電壓輸入型模數(shù)轉(zhuǎn)換器(ADC),速度可達(dá)到300KHz(30萬次/秒),可做溫度檢測、壓力檢測、電池電壓檢測、按鍵掃描、頻譜檢測等。45/1051、模數(shù)轉(zhuǎn)換器的結(jié)構(gòu)及相關(guān)寄存器STC15F2K60S2單片機片內(nèi)集成8通道10位模數(shù)轉(zhuǎn)換器(ADC)。ADC輸入通道與P1口復(fù)用,上電復(fù)位后P1口為弱上拉型I/O口,用戶可以通過軟件設(shè)置將8路中的任何一路設(shè)置為ADC功能,不作為ADC使用的口可繼續(xù)作為I/O口使用。46/105(1)模數(shù)轉(zhuǎn)換器的結(jié)構(gòu)STC15F2K60S2單片機ADC的結(jié)構(gòu)如圖所示。圖9-7STC15F2K60S2單片機ADC結(jié)構(gòu)圖

47/105STC15F2K60S2的ADC組成多路選擇開關(guān)比較器逐次比較寄存器10位DAC轉(zhuǎn)換結(jié)果寄存器(ADC_RES和ADC_RESL)ADC控制寄存器ADC_CONTR48/105STC15F2K60S2的ADC轉(zhuǎn)換原理STC15F2K60S2的ADC是逐次比較型模數(shù)轉(zhuǎn)換器。逐次比較型ADC由一個比較器和D/A轉(zhuǎn)換器構(gòu)成,通過逐次比較邏輯,從最高位(MSB)開始,順序地對每一輸入電壓與內(nèi)置D/A轉(zhuǎn)換器輸出進(jìn)行比較,經(jīng)多次比較,使轉(zhuǎn)換所得的數(shù)字量逐次逼近輸入模擬量對應(yīng)值。49/105(2)參考電壓源STC15F2K60S2單片機ADC模塊的參考電壓源是輸入工作電壓Vcc,一般不用外接參考電壓源。如果Vcc不穩(wěn)定(例如電池供電的系統(tǒng)中,電池電壓常常在5.3V-4.2V之間漂移),則可以在8路A/D轉(zhuǎn)換的一個通道外接一個穩(wěn)定的參考電壓源,計算出此時的工作電壓Vcc,再計算出其他幾路A/D轉(zhuǎn)換通道的電壓。50/105(3)與ADC有關(guān)的特殊功能寄存器1)P1口模擬功能控制寄存器P1ASFP1ASF(地址為9DH,復(fù)位值為00H)各位的定義如下:位號D7D6D5D4D3D2D1D0位名稱P17ASFP16ASFP15ASFP14ASFP13ASFP12ASFP11ASFP10ASF51/105如果要使用相應(yīng)口的模擬功能,需將P1ASF特殊功能寄存器中的相應(yīng)位置為1。如,若要使用P1.6的模擬量功能,則需要將P16ASF設(shè)置為1。注意,P1ASF寄存器不能位尋址,可以使用匯編語言指令ORLP1ASF,#40H,也可以使用C語言語句P1ASF|=0x40;位號D7D6D5D4D3D2D1D0位名稱P17ASFP16ASFP15ASFP14ASFP13ASFP12ASFP11ASFP10ASF52/1052)ADC控制寄存器ADC_CONTRADC_CONTR(地址為BCH,復(fù)位值為00H)各位的定義如下:位號D7D6D5D4D3D2D1D0位名稱ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0①ADC_POWER:ADC電源控制位。0:關(guān)閉ADC電源。1:打開ADC電源。53/105說明建議進(jìn)入空閑模式前,將ADC電源關(guān)閉,即ADC_POWER=0。啟動A/D轉(zhuǎn)換前一定要確認(rèn)ADC電源已打開,A/D轉(zhuǎn)換結(jié)束后關(guān)閉ADC電源可降低功耗,也可不關(guān)閉。初次打開內(nèi)部ADC轉(zhuǎn)換模擬電源,需適當(dāng)延時,等內(nèi)部模擬電源穩(wěn)定后,再啟動A/D轉(zhuǎn)換。建議啟動A/D轉(zhuǎn)換后,在A/D轉(zhuǎn)換結(jié)束之前,不改變?nèi)魏蜪/O口的狀態(tài),有利于提高A/D轉(zhuǎn)換的精度。54/105②SPEED1、SPEED0:ADC轉(zhuǎn)換速度控制位。SPEED1SPEED0A/D轉(zhuǎn)換所需時間1190個時鐘周期轉(zhuǎn)換一次,CPU工作頻率21MHz時,A/D轉(zhuǎn)換速度約300KHz,9位精度10180個時鐘周期轉(zhuǎn)換一次,可達(dá)到10位精度01360個時鐘周期轉(zhuǎn)換一次,可達(dá)到10位精度00540個時鐘周期轉(zhuǎn)換一次,可達(dá)到10位精度位號D7D6D5D4D3D2D1D0位名稱ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0表9-2ADC轉(zhuǎn)換速度控制55/105STC15F2K60S2單片機A/D轉(zhuǎn)換模塊的時鐘外部晶體時鐘或內(nèi)部R/C振蕩器所產(chǎn)生的系統(tǒng)時鐘,不使用時鐘分頻寄存器CLK_DIV對系統(tǒng)時鐘分頻后所產(chǎn)生的供給CPU工作所使用的時鐘。優(yōu)點:不僅可以讓ADC用較高的頻率工作,提高A/D的轉(zhuǎn)換速度;而且可以讓CPU用較低的頻率工作,降低系統(tǒng)的功耗。56/105需要注意設(shè)置ADC_CONTR控制寄存器的語句執(zhí)行后,要經(jīng)過4個CPU時鐘的延時,其值才能夠保證被設(shè)置進(jìn)ADC_CONTR控制寄存器。典型代碼如下:

MOVADC_CONTR,#DATANOPNOPNOPNOPMOVA,ADC_CONTR

;經(jīng)過4個時鐘延時,才能正確讀到ADC_CONTR控制寄存器的值57/105③ADC_FLAG:A/D轉(zhuǎn)換結(jié)束標(biāo)志位。

A/D轉(zhuǎn)換完成后,ADC_FLAG=1,要由軟件清零。不管A/D轉(zhuǎn)換完成后由該位申請產(chǎn)生中斷,還是由軟件查詢該標(biāo)志位判斷A/D轉(zhuǎn)換是否結(jié)束,當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG=1,一定要軟件清0。位號D7D6D5D4D3D2D1D0位名稱ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS058/105⑤CHS2、CHS1、CHS0:模擬輸入通道選擇,如表所示。用MOV語句對ADC_CONTR寄存器進(jìn)行賦值。位號D7D6D5D4D3D2D1D0位名稱ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0CHS2CHS1CHS0模擬輸入通道選擇000選擇P1.0作為A/D輸入來用001選擇P1.1作為A/D輸入來用010選擇P1.2作為A/D輸入來用011選擇P1.3作為A/D輸入來用100選擇P1.4作為A/D輸入來用101選擇P1.5作為A/D輸入來用110選擇P1.6作為A/D輸入來用111選擇P1.7作為A/D輸入來用表9-3模擬輸入通道選擇59/1053)A/D轉(zhuǎn)換結(jié)果存儲格式控制及A/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL特殊功能寄存器ADC_RES(地址為BDH,復(fù)位值為00H)和ADC_RESL(地址為BEH,復(fù)位值為00H)用于保存A/D轉(zhuǎn)換結(jié)果。特殊功能寄存器CLK_DIV中的ADRJ位用于設(shè)置A/D轉(zhuǎn)換結(jié)果的存儲格式。ADRJ=0時,ADC_RES[7:0]存放高8位ADC結(jié)果,ADC_RESL[1:0]存放低2位ADC結(jié)果;ADRJ=1時,ADC_RES[1:0]存放高2位ADC結(jié)果,ADC_RESL[7:0]存放低8位ADC結(jié)果。60/105如果STC15F2K60S2單片機的10位A/D轉(zhuǎn)換結(jié)果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中,模/數(shù)轉(zhuǎn)換結(jié)果計算公式如下:取10位結(jié)果(ADC_RES[7:0],ADC_RESL[1:0])=1024×Vin/Vcc取8位結(jié)果

ADC_RES[7:0]=256×Vin/Vcc

Vin為模擬輸入通道輸入電壓,Vcc為單片機實際工作電壓,用單片機工作電壓作為模擬參考電壓。61/1054)與A/D轉(zhuǎn)換中斷有關(guān)的寄存器中斷允許控制寄存器IE中的EADC位(D5位)用于開放ADC中斷EA位(D7位)用于開放CPU中斷中斷優(yōu)先級寄存器IP中的PADC位(D5位)用于設(shè)置A/D中斷的優(yōu)先級在中斷服務(wù)程序中,要使用軟件將A/D中斷標(biāo)志位ADC_FLAG(也是A/D轉(zhuǎn)換結(jié)束標(biāo)志位)清0。62/1052、STC15F2K60S2單片機ADC模塊的使用編程要點打開ADC電源,第一次使用時要打開內(nèi)部模擬電源(設(shè)置ADC_CONTR)。適當(dāng)延時,等內(nèi)部模擬電源穩(wěn)定。一般延時1ms以內(nèi)即可。設(shè)置P1口中的相應(yīng)口線作為A/D轉(zhuǎn)換通道(設(shè)置P1ASF寄存器)。63/105選擇ADC通道(設(shè)置ADC_CONTR中的CHS2~CHS0)。根據(jù)需要設(shè)置轉(zhuǎn)換結(jié)果存儲格式(設(shè)置AUXR1中的ADRJ位)。查詢A/D轉(zhuǎn)換結(jié)束標(biāo)志ADC_FLAG,判斷A/D轉(zhuǎn)換是否完成,若完成,則讀出結(jié)果(結(jié)果保存在ADC_RES和ADC_RESL寄存器中),并進(jìn)行數(shù)據(jù)處理。64/105讀取轉(zhuǎn)換結(jié)果注意:如果是多通道模擬量進(jìn)行轉(zhuǎn)換,則更換A/D轉(zhuǎn)換通道后要適當(dāng)延時,使輸入電壓穩(wěn)定,延時量取20μs~200μs即可,與輸入電壓源的內(nèi)阻有關(guān)。如果輸入電壓信號源的內(nèi)阻在10K以下,可不加延時。如果是單通道模擬量轉(zhuǎn)換,則不需要更換A/D轉(zhuǎn)換通道,也就不需要加延時。65/105若采用中斷方式,還需進(jìn)行中斷設(shè)置(EADC置1,EA置1)。在中斷服務(wù)程序中讀取ADC轉(zhuǎn)換結(jié)果,并將ADC中斷請求標(biāo)志ADC_FLAG清零。66/105【例9-2】編程實現(xiàn)利用STC12C5A60S2單片機ADC通道2采集外部模擬電壓信號,8位精度,采用查詢方式循環(huán)進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果保存于30H單元中。假設(shè)時鐘頻率為18.432MHz。解:取8位精度時,若ADRJ-0,則可直接使用轉(zhuǎn)換結(jié)果寄存器ADC_RES的值。由于復(fù)位后,ADRJ=0,因此,按照ADC的編程要點進(jìn)行初始化后,直接判斷ADC_FLAG標(biāo)志是否為1,若為1,則讀出ADC_RES寄存器的值,并存入30H即可;若為0,則繼續(xù)等待。67/105匯編語言程序代碼如下:$INCLUDE(STC15.INC);包含STC15F2K60S2單片機寄存器定義文件ADC_DATEQU30H;A/D轉(zhuǎn)換結(jié)果

ORG0000HLJMPMAINORG0050HMAIN:MOVSP,#70H;設(shè)置堆棧

ORLADC_CONTR,#80H;開A/D轉(zhuǎn)換電源

MOVA,#20HLCALLDELAY;開電源后加適當(dāng)延時,1ms以內(nèi)即可

MOV P1ASF,#04H ;設(shè)置P1.2的模擬量功能

MOVADC_CONTR,#11100010B;選擇P1.2作為A/D轉(zhuǎn)換通道

MOVA,#05HLCALLDELAY;如果切換A/D轉(zhuǎn)換通道,則需要加延時68/105WAIT_AD:ORLADC_CONTR,#00001000B;啟動A/D轉(zhuǎn)換

MOVA,#00010000B;判斷A/D轉(zhuǎn)換是否完成

ANLA,ADC_CONTRJZWAIT_AD;A/D轉(zhuǎn)換尚未完成,繼續(xù)等待

ANLADC_CONTR,#11100111B;將ADC_FLAG清零

MOVA,ADC_RES;讀取A/D轉(zhuǎn)換結(jié)果

MOVADC_DAT,A;保存A/D轉(zhuǎn)換結(jié)果

LJMPWAIT_AD;等待下一次轉(zhuǎn)換完成69/105DELAY:;延時子程序

PUSH02;將寄存器組0的R2入棧

PUSH03;將寄存器組0的R3入棧

PUSH04;將寄存器組0的R4入棧

MOVR4,ADELAY_LOOP0:MOVR3,#200;2個時鐘周期Delay_LOOP1:MOVR2,#249;2個時鐘周期DELAY_LOOP:DJNZR2,DELAY_LOOP;4個時鐘周期

DJNZR3,DELAY_LOOP1;4個時鐘周期

DJNZR4,DELAY_LOOP0;4個時鐘周期

POP04POP03POP02RETEND70/105C語言程序代碼如下:#include“stc12.h”//包含STC12C5A60S2單片機寄存器定義文件unsignedchardataadc_dat_at_0x30;//A/D轉(zhuǎn)換結(jié)果變量voidmain(void){unsignedlongi;unsignedcharstatus;ADC_CONTR|=0x80;//開A/D轉(zhuǎn)換電源

for(i=0;i<10000;i++);//適當(dāng)延時

P1ASF=0x04;//選擇P1.2作為A/D轉(zhuǎn)換通道

ADC_CONTR=0xE2;for(i=0;i<10000;i++);//適當(dāng)延時

while(1)//循環(huán)進(jìn)行A/D轉(zhuǎn)換

{ADC_CONTR|=0x08;//重新啟動A/D轉(zhuǎn)換

status=0;while(status==0)//等待A/D轉(zhuǎn)換結(jié)束

{status=ADC_CONTR&0x10;}ADC_CONTR&=0xE7;//將ADC_FLAG清零

adc_dat=ADC_RES;//保存A/D轉(zhuǎn)換結(jié)果

}}71/105【例9-3】編程實現(xiàn)利用STC12C5A60S2單片機ADC通道2采集外部模擬電壓信號,10位精度,采用中斷方式進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果保存于30H和31H單元中。假設(shè)時鐘頻率為18.432MHz。解:ADRJ=0時,ADC結(jié)果的高8位在ADC_RES中,低2位在ADC_RESL的低2位。因此,可以在中斷服務(wù)程序中讀出ADC_RESL寄存器的值,屏蔽高6位后存入30H單元,讀出ADC_RES寄存器的值,存入31H單元。72/105匯編語言程序代碼如下:$INCLUDE(STC15.INC);包含STC15F2K60S2單片機寄存器定義文件

ADC_HIEQU31H;A/D轉(zhuǎn)換結(jié)果高2位

ADC_LOWEQU30H;A/D轉(zhuǎn)換結(jié)果低8位

ORG0000HLJMPMAINORG 002BHLJMPADC_ISR;ADC中斷服務(wù)程序入口

ORG0050HMAIN:MOVSP,#70H;設(shè)置堆棧

ORLADC_CONTR,#80H;開A/D轉(zhuǎn)換電源

MOVA,#20HLCALLDELAY;開電源后要加適當(dāng)延時,1ms以內(nèi)即可

MOV P1ASF,#04H ;設(shè)置P1.2的模擬量功能

MOVADC_CONTR,#11100010B;選擇P1.2作為A/D轉(zhuǎn)換通道

MOVA,#05HLCALLDELAY;如果切換A/D轉(zhuǎn)換通道,則需要加延時

ORL AUXR1,#04H ;設(shè)置ADC轉(zhuǎn)換結(jié)果存儲格式(ADRJ=1)

ORLADC_CONTR,#00001000B;啟動A/D轉(zhuǎn)換

SETBEADC;EADC=1,開放ADC的中斷控制位

SETBEA;開放CPU總中斷

SJMP$;循環(huán)等待中斷73/105ADC_ISR:;ADC中斷服務(wù)程序入口

ANLADC_CONTR,#11100111B;將ADC_FLAG清0MOVA,ADC_RES;讀取A/D轉(zhuǎn)換結(jié)果高2位

ANLA,#03H;屏蔽高6位

MOVADC_HI,A;保存A/D轉(zhuǎn)換結(jié)果高2位

MOVA,ADC_RESL;讀取A/D轉(zhuǎn)換結(jié)果低8位

MOVADC_LOW,A;保存A/D轉(zhuǎn)換結(jié)果低8位

ORLADC_CONTR,#00001000B;重新啟動A/D轉(zhuǎn)換RETI74/105DELAY:;延時子程序

PUSH02;將寄存器組0的R2入棧

PUSH03;將寄存器組0的R3入棧

PUSH04;將寄存器組0的R4入棧

MOVR4,ADELAY_LOOP0:MOVR3,#200;2個時鐘周期Delay_LOOP1:MOVR2,#249;2個時鐘周期DELAY_LOOP:DJNZR2,DELAY_LOOP;4個時鐘周期

DJNZR3,DELAY_LOOP1;4個時鐘周期

DJNZR4,DELAY_LOOP0;4個時鐘周期

POP04POP03POP02RETEND75/105C語言程序代碼如下:#include“stc15.h”//包含STC15F2K60S2單片機寄存器定義文件unsignedchardataadc_hi_at_0x31;//A/D轉(zhuǎn)換結(jié)果變量高2位unsignedchardataadc_low_at_0x30;//A/D轉(zhuǎn)換結(jié)果變量低8位voidmain(void){unsignedlongi;ADC_CONTR|=0x80;//開A/D轉(zhuǎn)換電源

for(i=0;i<10000;i++);//適當(dāng)延時

P1ASF=0x04;//選擇P1.2作為A/D轉(zhuǎn)換通道

ADC_CONTR=0xE2;for(i=0;i<10000;i++);//適當(dāng)延時

AUXR1|=0x04; //ADRJ=1ADC_CONTR|=0x08;//啟動A/D轉(zhuǎn)換

EADC=1;//EADC=1,開放ADC的中斷控制位

EA=1;//開放CPU總中斷

while(1);//循環(huán)等待ADC中斷}76/105voidADC_ISR(void)interrupt5//ADC中斷函數(shù){ADC_CONTR&=0xE7;//將ADC_FLAG清0adc_hi=ADC_RES&0x03;//保存A/D轉(zhuǎn)換結(jié)果高2位

adc_low=ADC_RESL;//保存A/D轉(zhuǎn)換結(jié)果低8位

ADC_CONTR|=0x08;//重新啟動A/D轉(zhuǎn)換}77/105§9.3數(shù)模轉(zhuǎn)換器的應(yīng)用單片機處理后的數(shù)字信號要轉(zhuǎn)換成模擬信號才能控制相關(guān)對象。實現(xiàn)數(shù)字量轉(zhuǎn)換成模擬量的器件稱為數(shù)模轉(zhuǎn)換器(DAC),簡稱為D/A轉(zhuǎn)換器。本節(jié)主要介紹D/A轉(zhuǎn)換的原理及性能指標(biāo)、數(shù)模轉(zhuǎn)換器TLV5616與單片機的接口及編程方法。78/105一、模數(shù)轉(zhuǎn)換器的工作原理及性能指標(biāo)1、數(shù)模轉(zhuǎn)換器的分類根據(jù)解碼網(wǎng)絡(luò)結(jié)構(gòu)的不同,D/A轉(zhuǎn)換器可以分為T型、倒T型、權(quán)電阻和權(quán)電流等類型。根據(jù)模擬電子開關(guān)的種類不同,D/A轉(zhuǎn)換器可以分為CMOS型和雙極型。雙極型又分為電流開關(guān)型和ECL電流開關(guān)型。79/105D/A轉(zhuǎn)換器選擇在速度要求不高的情況下,可選用CMOS開關(guān)型D/A轉(zhuǎn)換器;如對轉(zhuǎn)換速度要求較高,則應(yīng)選用雙極型電流開關(guān)D/A轉(zhuǎn)換器或轉(zhuǎn)換速度更高的ECL電流開關(guān)型D/A轉(zhuǎn)換器。80/1052、D/A轉(zhuǎn)換器的工作原理根據(jù)分類不同,D/A轉(zhuǎn)換器的工作原理也不盡相同。下面只介紹權(quán)電阻型數(shù)模轉(zhuǎn)換器的工作原理,其余類型數(shù)模轉(zhuǎn)換器的工作原理請讀者自行查閱資料學(xué)習(xí)。權(quán)電阻型數(shù)/模轉(zhuǎn)換:就是將某一數(shù)字量的二進(jìn)制代碼各位按它的“權(quán)”的數(shù)值轉(zhuǎn)換成相應(yīng)的電流,然后再把代表各位數(shù)值的電流加起來。81/105一個8位的權(quán)電阻D/A轉(zhuǎn)換器的原理框圖如圖所示。圖9-8權(quán)電阻型D/A轉(zhuǎn)換器82/105工作原理線性電阻網(wǎng)絡(luò),可以應(yīng)用疊加原理分析網(wǎng)絡(luò)的輸出電壓先逐個求出每個開關(guān)單獨接通標(biāo)準(zhǔn)電壓,而其余開關(guān)均接地時網(wǎng)絡(luò)的輸出電壓分量,然后將所有接標(biāo)準(zhǔn)電壓開關(guān)的輸出分量相加,就可以得到總的輸出電壓。83/105Di=0時,Si接地。Di=1時,Si接VB(i=0,1,…,7)權(quán)電阻D/A轉(zhuǎn)換器的簡化電路如圖所示。圖9-9權(quán)電阻D/A轉(zhuǎn)換器簡化電路84/105圖中

V0=a7?VB,V1=a6?VB,V2=a5?VB,V3=a4?VB,V4=a3?VB,V5=a2?VB,V6=a1?VB,V7=a0?VB,a0,a1,…,a7=0或1。圖9-9權(quán)電阻D/A轉(zhuǎn)換器簡化電路85/105當(dāng)R=2Rf時,代入上式得:由此得到:86/1053、D/A轉(zhuǎn)換器的性能指標(biāo)(1)分辨率分辨率是D/A轉(zhuǎn)換器對輸入量變化敏感程度的描述,與輸入數(shù)字量的位數(shù)有關(guān)。(2)穩(wěn)定時間指D/A轉(zhuǎn)換器中代碼有滿度值的變化時,其輸出達(dá)到穩(wěn)定(一般穩(wěn)定到與±1/2最低位值相當(dāng)?shù)哪M量范圍內(nèi))所需的時間。一般為幾十毫秒到幾微秒。87/105(3)輸出電平不同型號的D/A轉(zhuǎn)換器的輸出電平相差較大,一般為5~10V,也有一些高壓輸出型的為24~30V。還有一些電流輸出型,低的為20mA,高的可達(dá)3A。(4)轉(zhuǎn)換精度轉(zhuǎn)換精度是轉(zhuǎn)換后所得的實際值對于理想值的接近程度。(5)輸入編碼如二進(jìn)制、BCD碼、雙極性時的符號-數(shù)值碼、補碼、偏移二進(jìn)制碼等。必要時可在D/A轉(zhuǎn)換前用計算機進(jìn)行代碼轉(zhuǎn)換。88/105二、12位D/A轉(zhuǎn)換器TLV5616及其接口技術(shù)1、TLV5616簡介TLV5616是一個帶有靈活的4線串行接口的12位電壓輸出數(shù)/模轉(zhuǎn)換器(DAC)。4線串行接口可以與SPI、QSPI和Microwire串行口接口。TLV5616可以用一個包括4個控制位和12個數(shù)據(jù)位的16位串行字符串來編程TLV5616采用CMOS工藝,設(shè)計成2.7V至5.5V單電源工作。89/105器件用8引腳封裝,工業(yè)級芯片的工作溫度范圍從-40℃至85℃。輸出電壓(由外部基準(zhǔn)決定滿度電壓)由下式給出:其中REF是基準(zhǔn)電壓,而CODE是數(shù)字輸入值,范圍從0x000至0xFFF。上電復(fù)位將內(nèi)部鎖存為一個規(guī)定的初始狀態(tài)(所有各位為零)。90/105各引腳功能介紹如下:DIN:串行數(shù)字?jǐn)?shù)據(jù)輸入SCLK:串行數(shù)字時鐘輸入:芯片選擇,低有效FS:幀同步,數(shù)字輸入,用于4線串行接口。圖9-10TLV5616引腳圖91/105AGND:模擬地REFIN:基準(zhǔn)模擬電壓輸入OUT:DAC模擬電壓輸出VDD:正電源圖9-10TLV5616引腳圖92/1052、內(nèi)部結(jié)構(gòu)TLV5616的內(nèi)部結(jié)構(gòu)如圖所示。圖9-11TLV5616的內(nèi)部結(jié)構(gòu)93/105TLV5616是一個基于一個電阻串結(jié)構(gòu)的12位、單電源DAC。一個并行接口速度和掉電控制邏輯一個基準(zhǔn)輸入緩沖器電阻串一個軌到軌(rail-to-rail)輸出緩沖器94/1053、數(shù)據(jù)傳輸時序圖TLC5616的數(shù)據(jù)傳輸時序圖如圖所示。圖9-12TLC5616的數(shù)據(jù)傳輸時序圖95/105數(shù)據(jù)傳輸過程首先器件必須使能CS。然后在FS的下降沿啟動數(shù)據(jù)的移位,在SCLK的下降沿一位接一位地傳入內(nèi)部寄存器。在16位已傳送后或者當(dāng)FS升高時,移位寄存器中的內(nèi)容被移到DAC鎖存器,它將輸出電壓更新為新的電平。96/105TLV5616的串行接口可以用于兩種基本的方式:4線(帶片選)3線(不帶片選)4、數(shù)據(jù)格式TLV5616的16位數(shù)據(jù)字包括兩部分:控制位

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論