您当前的位置:五五电子网电子知识电子制作仪表-仪器用PICl6F873A单片机设计的高精度电子温度计 正文
用PICl6F873A单片机设计的高精度电子温度计

用PICl6F873A单片机设计的高精度电子温度计

点击数:7796 次   录入时间:03-04 11:57:49   整理:http://www.55dianzi.com   仪表-仪器

  利用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中的注释)。



www.55dianzi.com

  3.二进制数到BCD码转换程序实例
  
  程序流程如下图所示。其中,下图a是二进制数到BCD码的转换流程图。下图b是BCD码(数)调整流程图。

  根据下图的流程。定义的源程序命名为PIC3TD·ASM.其清单如下:

  UST P=PICl6F873A;选芯片型号

TRO EOU 26H

    ;设置等效十进制小数点位寄 存器        TRl EOU 27H     ;设置等效的十进制个位寄存 器     TR2 EOU 28H     :设置等效的十进制10位寄存 器     REGH EOU 3FH     REGLEOU 40H     REGHl EOU 32H     REGLl EOU 33H     COUNT3 EOU 2CH     ;定义左移次数寄存器     BCD2 EOU 3lH     BCDl EoU 30H     BCD0 EOU 2FH     MO EOU 2EH     ORG    0000H     GOTO    START     ORG    10H     :RA3比较电压,RA0输入,RB口 输出BCD码,RC口位扫描控制     START BCF STATUS.RPl     BSF STATUS.RP0     NOP     BCF STATUS.RPO     ;10位A/D转换结果转4位BCD 码(百位未用)     MOVLW 0x03     ;设A/D转换高两位为0x03     MOVWF REGH     ;将0x03通过W送REGH,以便 仿真     MOVLW 0x85     :设A/D转换低8位为0x85     MOVWF REGL     ;将0x85通过W送REGL,以便 仿真     EJZ_BCD1 MOVFW REGH;A/ D转换高两位→W     MOVWF REGHl:W→REGHl     MOVFW REGL;A/D转换低8 位→W     MOVWF REGLl:W→REGLl     MOVLW H'lO':设定左移次数 MOVWF COUNT3
    CLRF BCD0;清BCD0、BCDl、 BCD2     CLRF    BCDl        CLRF    BCD2 BCF STATUS,C;清进位位C     LLMP RLF REGLl,1:REGLl左 移     RLF REGHl,l;REGHl左移     RLF BCD2。1;BCD2左移     RLF BCDl。1:BCDl左移     RLF BCD0,1;BCDO左移     DECFSZ  COUNT3,1:COUNT3 减l不等于0     GOTO POLl;转标号POLl     MOVFW BCD2;BCD→W     ANDLW HOF';取BCD2低四 位     MOVWF TRO;小数点位值送 TR0     SWAPF BCD2,W;BCD2字节交 换     ANDLW H'0F':取BCD2高四位     MOVWF TRl;BCD个位值送 TRl     MOVFW BCDl:BCDl→W     ANDLW H'0F':取BCDl低4位     MOVWF TR2:BCD十位值送 TR2     RETURN     POLl     MOVLIW BCD2:BCD2地址送W     MOVWF FSR:W→间址FSR     CALL ZHCX:调ZHCX     MOVLW BCDl;BCDl地址送W     MOVWF FSR:W→间址FSR     CALL ZHCX:调ZHCX     MOVLW BCDO;BCD0地址送W     MOVWF FSR;W→间址FSR     CALL ZHCX:调用ZHCX     GOTO LLMP:转LLMP     ZHCX MOVLW H'03';将值3→ W     ADDWF INDF,W;W+INDF→ W     MOVWF MO;W→寄存器M0     BTFSC MO,3;M0大于7?

[1] [2]  下一页


本文关键字:单片机  电子温度计  仪表-仪器电子制作 - 仪表-仪器