一、實驗?zāi)康?/strong>
了解STC單片機(jī)ADC的結(jié)構(gòu);
掌握STC單片機(jī)ADC的使用。
二、實驗原理
STC15F2K60S2單片機(jī)內(nèi)含8路10位高速AD轉(zhuǎn)換器,速度可達(dá)30萬次/秒。單片機(jī)P1口既可作為普通I/O口,也可作為AD轉(zhuǎn)換器模擬電壓輸入口。AD轉(zhuǎn)換器相關(guān)的寄存器如表1所示。
表1 ADC轉(zhuǎn)換相關(guān)寄存器
P1ASF | P17ASF | P16ASF | P15ASF | P14ASF | P13ASF | P12ASF | P11ASF | P10ASF |
ADC_CONTR | ADC_POWER | SPEED1 | SPEED0 | ADC_FLAG | ADC_START | CHS2 | CHS1 | CHS0 |
ADC_RES |
|
|
|
|
|
|
|
|
ADC_RESL |
|
|
|
|
|
|
|
|
CLK_DIV PCON2 | MCKO_S1 | MCKO_S0 | ADRJ | Tx_Rx | Tx2_Rx2 | CLKS2 | CLKS1 | CLKS0 |
IE | EA | ELVD | EADC | ES | ET1 | EX1 | ET0 | EX0 |
IP | PPCA | PLVD | PADC | PS | PT1 | PX1 | PT0 | PX0 |
①P1口控制寄存器P1ASF
P1ASF某一位為“1”,P1口對應(yīng)的引腳設(shè)為模擬功能。某一位為“0”,對應(yīng)的引腳設(shè)為普通I/O。
②ADC控制寄存器ADC_CONTR
ADC_POWER=1,打開AD轉(zhuǎn)換器電源(關(guān)閉電源可降低功耗,ADC初次上電需適當(dāng)延時,再啟動AD轉(zhuǎn)換)。
SPEED1、SPEED0選擇AD轉(zhuǎn)換速度。
SPEED1 | SPEED0 | AD轉(zhuǎn)換時間 |
1 | 1 | 90個時鐘周期 |
1 | 0 | 180個時鐘周期 |
0 | 1 | 360個時鐘周期 |
0 | 0 | 540個時鐘周期 |
ADC_FLAG:AD轉(zhuǎn)換結(jié)束標(biāo)志,需由軟件清0。
ADC_START:AD轉(zhuǎn)換啟動控制。
CHS2、CHS1、CHS0:選擇模擬輸入通道P1.0~P1.7。
轉(zhuǎn)換結(jié)果存放在ADC_RES和ADC_RESL寄存器中,當(dāng)CLK_DIV.5/ADRJ=0時,ADC_RES為結(jié)果的高8位,ADC_RESL為結(jié)果的低2位(如表2所示)。當(dāng)CLK_DIV.5/ADRJ=1時,ADC_RES為結(jié)果的高2位,ADC_RESL為結(jié)果的低8位(如表3所示)。
ADC_RES | RES9 | RES8 | RES7 | RES6 | RES5 | RES4 | RES3 | RES2 |
ADC_RESL | - | - | - | - | - | - | RES1 | RES0 |
ADC_RES |
|
|
|
|
|
| RES9 | RES8 |
ADC_RESL | RES7 | RES6 | RES5 | RES4 | RES3 | RES2 | RES1 | RES0 |
STC15F2K60S2的AD轉(zhuǎn)換器以Vcc為參考電壓,當(dāng)ADRJ=0時,10位轉(zhuǎn)換結(jié)果與輸入模擬電壓的關(guān)系由式(1)計算:
…………...……………………(1)
如果只取高8位,則由式(2)計算:
……………………………………...…………………(2)
當(dāng)ADRJ=1時,10位轉(zhuǎn)換結(jié)果與輸入模擬電壓的關(guān)系由式(3)計算:
…………………………………(3)
如果單片機(jī)Vcc電壓不穩(wěn),會引起AD轉(zhuǎn)換誤差,在實際應(yīng)用中,可用一路AD采樣外部的基準(zhǔn)電壓(如用TL431基準(zhǔn)電源),另一路AD采樣被測電壓,按式(4)計算:
………………………………..…………………..(4)
三、實驗環(huán)境
Windows XP;
Keil μ Vision 4;
STC-ISP-6.28。
四、實驗內(nèi)容
1.實驗連線
分別用兩根8芯杜邦線將單片機(jī)P2口與J61、單片機(jī)P0口與J62連接起來,P0口用于數(shù)碼管的位選擇,P2口輸出數(shù)碼管的顯示碼。用跳線帽短接JP8、JP9,模擬輸入經(jīng)過RC濾波(如圖1所示)。用杜邦線連接連接J35和P1.3,單片機(jī)通道3采樣模擬輸入電壓。
圖1 ADC模擬輸入濾波電路
2.程序設(shè)計
Keil匯編或C語言頭文件REG51.H不包含STC單片機(jī)ADC寄存器定義,而編程時需要用到ADC_CONTR、ADC_RES等特殊功能寄存器,STC-ISP軟件提供各種STC單片機(jī)的寄存器定義頭文件。在STC-ISP軟件界面,選擇頭文件選項卡,選擇好單片機(jī)系列,該系列的寄存定義出現(xiàn)在文本框中,可以復(fù)制頭文件內(nèi)容,也可以保存頭文件(如圖8-2所示)。本實驗可以將頭文件命名為STC15F2K.H,保存到\Keil\C51\INC文件夾中,以后編程時直接用該頭文件替換REG51.H。
AD轉(zhuǎn)換可以用中斷的方式,也可以用查詢的方式。每次轉(zhuǎn)換結(jié)束,將ADC_RES寄存器和ADC_RESL寄存器內(nèi)容存入整型變量result。當(dāng)ADRJ=0時:
int result;
result=(ADC_RES<<2)|(ADC_RESL&3);
vin=result*Vcc/1024; //Vcc單位為毫伏
圖9-2 STC15F2K系列頭文件
3.程序設(shè)計
程序經(jīng)編譯生成HEX文件,再利用STC-ISP軟件將代碼下載到單片機(jī)中,調(diào)節(jié)多圈電位器W3,觀察數(shù)碼管顯示值的變化。用數(shù)字萬用表核對J35的輸入電壓與數(shù)碼管顯示的電壓是否一致。
五、思考題
1. ADC通道2對2.45V基準(zhǔn)電壓(J41)采樣,通道3對模擬輸入電壓采樣,根據(jù)(4)式計算并顯示被測電壓。
2.如何實現(xiàn)多路電壓檢測并輪流顯示?
以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便保存):
實驗 AD轉(zhuǎn)換.docx
(104.09 KB, 下載次數(shù): 228)
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |