中国IEEE
关于我们 | 会员登陆 | 收藏本站 | 留 言 薄
 

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管微电子 |  C语言汇编语言SCADA元器件IEEE |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·ARM与嵌入式系统的定位
·89C2051带音乐的电子闹钟(已测试OK…
·51单片机C语言学习
·自制51单片机试验板
·巧妙扩展单片机A/D分辨率
·51单片机入门必读的好文章
·4X4键盘扫描电路用法详解
·单片机0--999999计数器程序
点击TOP(10)  
·89C2051带音乐的电子闹钟(已测试OK…
·自制51单片机试验板
图片文章  

89C2051带音乐的电子…

51单片机C语言学习

自制51单片机试验板

巧妙扩展单片机A/D分…
 
您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 硬件知识 >> 正文

巧妙扩展单片机A/D分辨率
文章来源:中国IEEE整理 点击数: 更新时间:2008-7-6 【字体:
(欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


相关文章:

4X4键盘扫描电路用法详解
单片机0--999999计数器程序
汇编做的单片机秒表程序(通过测试)
用单片机控制的水塔水位控制与检测系统

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖巧妙扩展单片机A/D分辨率〗的最新评论:

    目前,单片机中嵌入的A/D一般为8位到10位,难以满足信号处理应用中高分辨率的要求;而外接高分辨率的A/D将使成本明显提高,因为A/D转换器的价格将随其位数的增加而成倍增加。本文介绍一种提高PIC16C711单片机片内A/D分辨率的方法,将PIC16C711片内的8位A/D提高到11位。这种方法在PIC系列的其他单片机也适用。

    单片机扩展如AD功能,才能使其仍具有极大的生命力。以前用过自带16位AD的单片机,也开发过DSP的项目,外部扩展一片16位AD。都是考虑在选用器件上提高AD精度,从没想过扩展微处理器精度的方法。

    如文中提到的方法,用8个电阻组成分压电路和模拟开关配合的方式,扩展AD分辨率为11位。这样推下去的话,理想的情况下16个电阻配合合适的模拟开关就可以得到12位精度。的确是个好方法,在条件有限或是单片机定型后扩展上时候派上用场。

    这篇文章给我最大的启示,不仅仅在于一个扩展AD精度的方法,更多的是一种思路。一味寻找高精度高性能器件,其实也许会因为价格、等级的问题不能选到合适器件,是否可以找到某种替代方法来解决问题呢?我正在做的一个项目中,需要对若干开关状态的判断,原先采用控制功能切换器件组成不同的通路,进行判断,但由于核心器件更换,控制芯片功能减少,必须考虑其他方法。于是只能考虑了改用电阻与器件的并联,开关闭合相当于短路了相应电阻。将各开关配以不同阻值的电阻,通过对电源分压值的检测就可以判断电路中开关的状态。这种方法在成本上大大减小,测试方法也更灵活,消耗资源也少了很多。

    其实很多时候,我们都需要考虑这种不得已的方法,但正是这些不得已,才更能体现出设计的巧妙。就像是小学生解除了数学题的开心,hoho

      美国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的单片机稍加改动均可使用,具有推广价值。

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵权,将予以删除; 欢迎同类网站做友情链接,QQ留言单片机交流群:14084521(满)59905828,2786387

    中国IEEE 中国电气电子工程师网 版权所有 鲁ICP备08006092号