位置:51电子网 » 技术资料 » 单 片 机

将PIC16C711片内8位A/D提高到11位的方法

发布时间:2008/8/19 0:00:00 访问次数:534

  目前,单片机中嵌入的a/d一般为8位到10位,难以满足信号处理应用中高分辨率的要求;而外接高分辨率的a/d将使成本明显提高,因为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的单片机稍加改动均可使用,具有推广价值。

  目前,单片机中嵌入的a/d一般为8位到10位,难以满足信号处理应用中高分辨率的要求;而外接高分辨率的a/d将使成本明显提高,因为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的单片机稍加改动均可使用,具有推广价值。

-->
相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!