提高PIC16C711單片機(jī)片內(nèi)A/D分辨率方法
二、工作原理
實(shí)現(xiàn)11位A/D轉(zhuǎn)換由PIC16C711做2次8位A/D轉(zhuǎn)換完成。PIC16C711有4個(gè)模擬量輸入通道RA0~RA3,這些模擬量輸入通道復(fù)用1個(gè)采樣保持器進(jìn)入到A/D轉(zhuǎn)換器。參考電壓Vref可以來自外部也可以來自內(nèi)部VDD,A/D轉(zhuǎn)換器屬于逐次逼近式,轉(zhuǎn)換結(jié)果(8位)存入ADRES寄存器。在A/D轉(zhuǎn)換前必然選擇適當(dāng)?shù)耐ǖ?設(shè)置足夠的采樣時(shí)間。用戶可以通過設(shè)置A/D控制寄存器ADCON0和ADCON1來控制其轉(zhuǎn)換過程,同時(shí)A/D轉(zhuǎn)換的狀態(tài)也會(huì)在ADCON0中體現(xiàn)出來。
先將待轉(zhuǎn)換的電壓Vi送到PIC16C711的RA0通道做一次A/D轉(zhuǎn)換。根據(jù)轉(zhuǎn)換所得的數(shù)字量由軟件算出Vi在8檔中位置,用Vi減去Vi所在檔的起始電壓。將所得差值放大8位,使之變?yōu)?~5V電壓信號(hào),再送給PIC16C711的RA1通道做1次A/D轉(zhuǎn)換,所得數(shù)字量是11位AD轉(zhuǎn)換的低8位,而檔位CBA就是高3位,從而實(shí)現(xiàn)11位A/D轉(zhuǎn)換。
舉例說明如下:假設(shè)輸入電壓Vi為3V,程序控制PIC16C711的RA0通道先進(jìn)行第1次A/D轉(zhuǎn)換,所得結(jié)果是153,即3/5255=153,對(duì)應(yīng)8位數(shù)字量為10011001。將低5位屏蔽,得10000000,循環(huán)右移5次,得00000100,此時(shí)低3位對(duì)應(yīng)的就是Vi=3V電壓時(shí)的檔位,即第4檔,CBA=100,程序?qū)⒃?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/檔位">檔位由RB2,RB1,RB0輸出,作為8選一模擬開關(guān)的通道選擇,使CD4051輸出2.5V,即5/84=2.5V。該電壓經(jīng)IC2運(yùn)放跟隨,再經(jīng)IC3進(jìn)行差分放大。設(shè)計(jì)時(shí)調(diào)整R11,R12,R13和R14的阻值,使放大倍數(shù)為8位,則得放大器IC3輸出Vo=8(Vi-2.5)=8(3-2.5)=4.0V。選擇RA1通道進(jìn)行第2次A/D轉(zhuǎn)換,結(jié)果為11001100,這就是11位A/D轉(zhuǎn)換結(jié)果的低8位。檔位100為11位A/D轉(zhuǎn)換的高3位,合起來就是11位A/D轉(zhuǎn)換的結(jié)果10011001100。
三、程序
以下是使用PIC16C711指令系統(tǒng)完成11位A/D轉(zhuǎn)換的程序段。
BSF STATUS,RP0;選頁面1
MOVLW 00000010B ;RA0、RA1為模擬通道
MOVWF ADCON1 ;內(nèi)部參考電壓
BCF STATUS,RP0 ;選頁面0
評(píng)論