單片機(jī)原理與應(yīng)用-基于匯編、C51及混合編程第9章STC12C5A60S2單片機(jī)的片內(nèi)AD轉(zhuǎn)換器_第1頁(yè)
單片機(jī)原理與應(yīng)用-基于匯編、C51及混合編程第9章STC12C5A60S2單片機(jī)的片內(nèi)AD轉(zhuǎn)換器_第2頁(yè)
單片機(jī)原理與應(yīng)用-基于匯編、C51及混合編程第9章STC12C5A60S2單片機(jī)的片內(nèi)AD轉(zhuǎn)換器_第3頁(yè)
單片機(jī)原理與應(yīng)用-基于匯編、C51及混合編程第9章STC12C5A60S2單片機(jī)的片內(nèi)AD轉(zhuǎn)換器_第4頁(yè)
單片機(jī)原理與應(yīng)用-基于匯編、C51及混合編程第9章STC12C5A60S2單片機(jī)的片內(nèi)AD轉(zhuǎn)換器_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第9章STC12C5A60S2單片機(jī)的片內(nèi)A/D轉(zhuǎn)換器

9.1A/D轉(zhuǎn)換器的內(nèi)部結(jié)構(gòu)9.2A/D轉(zhuǎn)換器的相關(guān)寄存器9.3A/D轉(zhuǎn)換器的應(yīng)用第9章STC12C5A60S2單片機(jī)的片內(nèi)A/D轉(zhuǎn)換器傳統(tǒng)的單片機(jī)只能處理數(shù)字量信息,但在應(yīng)用中經(jīng)常需要處理一些連續(xù)變化的模擬量,例如溫度、流量、電壓、頻譜等,這就需要先經(jīng)過A/D轉(zhuǎn)換轉(zhuǎn)變成單片機(jī)可以處理的數(shù)字量。STC90C58AD、STC12C5A60S2、STC12C5410AD等單片機(jī)內(nèi)部集成了8路10位A/D轉(zhuǎn)換電路,轉(zhuǎn)換速度可達(dá)到250KHz(25萬(wàn)次/秒),即轉(zhuǎn)換周期為4μs。9.1A/D轉(zhuǎn)換的內(nèi)部結(jié)構(gòu)STC12C5A60S2單片機(jī)的A/D轉(zhuǎn)換的輸入端在P1口(P1.7-P1.0),上電復(fù)位后,P1口為弱上拉,用戶可以通過程序?qū)?路中的任何一路設(shè)置為A/D轉(zhuǎn)換,不需作為A/D使用的口可繼續(xù)作為I/O口使用。從最高位開始的逐位試探法逐次逼近型A/D轉(zhuǎn)換器轉(zhuǎn)換原理:模擬量輸入逐次逼近式:轉(zhuǎn)換前,N位寄存器寫入的數(shù)據(jù)先由最高位置1,DAC輸出值與被測(cè)的模擬值進(jìn)行比較:如果“低于”,該位的1被保留;如果“高于”該位的1被清除。然后下一位再置1,再比較,決定是否保留……直至最低位完成同一過程。寫入的數(shù)據(jù)從最高位到最低位都試探過一遍的最終值就是A/D轉(zhuǎn)換的結(jié)果。9.2A/D轉(zhuǎn)換器的相關(guān)寄存器

與A/D轉(zhuǎn)換器相關(guān)的寄存器有:P1口模擬功能控制寄存器P1ASFA/D轉(zhuǎn)換器控制寄存器ADC_CONTRA/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL輔助寄存器AUXR1與A/D中斷有關(guān)的寄存器IE、IPH和IP1.P1口模擬功能控制寄存器P1ASF(地址9DH)

當(dāng)P1口中某引腳要作為A/D使用時(shí),要將P1ASF寄存器

中該引腳所對(duì)應(yīng)的位置1,即該引腳設(shè)置為模擬功能;

通過MOVP1ASF,#DATA指令實(shí)現(xiàn)。2.ADC控制寄存器ADC_CONTR(地址BCH)

