《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 提高PIC16C711單片機片內(nèi)A/D分辨率的方法
提高PIC16C711單片機片內(nèi)A/D分辨率的方法
摘要: 介紹一種將PIC16C711片內(nèi)8位A/D提高到11位的方法,。此方法電路簡單,速度快,,可提高單片機應(yīng)用系統(tǒng)的性能價格比,,具有一定的推廣價值,。
Abstract:
Key words :

  目前,單片機中嵌入的A/D一般為8位到10位,,難以滿足信號處理應(yīng)用中高分辨率的要求,;而外接高分辨率的A/D將使成本明顯提高,,因為A/D轉(zhuǎn)換器的價格將隨其位數(shù)的增加而成倍增加,。本文介紹一種提高PIC16C711單片機片內(nèi)A/D分辨率的方法,將PIC16C711片內(nèi)的8位A/D提高到11位,。這種方法在PIC系列的其他單片機也適用,。

  美國Microchip公司推出的8位單片機PIC16C711是一種性能價格比很高的單片機。它價格低、封裝小,、采用CMOS工藝,,具有OTP型,開發(fā)起來很方便,。它內(nèi)含4路8位高速A/D,,將它擴展到11位后,可以大大提高單片機應(yīng)用系統(tǒng)的性能價格比,。

  一,、硬件電路

  實現(xiàn)擴展的原理圖如圖1所示。8個等值的精密電阻R將0~5V基準(zhǔn)電壓分割成8檔,,每檔范圍為0.625V,。8個抽頭分別接CD4051八選一模擬開關(guān)的8個輸入端,通道選擇控制端C,,B,,A分別由PIC16C711單片機的RB2,RB1,,RB0控制,。IC2和IC3為高輸入阻抗運放,IC2構(gòu)成跟隨器,,IC3構(gòu)成精密差分放大器,。

實現(xiàn)擴展的原理圖

  二、工作原理

  實現(xiàn)11位A/D轉(zhuǎn)換由PIC16C711

 

做2次8位A/D轉(zhuǎn)換完成,。PIC16C711有4個模擬量輸入通道RA0~RA3,,這些模擬量輸入通道復(fù)用1個采樣保持器進入到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è)置A/D控制寄存器ADCON0和ADCON1來控制其轉(zhuǎn)換過程,同時A/D轉(zhuǎn)換的狀態(tài)也會在ADCON0中體現(xiàn)出來,。

 

  先將待轉(zhuǎn)換的電壓Vi送到PIC16C711的RA0通道做一次A/D轉(zhuǎn)換,。根據(jù)轉(zhuǎn)換所得的數(shù)字量由軟件算出Vi在8檔中位置,用Vi減去Vi所在檔的起始電壓,。將所得差值放大8位,,使之變?yōu)?~5V電壓信號,再送給PIC16C711的RA1通道做1次A/D轉(zhuǎn)換,,所得數(shù)字量是11位AD轉(zhuǎn)換的低8位,,而檔位CBA就是高3位,,從而實現(xiàn)11位A/D轉(zhuǎn)換。

  舉例說明如下:假設(shè)輸入電壓Vi為3V,,程序控制PIC16C711的RA0通道先進行第1次A/D轉(zhuǎn)換,,所得結(jié)果是153,即3/5×255=153,,對應(yīng)8位數(shù)字量為10011001,。將低5位屏蔽,得10000000,,循環(huán)右移5次,,得00000100,此時低3位對應(yīng)的就是Vi=3V電壓時的檔位,,即第4檔,,CBA=100,程序?qū)⒃摍n位由RB2,,RB1,,RB0輸出,作為8選一模擬開關(guān)的通道選擇,,使CD4051輸出2.5V,,即5/8×4=2.5V。該電壓經(jīng)IC2運放跟隨,,再經(jīng)IC3進行差分放大,。設(shè)計時調(diào)整R11,R12,,R13和R14的阻值,,使放大倍數(shù)為8位,則得放大器IC3輸出Vo=8(Vi-2.5)=8(3-2.5)=4.0V,。選擇RA1通道進行第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

  MOVLW 11000001B ,;選RA0通道和內(nèi)部時鐘

  MOVWF ADCON0

  MOVLW .125 ,;延時125μs,等待輸入

  CALL WAIT ,;穩(wěn)定

  BSF ADCON0,,GO ;啟動A/D

  LOOP BTFSC ADCON0,,GO ,;判斷A/D完成否

  GOTO LOOP

  MOVF ADRES,W ,;取轉(zhuǎn)換結(jié)果

  ANDLW 0E0 ,;屏蔽低5位

  MOVWF D1 ;存入D1

  BCF STATUS,,C

  RRF D1,,1 ;右移5次

  RRF D1,,1

  RRF D1,,1

  RRF D1,1

  RRF D1,,1

  MOVF D1,,W

  MOVWF PORTB ;檔位輸出

  MOVLW 11001001B ,;選RA1通道

  MOVWF ADCON0

  MOVLW .60 ,;延時60μs

  CALL WAIT

  BSF ADCON0,GO ,;啟動A/D

  LOOP1 BTFSC ADCON0,,GO ;判斷A/D完成否

  GOTO LOOP1

  MOVF ADRES,,W ,;A/D轉(zhuǎn)換結(jié)果存D0

  MOVWF D0

  WAIT MOVWF TEMP;延時子程序

 

  NEXT DECFSZ TEMP,,1

  GOTO NEXT

  RETURN

  用這種方法實現(xiàn)的11位A/D轉(zhuǎn)換速度快PIC16C711基本上都是單周期指令,,在4MHz振蕩頻率下指令周期1μs,進行1次A/D轉(zhuǎn)換最短時間20μs,;2次A/D轉(zhuǎn)換40μs,;2個運放變換時間20μs×2=40μs??偟霓D(zhuǎn)換時間為百μs級,。

  本文介紹的方法電路簡單,,速度快,調(diào)試方便,,已用于我們研制的單片機電阻爐溫自動控制系統(tǒng)中,,取得了預(yù)期的效果。對于其他帶8位,、10位A/D的單片機稍加改動均可使用,,具有推廣價值。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。