




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第9章模數(shù)轉(zhuǎn)換器
9.1模數(shù)轉(zhuǎn)換器的結(jié)構(gòu)及相關(guān)寄存器
9.2模數(shù)轉(zhuǎn)換器的應(yīng)用STC12C5A60S2單片機(jī)集成有8路10位高速模數(shù)轉(zhuǎn)換器(ADC),速度可達(dá)到250KHz(25萬次/秒,可做溫度檢測、壓力檢測、電池電壓檢測、按鍵掃描、頻譜檢測等。9.1模數(shù)轉(zhuǎn)換器的結(jié)構(gòu)及相關(guān)寄存器
STC12C5A60S2單片機(jī)片內(nèi)集成8通道10位模數(shù)轉(zhuǎn)換器(ADC)。ADC輸入通道與P1口復(fù)用,上電復(fù)位后P1口為弱上拉型I/O口,用戶可以通過軟件設(shè)置將8路中的任何一路設(shè)置為A/D轉(zhuǎn)換,不需作為A/D使用的口可繼續(xù)作為I/O口使用。9.1.1模數(shù)轉(zhuǎn)換器的結(jié)構(gòu)STC12C5A60S2單片機(jī)的模數(shù)轉(zhuǎn)換器由多路選擇開關(guān)、比較器、逐次比較寄存器、10位ADC、轉(zhuǎn)換結(jié)果寄存器(ADC_RES和ADC_RESL)以及ADC控制寄存器ADC_CONTR構(gòu)成。9.1.2參考電壓源
STC12C5A60S2單片機(jī)A/D轉(zhuǎn)換模塊的參考電壓源是輸入工作電壓Vcc,所以一般不用外接參考電壓源。如三端穩(wěn)壓電路7805的輸出電壓是5V,但實際電壓可能是4.88V到4.96V,如果用戶需要的精度比較高,可在應(yīng)用產(chǎn)品出廠前將實際測出的工作電壓值記錄在單片機(jī)內(nèi)部的EEPROM里面,以供程序校正使用。如果Vcc不穩(wěn)定(例如電池供電的系統(tǒng)中,電池電壓常常在5.3V-4.2V之間漂移),則需要在8路A/D轉(zhuǎn)換的一個通道外接一個穩(wěn)定的參考電壓源,來計算出此時的工作電壓Vcc,再計算出其他幾路A/D轉(zhuǎn)換通道的電壓。例如,可在ADC轉(zhuǎn)換通道的第七通道外接一個1.25V的基準(zhǔn)參考電壓源,由此求出此時的工作電壓Vcc,再計算出其它幾路A/D轉(zhuǎn)換通道的電壓。9.1.3與ADC有關(guān)的特殊功能寄存器
1.P1口模擬功能控制寄存器P1ASF(地址為9DH,復(fù)位值為00H)2.ADC控制寄存器ADC_CONTR(地址為BCH,復(fù)位值為00H)CHS0CHS1CHS2ADC_STARTADC_FLAGSPEED0SPEED1ADC_POWER位名稱D0D1D2D3D4D5D6D7位號1)ADC_POWER:ADC電源控制位。
0:關(guān)閉ADC電源。1:打開ADC電源。
2)SPEED1、SPEED0:ADC轉(zhuǎn)換速度控制位。各種設(shè)置如表9-1所示。3)ADC_FLAG:A/D轉(zhuǎn)換結(jié)束標(biāo)志位。A/D轉(zhuǎn)換完成后,ADC_FLAG=1,要由軟件清0。不管A/D轉(zhuǎn)換完成后由該位申請產(chǎn)生中斷,還是由軟件查詢該標(biāo)志位判斷A/D轉(zhuǎn)換是否結(jié)束,當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG=1,一定要軟件清0。4)ADC_START:A/D轉(zhuǎn)換啟動控制位,ADC_START=1,開始轉(zhuǎn)換;ADC_START=0,停止轉(zhuǎn)換。5)CHS2、CHS1、CHS0:模擬輸入通道選擇,如表9-2所示。P10ASFP11ASFP12ASFP13ASFP14ASFP15ASFP16ASFP17ASF位名稱D0D1D2D3D4D5D6D7位號如果要使用相應(yīng)口的模擬功能,需將P1ASF特殊功能寄存器中的相應(yīng)位置為‘1’。如,若要使用P1.6的模擬量功能,則需要將P16ASF設(shè)置為1。(注意,P1ASF寄存器不能位尋址,可以使用匯編語言指令ORLP1ASF,#40H,也可以使用C語言語句P1ASF|=0x40;)3.A/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL特殊功能寄存器ADC_RES(地址為BDH,復(fù)位值為00H)和ADC_RESL(地址為BEH,復(fù)位值為00H)用于保存A/D轉(zhuǎn)換結(jié)果。A/D轉(zhuǎn)換結(jié)果存儲格式由輔助寄存器AUXR1(地址為A2H,復(fù)位值為00H)中的ADRJ控制,ADRJ是AUXR1中的D2位。(1)當(dāng)ADRJ=0時,10位A/D轉(zhuǎn)換結(jié)果的高8位放在ADC_RES寄存器,低2位放在ADC_RESL寄存器。存儲格式如下:ADRJ=0AUXR1ADC_RES0ADC_RES1ADC_RESLADC_RES2ADC_RES3ADC_RES4ADC_RES5ADC_RES6ADC_RES7ADC_RES8ADC_RES9ADC_RESD0D1D2D3D4D5D6D73.A/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL(2)當(dāng)ADRJ=1時,10位A/D轉(zhuǎn)換結(jié)果的最高2位放在ADC_RES寄存器的低2位,低8位放在ADC_RESL寄存器。存儲格式如下:ADRJ=1AUXR1ADC_RES0ADC_RES1ADC_RES2ADC_RES3ADC_RES4ADC_RES5ADC_RES6ADC_RES7ADC_RESLADC_RES8ADC_RES9ADC_RESD0D1D2D3D4D5D6D7模/數(shù)轉(zhuǎn)換結(jié)果計算公式如下:ADRJ=0時,取10位結(jié)果(ADC_RES[7:0],ADC_RESL[1:0])=1024×Vin/VccADRJ=0時,取8位結(jié)果ADC_RES[7:0]=256×Vin/VccADRJ=1時,取10位結(jié)果(ADC_RES[1:0],ADC_RESL[7:0])=1024×Vin/VccVin為模擬輸入通道輸入電壓,Vcc為單片機(jī)實際工作電壓,用單片機(jī)工作電壓作為模擬參考電壓。
4.與A/D轉(zhuǎn)換中斷有關(guān)的寄存器中斷允許控制寄存器IE中的EADC位(D5位)用于開放ADC中斷,EA位(D7位)用于開放CPU中斷;中斷優(yōu)先級寄存器IP中的PADC位(D5位)和IPH中的PADCH位(D5位)用于設(shè)置A/D中斷的優(yōu)先級。在中斷服務(wù)程序中,要使用軟件將A/D中斷標(biāo)志位ADC_FLAG(也是A/D轉(zhuǎn)換結(jié)束標(biāo)志位)清0。9.2模數(shù)轉(zhuǎn)換器的應(yīng)用STC12C5A60S2單片機(jī)ADC模塊的使用編程要點如下:1)打開ADC電源,第一次使用時要打開內(nèi)部模擬電源(設(shè)置ADC_CONTR)。2)適當(dāng)延時,等內(nèi)部模擬電源穩(wěn)定。一般延時1ms以內(nèi)即可。3)設(shè)置P1口中的相應(yīng)口線作為A/D轉(zhuǎn)換通道(設(shè)置P1ASF寄存器)。4)選擇ADC通道(設(shè)置ADC_CONTR中的CHS2~CHS0)。5)根據(jù)需要設(shè)置轉(zhuǎn)換結(jié)果存儲格式(設(shè)置AUXR1中的ADRJ位)。6)查詢A/D轉(zhuǎn)換結(jié)束標(biāo)志ADC_FLAG,判斷A/D轉(zhuǎn)換是否完成,若完成,則讀出結(jié)果(結(jié)果保存在ADC_RES和ADC_RESL寄存器中),并進(jìn)行數(shù)據(jù)處理。如果是多通道模擬量進(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)換通道,也就不需要加延時。8)若采用中斷方式,還需進(jìn)行中斷設(shè)置(EADC置1,EA置1)。9)在中斷服務(wù)程序中讀取ADC轉(zhuǎn)換結(jié)果,并將ADC中斷請求標(biāo)志ADC_FLAG清零?!纠?-1】編程實現(xiàn)利用STC12C5A60S2單片機(jī)ADC通道2采集外部模擬電壓信號,8位精度,采用查詢方式循環(huán)進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果保存于30H單元中。假設(shè)時鐘頻率為18.432MHz。解:取8位精度時,可設(shè)置ADRJ=0,直接使用轉(zhuǎn)換結(jié)果寄存器ADC_RES的值。由于復(fù)位后,ADRJ=0,因此,按照ADC的編程要點進(jìn)行初始化后,直接判斷ADC_FLAG標(biāo)志是否為1,若為1,則讀出ADC_RES寄存器的值,并存入30H即可;若為0,則繼續(xù)等待。匯編語言程序代碼如下:$INCLUDE(STC12C5A.INC);包含STC12C5A60S2單片機(jī)寄存器定義文件ADC_DATEQU30H;A/D轉(zhuǎn)換結(jié)果
ORG0000HLJMPMAINORG0050HMAIN:MOVSP,#70H;設(shè)置堆棧
ORLADC_CONTR,#80H;開A/D轉(zhuǎn)換電源,第一次使用時要打開內(nèi)部模擬電源
MOVA,#20HLCALLDELAY;開A/D轉(zhuǎn)換電源后要加適當(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)換通道,則需要加延時WAIT_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)換完成DELAY:;延時子程序
PUSH02;將寄存器組0的R2入棧
PUSH03;將寄存器組0的R3入棧
PUSH04;將寄存器組0的R4入棧
MOVR4,ADELAY_LOOP0:;DELAY_LOOP0循環(huán)延時200406個時鐘周期
MOVR3,#200;2個時鐘周期Delay_LOOP1:;DELAY_LOOP1循環(huán)延時1002個時鐘周期
MOVR2,#249;2個時鐘周期DELAY_LOOP:DJNZR2,DELAY_LOOP;4個時鐘周期
DJNZR3,DELAY_LOOP1;4個時鐘周期
DJNZR4,DELAY_LOOP0;4個時鐘周期
POP04POP03POP02RETENDC語言程序代碼如下:#include“stc12c5a.h”//包含STC12C5A60S2單片機(jī)寄存器定義文件unsignedchardataadc_dat_at_0x30;//A/D轉(zhuǎn)換結(jié)果變量voidmain(void){unsignedlongi;unsignedcharstatus;ADC_CONTR|=0x80;//開A/D轉(zhuǎn)換電源,第一次使用時要打開內(nèi)部模擬電源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é)果
}}【例9-2】編程實現(xiàn)利用STC12C5A60S2單片機(jī)ADC通道2采集外部模擬電壓信號,10位精度,采用中斷方式進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果保存于30H和31H單元中。假設(shè)時鐘頻率為18.432MHz。解:按照編程要點進(jìn)行初始化時,可設(shè)置ADRJ=1。在中斷服務(wù)程序中讀出ADC_RES寄存器的值,屏蔽高6位后存入31H單元,讀出ADC_RESL寄存器的值,存入30H單元。匯編語言程序代碼如下:$INCLUDE(STC12C5A.INC);包含STC12C5A60S2單片機(jī)寄存器定義文件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)換電源,第一次使用時要打開內(nèi)部模擬電源
MOVA,#20HLCALLDELAY;開A/D轉(zhuǎn)換電源后要加適當(dāng)延時,1ms以內(nèi)即可MOVP1ASF,#04H;設(shè)置P1.2的模擬量功能
MOVADC_CONTR,#11100010B;選擇P1.2作為A/D轉(zhuǎn)換通道
MOVA,#05HLCALLDELAY;如果切換A/D轉(zhuǎn)換通道,則需要加延時ORLAUXR1,#04H;設(shè)置ADC轉(zhuǎn)換結(jié)果存儲格式(ADRJ=1)
ORLADC_CONTR,#00001000B;啟動A/D轉(zhuǎn)換
SETBEADC;EADC=1,開放ADC的中斷控制位SETBEA;開放CPU總中斷
SJMP$;循環(huán)等待中斷ADC_ISR:;ADC中斷服務(wù)程序入口
ANLADC_CONTR,#11100111B;將ADC_FLAG清零
MOVA,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)換RETIDELAY:;延時子程序
PUSH02;將寄存器組0的R2入棧
PUSH03;將寄存器組0的R3入棧
PUSH04;將寄存器組0的R4入棧
MOVR4,ADELAY_LOOP0:;DELAY_LOOP0循環(huán)延時200406個時鐘周期
MOVR3,#200;2個時鐘周期Delay_LOOP1:;DELAY_LOOP1循環(huán)延時1002個時鐘周期
MOVR2,#249;2個時鐘周期DELAY_LOOP:DJNZR2,DELAY_LOOP;4個時鐘周期
DJNZR3,DELAY_LOOP1;4個時鐘周期
DJNZR4,DELAY_LOOP0;4個時鐘周期
POP04POP03POP02RETENDC語言程序代碼如下:#include“stc12c5a.h”//包含STC12C5A60S2單片機(jī)寄存器定義文件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)換電源,第一次使用時要打開內(nèi)部模擬電源for(i=0;i<10000;i++);//適當(dāng)延時P1A
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 太湖縣2025年數(shù)學(xué)五下期末學(xué)業(yè)水平測試模擬試題含答案
- 宜興外國語學(xué)校2025屆初三(下)5月月考語文試題試卷含解析
- 平?jīng)鍪?025年數(shù)學(xué)五年級第二學(xué)期期末教學(xué)質(zhì)量檢測模擬試題含答案
- 肝病患者的治療與飲食護(hù)理
- 食品安全教育小班培訓(xùn)大綱
- 2025年公共安全與應(yīng)急管理考試試題及答案
- 2025年承包商入廠安全培訓(xùn)考試試題含答案(A卷)
- 廣交會展覽館設(shè)計
- 陶行知:教育改革的先驅(qū)者
- 2025年中國機(jī)械式太陽燈烘發(fā)器市場調(diào)查研究報告
- 中國慢性阻塞性肺疾病基層診療指南(2024年)解讀
- 2024-2025學(xué)年高中政治 第三單元 全面依法治國 第八課 法治中國建設(shè) 1 法治國家教案 部編版必修3
- 解讀功能性食品研發(fā)
- 京東自營購買合同范例
- 急性胰腺炎護(hù)理查房-5
- 公務(wù)用車分時租賃實施方案
- DB3301∕T 0451-2024 醫(yī)學(xué)美容機(jī)構(gòu)電子病歷系統(tǒng)技術(shù)規(guī)范
- 《大國浮沉500年:經(jīng)濟(jì)和地理背后的世界史》記錄
- 水工維護(hù)初級工技能鑒定理論考試題庫(含答案)
- 運維項目進(jìn)度計劃
- 商場中央空調(diào)租賃協(xié)議模板
評論
0/150
提交評論