提高PIC16C711单片机片内A/D分辨率的方法
发布时间:2008/6/3 0:00:00 访问次数:519
    
    
    来源:单片机与嵌入式系统应用 作者:中国直升机设计研究所 李艳萍 蔡春富
    
    摘要:介绍一种将pic16c711片内8位a/d提高到11位的方法。此方法电路简单,速度快,可提高单片机应用系统的性能价格比,具有一定的推广价值。
    
    关键词:pic16c711 单片机 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 ;稳定
&
    
    
    来源:单片机与嵌入式系统应用 作者:中国直升机设计研究所 李艳萍 蔡春富
    
    摘要:介绍一种将pic16c711片内8位a/d提高到11位的方法。此方法电路简单,速度快,可提高单片机应用系统的性能价格比,具有一定的推广价值。
    
    关键词:pic16c711 单片机 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 ;稳定
&