啟動(dòng)A/D轉(zhuǎn)換之前一定要保證A/D轉(zhuǎn)換器的電源已打開,并且首次開啟內(nèi)部A/D轉(zhuǎn)換電源時(shí),需要適當(dāng)?shù)难訒r(shí),等內(nèi)部電源穩(wěn)定后,再啟動(dòng)A/D轉(zhuǎn)換。A/D轉(zhuǎn)換結(jié)束后關(guān)閉A/D轉(zhuǎn)換器的電源可降低功耗。ADC_POWER:A/D轉(zhuǎn)換器的電源控制位。當(dāng)該位為1時(shí),開啟A/D轉(zhuǎn)換器電源;當(dāng)該位為0時(shí),關(guān)閉A/D轉(zhuǎn)換器電源。SPEED1、SPEED0:轉(zhuǎn)換速度控制位。對(duì)SPEED1、SPEED0兩位取不同的值時(shí),A/D轉(zhuǎn)換所需的時(shí)間不同,具體情況如表9-1所示SPEED1SPEED0A/D轉(zhuǎn)換所需時(shí)間1190個(gè)時(shí)鐘周期轉(zhuǎn)換一次10180個(gè)時(shí)鐘周期轉(zhuǎn)換一次01360個(gè)時(shí)鐘周期轉(zhuǎn)換一次00540個(gè)時(shí)鐘周期轉(zhuǎn)換一次ADC_FLAG:A/D轉(zhuǎn)換器轉(zhuǎn)換結(jié)束標(biāo)志位,當(dāng)A/D轉(zhuǎn)換完成后,硬件自動(dòng)將ADC_FLAG位置1,但要通過程序?qū)⑵淝?。ADC_START:

轉(zhuǎn)換啟動(dòng)控制位。將該位設(shè)置為1時(shí),啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換結(jié)束后,該位自動(dòng)清0。下次需要啟動(dòng)A/D轉(zhuǎn)換時(shí),必須再次將該位置1。CHS2、CHS1、CHS0:模擬輸入通道選擇。當(dāng)CHS2、CHS1、CHS0三位取不同的值時(shí),選擇P1口不同的引腳作為模擬輸入通道,具體情況如表9-2所示。CHS2CHS1CHS0模擬輸入通道選擇000P1.0作為A/D輸入001P1.1作為A/D輸入010P1.2作為A/D輸入011P1.3作為A/D輸入100P1.4作為A/D輸入101P1.5作為A/D輸入110P1.6作為A/D輸入111P1.7作為A/D輸入3.A/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL

(地址0BDH、0BEH)

用于保存A/D轉(zhuǎn)換結(jié)果。當(dāng)輔助寄存器AUXR1(參見圖2-8)中ADRJ(A/D轉(zhuǎn)換結(jié)果寄存器的數(shù)據(jù)格式調(diào)整控制)位為0時(shí),10位A/D轉(zhuǎn)換結(jié)果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中。ADRJ位為1時(shí),10位A/D轉(zhuǎn)換結(jié)果的高2位存放在ADC_RES寄存器的低2位中,低8位存放在ADC_RESL寄存器中。10位A/D轉(zhuǎn)換的結(jié)果與輸入電壓的關(guān)系為:(ADC_RES[1:0],ADC_RESL[7:0])=2109.3A/D轉(zhuǎn)換器的應(yīng)用

實(shí)現(xiàn)A/D轉(zhuǎn)換的步驟如下:(1)設(shè)置P1ASF寄存器,確定P1口的相應(yīng)引腳作為模擬輸入通道,設(shè)置輔助寄存器AUXR1中的ADRJ位確定轉(zhuǎn)換結(jié)果保存格式;(2)設(shè)置A/D轉(zhuǎn)換控制寄存器ADC_CONTR,打開A/D轉(zhuǎn)換電源,確定轉(zhuǎn)換速度和轉(zhuǎn)換通道;(3)啟動(dòng)A/D轉(zhuǎn)換。上電后首次打開內(nèi)部AD轉(zhuǎn)換模擬電源時(shí),需適當(dāng)延時(shí),待內(nèi)部模擬電源穩(wěn)定后,再啟動(dòng)A/D轉(zhuǎn)換。(4)A/D轉(zhuǎn)換啟動(dòng)后經(jīng)4個(gè)時(shí)鐘周期延時(shí)可以通過軟件查詢ADC_CONTR寄存器中的ADC_FLAG位是否為1,當(dāng)ADC_FLAG為1時(shí)表明A/D轉(zhuǎn)換結(jié)束。AD轉(zhuǎn)換結(jié)束后需將ADC_FLAG位清0?!纠?-1】設(shè)單片機(jī)的系統(tǒng)時(shí)鐘頻率為12MHz,利用STC12C5A60S2單片機(jī)中的A/D轉(zhuǎn)換模塊,將測(cè)溫電阻PT1000的阻值隨溫度變化所形成的電壓信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),單片機(jī)讀取后存放于30H、31H單元,如圖9-5所示。

