将PIC16C711片内8位A/D提高到11位的方法
发布时间:2008/8/19 0:00:00 访问次数:534
本文介绍一种提高pic16c711单片机片内a/d分辨率的方法,将pic16c711片内的8位a/d提高到11位。这种方法在pic系列的其他单片机也适用。
美国microchip公司推出的8位单片机pic16c711是一种性能价格比很高的单片机。它价格低、封装小、采用cmos工艺,具有otp型,开发起来很方便。它内含4路8位高速a/d,将它扩展到11位后,可以大大提高单片机应用系统的性能价格比。
一、硬件电路
实现扩展的原理图如图1所示。8个等值的精密电阻r将0~5v基准电压分割成8档,每档范围为0.625v。8个抽头分别接cd4051八选一模拟开关的8个输入端,通道选择控制端c,b,a分别由pic16c711单片机的rb2,rb1, rb0控制。ic2和ic3为高输入阻抗运放,ic2构成跟随器,ic3构成精密差分放大器。
二、工作原理
实现11位a/d转换由pic16c711做2次8位a/d转换完成。pic16c711 有4个模拟量输入通道ra0~ra3,这些模拟量输入通道复用1个采样保持器进入到a/d转换器。参考电压vref可以来自外部也可以来自内部vdd, a/d转换器属于逐次逼近式,转换结果(8位)存入adres寄存器。在a/d转换前必然选择适当的通道,设置足够的采样时间。用户可以通过设置a/d控制寄存器adcon0和adcon1来控制其转换过程,同时a/d转换的状态也会在adcon0中体现出来。
先将待转换的电压vi送到pic16c711的ra0通道做一次a/d转换。根据转换所得的数字量由软件算出vi在8档中位置,用vi减去vi所在档的起始电压。将所得差值放大8位,使之变为0~5v电压信号,再送给pic16c711的 ra1通道做1次a/d转换,所得数字量是11位ad转换的低8位,而档位cba就是高3位,从而实现11位a/d转换。
举例说明如下:假设输入电压vi为3v,程序控制pic16c711的ra0通道先进行第 1次a/d转换,所得结果是153,即3/5×255=153,对应8位数字量为10011001。将低5位屏蔽,得10000000,循环右移5次,得 00000100,此时低3位对应的就是vi=3v电压时的档位,即第4档,cba=100,程序将该档位由rb2,rb1,rb0输出,作为8选一模拟开关的通道选择,使cd4051输出2.5v,即5/8×4=2.5v。该电压经ic2运放跟随,再经ic3进行差分放大。设计时调整r11,r12, r13和r14的阻值,使放大倍数为8位,则得放大器ic3输出vo=8(vi-2.5)=8(3-2.5)=4.0v。选择ra1通道进行第2次a/d 转换,结果为11001100,这就是11位a/d转换结果的低8位。档位100为11位a/d转换的高3位,合起来就是11位a/d转换的结果 10011001100。
三、程序
以下是使用pic16c711指令系统完成11位a/d转换的程序段。
bsf status,rp0;选页面1
movlw 00000010b ;ra0、ra1为模拟通道
movwf adcon1 ;内部参考电压
bcf status,rp0 ;选页面0
movlw 11000001b ;选ra0通道和内部时钟
movwf adcon0
movlw .125 ;延时125μs,等待输入
call wait ;稳定
bsf adcon0,go ;启动a/d
loop btfsc adcon0,go ;判断a/d完成否
goto loop
movf adres,w ;取转换结果
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转换结果存d0
movwf d0
wait movwf temp ;延时子程序
next decfsz temp,1
goto next
return
用这种方法实现的11位a/d转换速度快pic16c711基本上都是单周期指令,在4mhz振荡频率下指令周期1μs,进行1次a/d转换最短时间20μs;2次a/d转换40μs;2个运放变换时间20μs×2=40μs。总的转换时间为百μs级。
本文介绍的方法电路简单,速度快,调试方便,已用于我们研制的单片机电阻炉温自动控制系统中,取得了预期的效果。对于其他带8位、10位a/d的单片机稍加改动均可使用,具有推广价值。
本文介绍一种提高pic16c711单片机片内a/d分辨率的方法,将pic16c711片内的8位a/d提高到11位。这种方法在pic系列的其他单片机也适用。
美国microchip公司推出的8位单片机pic16c711是一种性能价格比很高的单片机。它价格低、封装小、采用cmos工艺,具有otp型,开发起来很方便。它内含4路8位高速a/d,将它扩展到11位后,可以大大提高单片机应用系统的性能价格比。
一、硬件电路
实现扩展的原理图如图1所示。8个等值的精密电阻r将0~5v基准电压分割成8档,每档范围为0.625v。8个抽头分别接cd4051八选一模拟开关的8个输入端,通道选择控制端c,b,a分别由pic16c711单片机的rb2,rb1, rb0控制。ic2和ic3为高输入阻抗运放,ic2构成跟随器,ic3构成精密差分放大器。
二、工作原理
实现11位a/d转换由pic16c711做2次8位a/d转换完成。pic16c711 有4个模拟量输入通道ra0~ra3,这些模拟量输入通道复用1个采样保持器进入到a/d转换器。参考电压vref可以来自外部也可以来自内部vdd, a/d转换器属于逐次逼近式,转换结果(8位)存入adres寄存器。在a/d转换前必然选择适当的通道,设置足够的采样时间。用户可以通过设置a/d控制寄存器adcon0和adcon1来控制其转换过程,同时a/d转换的状态也会在adcon0中体现出来。
先将待转换的电压vi送到pic16c711的ra0通道做一次a/d转换。根据转换所得的数字量由软件算出vi在8档中位置,用vi减去vi所在档的起始电压。将所得差值放大8位,使之变为0~5v电压信号,再送给pic16c711的 ra1通道做1次a/d转换,所得数字量是11位ad转换的低8位,而档位cba就是高3位,从而实现11位a/d转换。
举例说明如下:假设输入电压vi为3v,程序控制pic16c711的ra0通道先进行第 1次a/d转换,所得结果是153,即3/5×255=153,对应8位数字量为10011001。将低5位屏蔽,得10000000,循环右移5次,得 00000100,此时低3位对应的就是vi=3v电压时的档位,即第4档,cba=100,程序将该档位由rb2,rb1,rb0输出,作为8选一模拟开关的通道选择,使cd4051输出2.5v,即5/8×4=2.5v。该电压经ic2运放跟随,再经ic3进行差分放大。设计时调整r11,r12, r13和r14的阻值,使放大倍数为8位,则得放大器ic3输出vo=8(vi-2.5)=8(3-2.5)=4.0v。选择ra1通道进行第2次a/d 转换,结果为11001100,这就是11位a/d转换结果的低8位。档位100为11位a/d转换的高3位,合起来就是11位a/d转换的结果 10011001100。
三、程序
以下是使用pic16c711指令系统完成11位a/d转换的程序段。
bsf status,rp0;选页面1
movlw 00000010b ;ra0、ra1为模拟通道
movwf adcon1 ;内部参考电压
bcf status,rp0 ;选页面0
movlw 11000001b ;选ra0通道和内部时钟
movwf adcon0
movlw .125 ;延时125μs,等待输入
call wait ;稳定
bsf adcon0,go ;启动a/d
loop btfsc adcon0,go ;判断a/d完成否
goto loop
movf adres,w ;取转换结果
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转换结果存d0
movwf d0
wait movwf temp ;延时子程序
next decfsz temp,1
goto next
return
用这种方法实现的11位a/d转换速度快pic16c711基本上都是单周期指令,在4mhz振荡频率下指令周期1μs,进行1次a/d转换最短时间20μs;2次a/d转换40μs;2个运放变换时间20μs×2=40μs。总的转换时间为百μs级。
本文介绍的方法电路简单,速度快,调试方便,已用于我们研制的单片机电阻炉温自动控制系统中,取得了预期的效果。对于其他带8位、10位a/d的单片机稍加改动均可使用,具有推广价值。
上一篇:最全的关于PIC单片机入门宝典