首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
用PICl6F873A单片机设计的高精度电子温度计
来源:本站整理  作者:佚名  2011-01-20 09:58:24



  利用PICl6F873A单片机制作的高精度电子温度计。通过详细介绍该电子温度计的工作原理、编程技术。帮助大家深入掌握PIC单片机的二/十进制BCD码转换和数码管LED显示技术。

  一、电路和工作原理
  
  1.电路组成
  
   上图是该电子温度计的硬件电路。晶振XT和电容C3、C4组成ICl的时钟电路。ICl的RAO((2)脚)通过电阻R2、R0接温度传感器LM35。ICl的RA3((5)脚)外接R3、R4组成分压器为IC2提供所需的校准参考电压。用于电子温度计温度显示(即等效于玻璃温度计的刻度)的校准。

  ICl的RBO~RB6输出三位数码管LED的七段码。三极管V1~V3是数码管显示的数位开关,V1~V3分别控制数码管LEDl~LED3显示温度值的小数点位、个位和十位。K1和R1组成ICl的手动复位电路。

  电路供电为+5V和+9V。+9V电源为温度传感器LM35的工作电源:

  +5V给其余电路供电。二极管D3~D6、C5~C10和7809、7805集成稳压器等组成电源电路。电源适配器可购买,其输出为+12V/500mA。将适配器的输出插入图1中的插座上。即可正常供电工作。制作该电路时。除IC2温度传感器外。其余元器件均安装在印制板上。印制板上的ICl最好安装28脚的活动插座,以便实验时插取方便。

  此外,上图中还附有IC2 LM35和数码管LED的引脚图,LED采用共阳极的。

  2.电路工作原理
  
  (1)温度传感器LM35(IC2)LM35是一种实用的集成温度传感器,其内部有补偿电路,只要外部加适当的元件,便LM35便从0度开始工作。

  三、电子温度计程序流程及源程序按照前面介绍的电子温度计工作原理编制的程序流程如下图所示。

  根据下图的流程图。建立的源程序命名PIC3T·ASM。

  1.PIC3T·ASM鉴于该源程序较长(约200条),难以在本报上刊登,读者可直接向编辑部索取。该源程序已经过验证,完全可以执行。读者只需将PIC3T·ASM在MPLAB集成开发软件下存盘→建立项目PIC3T·pjt、汇编、生成对应的目标码PIC3T·hex,再用PIC编程器将其目标码PIC3T·hex烧写到PICl6F873A中,即可将该芯片接入上图的电路中进行显示观察。

  2.电子温度计显示的实验方法按上图所示把PICl6F873A芯片放在印制板的活动插座上,并固定。

  将电源适配器插头插入适配器插座,接通电源。将LM35探头与上图中A、B、C对接,此时数码管LEDl~LED3即可显示实验场所的环境温度。如果显示的环境温度不标准,可用一标准温度计读出环境温度值。

  用改锥细调多圈电阻器R4。使数码管LED显示值等于标准温度计的指示值。校准即告成功。再将LM35探头与标准温度计放在一起,用电热吹风机对着LM35探头和标准温度计吹热风。观察LED显示值的变化,因对LM35的A/D转换是线性的。所以此时电子温度计的显示值与标准温度值应完全相同。注意:本电子温度计的温度测量范围为lO℃~80℃。分辨率为0.1℃,故命名为高精度电子温度计。

  3.电子温度计的用途上图的电子温度计是取自某制药设备上的定时温控器的部分电路,因该电路可完成独立的测温功能。所以可把它用于电子职业学校的教学演示实验。也可帮助读者深入学习PIC单片机的编程技术,包括温度传感器A/D转换、四位二进制数转BCD/码的方法。以及数码管显示技术等。

  四、二进制数转BCD码的程序技术从下图的程序流程图可看出:

  PIC3T·ASM的源程序是由A/D转换(对LM35的)、二进制数转BCD码和查表程序等组成。A/D转换和查表程序比较规范。限于篇幅这里不再进行详述。二进制数转BCD/码的程序尽管相关书籍有所介绍。但笔者认为有的还不太完整。为此。特对二进制数转BCD码的程序技术进行详述。

  1.二进制数转BCD码的必备知识在上图电路中。温度传感器LM35的输出电压(模拟量)经PICl6F873的RA0位进行A/D转换后生成二进制数,因数码管显示电子温度计的值是十进制数,所以必须将二进制数进行再处理,也就是将二进制转换成BCD码。

  BCD码是用二进制的编码方式表示十进制数。每位十进制数用4位二进制表示,十进制O~9对应的BCD码如表1所示。4位二进制码,共有16种状态。所以除BCD码所占的10种状态之外的6种状态,对于BCD码是非法的。若再将BCD码转换成数码管的笔段码,即可方便地显示出十进制数。

  按上述定义,可以看出:0~9中的任何一个十进制数,用BCD码表示,需4位二进制数;两位十进制数,用BCD码表示,需8位二进制数,一个数据寄存器(自定义RAM)最多存储2位BCD码。而一个数据寄存器(RAM)中若存的是二进制数,转换成BCD码,就可能有3位。

  按上述逻辑关系可以推得:A/D转换的lO位结果寄存器ADESL(8位低字节)加上ADESH(两位高字节)中的二进制数的最大值转换成十进制数(03FFH=D'1023‘)后,若用BCD码表示,至少是3位BCD码(999)。

  上述介绍的二进制数、BCD码、十进制数。以及存放BCD码所需的寄存器数量等。是二进制转换成BCD码的基本知识。

  2.二进制数到BCD码转换规则二进制数到BCD码转换的数学基础并不复杂。但要推导成定量的数学等式却很繁琐。这里仅将其结果直接应用。8位二进制数转换为BCD码的方法为:将二进制数用指令RLF左移l位(即乘2),左移后,进行调整,调整规则是低四位数加3。若加3后大于7,则应加3左移l位:若加3后不大干7。则直接左移1位。对高四位数应加30,该30等效于低四位数的加3。仍按低四位数方法调整。左移l位及调整。直到二进制数每位都左移完成,即完成了二进制数到BCD码的转换。

  在操作时,二进制数每次左移后,都依序转到新的BCD码寄存器(自定义)中,新BCD码寄存器仍同步二进制左移,直到完成为止。它是通过状态寄存器STATUS的进位C的联系,达到多次左移目的的。

  在PIC3T·ASM源程序中。是将10位的A/D转换结果寄存器ADRESX的低8位ADRESL的内容送到自定义寄存器REGL。高2位ADRESH的内容送到自定义寄存器REGH的。所以A/D转换的二进制数转换成对应的BCD码时。是将寄存器REGL、REGH左移。与REGL、REGH同步左移的BCD码寄存器笔者定义为BCD2、BCDl和BCDO(参看PIC3T·ASM源程序的伪指令EQU中的注释)。

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:128,566.40000 毫秒