摘要:单片机具有体积小、功能强、成本低、 应用 面广等优点,可以说,智能控制与自动控制的核心就是单片机。 目前 ,一个 学习 与应用单片机的高潮在全 社会 大规模地兴起。学习单片机的最有效 方法 就是 理论 与实践并重,本文用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