【例9-1】設(shè)單片機(jī)的系統(tǒng)時(shí)鐘頻率為12MHz,利用STC12C5A60S2單片機(jī)中的A/D轉(zhuǎn)換模塊,將測(cè)溫電阻PT1000的阻值隨溫度變化所形成的電壓信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),單片機(jī)讀取后存放于30H、31H單元,如圖9-5所示。

分析:首先將PT1000阻值變化所反應(yīng)出的電壓信號(hào)經(jīng)儀表放大器AD623放大成0-5V的電壓信號(hào)。經(jīng)單片機(jī)內(nèi)部的A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量,為了提高轉(zhuǎn)換的精確度,盡量減小電源噪聲的影響,可連續(xù)采集64次,并對(duì)A/D轉(zhuǎn)換的結(jié)果求和,相當(dāng)于實(shí)現(xiàn)16位的A/D轉(zhuǎn)換。匯編語(yǔ)言子程序AD_RESULT1EQU30H;A/D轉(zhuǎn)換結(jié)果的高8位AD_RESULT2EQU31H;A/D轉(zhuǎn)換結(jié)果的低8位P1ASFEQU9DHAUXR1EQUA2HADC_CONTREQUBCHAD_CONVERT: MOVP1ASF,#01H;選擇P1.0為A/D轉(zhuǎn)換模擬量的輸入

ORLAUXR1,#00000100B;選擇ADRJ位為1 MOVA,#0E0HMOVADC_CONTR,A;開啟A/D轉(zhuǎn)換的電源 MOV AD_RESULT1,#00H MOV AD_RESULT2,#00H

LCALLDELAY_10μs;等待A/D轉(zhuǎn)換電源穩(wěn)定 MOV A,#11101000B MOV ADC_CONTR,A

;啟動(dòng)A/D轉(zhuǎn)換 MOV R6,#64 ;R6作為計(jì)數(shù)器AD_CONVERT1:

LCALLAD_CONV;調(diào)用A/D轉(zhuǎn)換的子程序 DJNZR6,AD_CONVERT1;64次轉(zhuǎn)換未結(jié)束,繼續(xù)轉(zhuǎn)換 MOVA,#0 MOVADC_CONTR,A;清ADC_FLAG位,并停止AD轉(zhuǎn)換 RETAD_CONV: MOV A,ADC_CONTR JNB ACC.4,AD_CONV;等待A/D轉(zhuǎn)換結(jié)束 MOV A,#11101000B MOV ADC_CONTR,A ;再次啟動(dòng)AD轉(zhuǎn)換

MOV A,ADC_RESL;讀轉(zhuǎn)換結(jié)果的低8位 ADD A,AD_RESULT2;與低8位結(jié)果相加 MOVAD_RESULT2,A;將得到的結(jié)果存放至31H單元MOVA,ADC_RES;讀轉(zhuǎn)換結(jié)果的高兩位ANLA,#03H;屏蔽ADC_RES寄存器的高6位

ADDCA,AD_RESULT1;與高8位結(jié)果相加 MOVAD_RESULT1,A;將得到的結(jié)果存放至30H單元 RETDELAY_10μs:

MOV

R5,#1EH

DJNZ

R5,$

RETC51程序:#include<STC12C5A.h>#include<intrins.h>//聲明本征函數(shù)庫(kù)unsignedinttemp,result;unsignedcharnum=0x40;//設(shè)置A/D轉(zhuǎn)換次數(shù)voidAD_CONV();//A/D轉(zhuǎn)換函數(shù)的聲明voidDELAY_10μs();//延時(shí)10μs函數(shù)的聲明voidmain(){ P1ASF=0x01;選擇P1.0為A/D轉(zhuǎn)換模擬量的輸入

AUXR1=0x04;選擇ADRJ位為1 ADC_CONTR=0xE0;//開啟動(dòng)A/D轉(zhuǎn)換的電源 DELAY_10μs();//延時(shí)10μs ADC_CONTR=0xE8;//啟動(dòng)A/D轉(zhuǎn)換

while(num!=0) { AD_CONV();//調(diào)用A/D轉(zhuǎn)換函數(shù) num--;//計(jì)數(shù)值減1 }

while(1);}

voidAD_CONV(){

do{ temp=ADC_CONTR;//讀A/D轉(zhuǎn)換的控制寄存器的內(nèi)容 }while((temp&0x10)!=0x10);//等待A/D轉(zhuǎn)換結(jié)束 ADC_CONTR=0xE8;//再次啟動(dòng)A/D轉(zhuǎn)換 temp=ADC_RESL;//讀轉(zhuǎn)換結(jié)果的低8

溫馨提示

  • 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)論