单片机温度控制系统

来源:岁月联盟 作者:张小卫 时间:2010-08-21
摘要:单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮在全社会大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文用80C51单片机自制了一个温度控制系统,重点介绍了该系统的硬件结构及编程方法。
关键词:单片机、温度传感器、模/数转换器
    一、单片机温度控制系统的组成及工作原理
    在生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。以下简单分析了单片机温度控制系统设计过程及实现方法。现场温度经温度传感器采样后变换为模拟电压信号,经低通滤波滤掉干扰信号后送放大器,信号放大后送模/数转换器转换为数字信号送单片机,单片机根据输入的温度控制范围通过继电器控制加热设备完成温度的控制。本系统的测温范围为0℃~99℃,启动单片机温度控制系统后首先按下第一个按键开始最低温度的设置,这时数码管显示温度数值,每隔一秒温度数值增加一度,当满足用户温度设置最低值时再按一下第一个按键完成最低温度的设置,依次类推通过第二个按键完成最高温度的设置。然后温度检测系统根据用户设定的温度范围完成一定范围的温度控制。
    二、温度检测的设计
    系统测温采用AD590温度传感器,AD590是美国模拟器件公司生产的单片集成两端感温电流源。它的主要特性如下:
    1、流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数;即: ,式中:Ir—流过器件(AD590)的电流,单位为mA;T—热力学温度,单位为K。
    2、AD590的测温范围为-55℃~+150℃;
    3、AD590的电源电压范围为4V~30V;
    4、输出电阻为710MW;
    5、精度高。
    AD590温度传感器输出信号经放大电路放大10倍,再送入模/数转换器ADC0804,转换后送单片机。根据AD590温度传感器特性以及放大10倍后的电压值与现场温度的比较发现,实际温度转换后送入单片机的值与按键输入数值之间有一定的差值,模/数转换器送入单片机的数值是按键输入值得2.5倍。由于单片机不能进行小数乘法运算,所以先对按键输入进行乘5,然后根据运算结果及程序状态字的状态再进行循环右移一位,如果溢出标志位为低电平时直接对累加器进行一次带进位循环右移,如果溢出标志位为高电平时,先对进位标准位CY位置为高电平,然后再进行一次带进位循环右移,通过上述操作使按键输入的温度值与模/数转换器送入单片机的温度值相统一。
    三、具体电路连接如图所示
 
    四、软件编程
    单片机温度控制系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能实现对温度的控制,需要给单片机编写程序,下面给出了温度控制系统的编程方法。
 
    ORG  00H
    START:ANL  P1,#00H;显示00
    JB    P3.4 ,$ ;T0=0?有键按下?
    CALL  DELAY1 ;消除抖动
    JNB   P3.4 ,$;T0=1?放下?
    MOV   R0   ,#00;计温指针初值
    L1: MOV  A  , R0 ;计温指针载入ACC
    MOV  P1   , A ;输出至P1显示
    MOV  R5 , #10 ;延时1秒
    A1:MOV  R6 , #200
    D1:MOV  R7 , #248  ;0.5毫秒
    JNB  P3.4  ,L2  ;第2次按下T0?
    DJNZ  R7,$
    DJNZ  R6,D1
    DJNZ  R5,A1
    INC   A
    DA    A
    MOV   R0 , A
    JMP   L1
    L2:CALL  DELAY1  ;第2次按消除抖动
    JB    P3.4 ,L3 ;放开了没?是则
;跳至L3停止
    JMP   L2
    L3: MOV   A   ,R0
    CALL  CHANGE
    MOV   31H , A  ;下限温度存入31H
    JB   P3.5  ,$   ;T1=0?有键按下?
    CALL  DELAY1    ;消除抖动
    JNB  P3.5  ,$   ;T1=1?放开?
    MOV  R0  ,#00  ;计温指针初值
    L4:MOV  A   ,RO   ;计温指针载入ACC
    MOV  P1  , A   ;显示00
    MOV  R5  ,#10 ;延时1秒
    A2:MOV  R6  ,#200
    D2:MOV  R7  ,#248 ;0.5毫秒
    JNB  P3.5  ,L5  ;第二次按下T1?
    DJNZ  R7 ,$
    DJNZ  R6 ,D2
    DJNZ  R5 , A2
    ADD   A  , #01H
    DA    A
    MOV   R0 , A
    JMP   L4
    L5:CALL  DELAY1  ;第2次按消除抖动
    JB    P3.5 ,L6 ;放开了?是则跳至L6
    JMP   L5
    L6:MOV   A, RO ;
    CALL  CHANGE
    MOV   30H ,A ;上限温度存入30H
    DELAY1:MOV  R6 ,#60 ;30毫秒
    D3:MOV   R7 , #248
    DJNZ  R7 , $
    DJNZ  R6 , D3
    RET
    CHANGE:MOV B ,#5
    MUL   AB
    JNO    D4
    SETB  C
    D4:RRC   A
    RET
    MOV   32H ,#0FFH ;32H旧温度寄存
;器初值
    AAA:MOVX @R0 , A;使BUS为高阻抗
;并令ADC0804开始转换
    WAIT:JB  P2.0  ,ADC ;检测转换完成否
    JMP  WAIT
    ADC:MOVX  A ,@RO ;将转换好的值送入
;累加器
    MOV  33H ,A  ;将现在温度值存入33H
    CLR  C      ;C=0
    SUBB  A ,32H
    JC   TDOWN  ;C=0取入值较大,表示
;温度上升,C=1表示下降
    TUP:MOV  A, 33H ;将现在温度值存入A
    CLR   C
    SUBB  A  ,30H ;与上限温度作比较
    JC   LOOP  ;C=1时表示比上限小须
;加热,C=0表示比上限大,停止加热
    SETB  P2.1
    JMP  LOOP
    TDOWN:MOV A ,33H ;将现在温度值存入A
    CLR  C
    SUBB  A ,31H  ;与下限温度作比较
    JNC  LOOP ;C=1时表示比下限小,须
;加热,C=0表示比下限大
    CLR  P2.1   ;令P2.1动作
    LOOP:MOV  32H ,33H
    CLR   A
    MOV  R4 ,#0FFH  ;延时
    DJNZ R4 ,$
    JMP  AAA
    END
 
    五、结语:
    本文给出了用单片机在0℃~99℃之间,通过用户设置温度上限、下限值来实现一定范围内温度的控制;给出了温度控制系统的硬件连接电路以及软件程序,此系统温度控制只是单片机广泛应用于各行各业中的一例,相信通过大家的聪明才智和努力,一定会使单片机的应用更加广泛化。

[1]李广弟,朱月秀,王秀山.单片机基础.北京:北京航空航天大学出版社,2001.7
[2]万光毅,严义,邢春香.单片机实验与实践教程[M].北京:北京航空航天大学出版社,2006.4