0、引言
本次系统介绍了以AT89C51单片机为核心的温度监测控制系统的工作原理和设计方法。温度信号由温度传感器芯片DS18B20采集,并以数字信号的方式传送给单片机,单片机再控制四位八段分立式数码管显示实时温度,默认下限阈值为25℃,默认上限阈值为30℃,且阈值温度支持通过独立按键来修改,当实际温度超出上限温度,系统将闪烁红色LED、启动蜂鸣器报警、打开风扇散热;当实际温度低于下限温度,系统将闪烁蓝色LED、启动蜂鸣器报警、打开加热器;当系统温度在上下限阈值温度之间(阈值保护:无法修改为下限阈值大于上限阈值)系统只有数码管显示温度,其他输出关闭。
1、研究目的
在粮仓温度检测、危险化学品仓库等温度检测中,传统的做法只是将温度作为一个输入参数,根据温度的高低发出不同的警报,而不能进行自主的温度调控,为解决这一问题,设计了本套仿真系统。
2、功能描述
读取由DS18B20作为温度传感器检测到的温度数值,并进行处理;
温度的实时显示;
可以通过按键在线调整上下限阈值温度;
不同方式的声光报警;
控制加散热器的启停;
3、硬件设计
本系统的主要硬件电路包括:温度检测电路,数码管显示电路,报警电路,加散热模块,按键检测模块。
图1 硬件框图
数码管显示单元:四位八段数码管,共阴接法,利用51单片机灌电流较强能力简化了硬件电路。
声光报警单元:一个有源蜂鸣器,红色和蓝色的LED各一个,同样采用共阴接法。
温度检测单元:DS18B20是一款数字式温度传感器,单总线通信和挂127个器件的特性极大的节约了单片机IO资源。
图2 仿真电路
4、软件设计
主要的软件模块包括:温度传感器程序、数码管显示程序、报警程序、按键检测及参数调整程序、定时器中断服务程序、外部中断服务程序。
4.1主函数
图3 主程序流程图设计
4.2定时器中断服务函数
图4 定时器中断服务函数流程图
4.3外部中断服务函数
图5 外部中断服务函数流程图
6、总结与感想
本项目实现了预期的功能的同时,也存在一些问题:
1.加热器和散热器只有开关控制,没有精准的线性控制,本系统只是一个简陋的闭环系统,实际控制效果并不会太好。在软件算法上可以根据自动控制原理,加入PID调节控制,做成稳定的闭环控制系统,相比之下这样更有实际意义。
2.DS18B20可以在总线上挂127个从器件,这样做可以节省大量的IO引脚,用来检测多个节点的温度,这样的做法在实际的粮仓温度检测的实际应用中是非常实用的。
3.数据存储功能,可以将过去的节点温度存放至数据存储器或外置FLASH中,这样在断电后或出现故障后有线索供我们查找,便于发现问题。 鉴于时间的原因,以上的缺陷会在以后进行升级优化。
本学期做了三个工程项目,感触良多,从第一个项目开始的时候,刚刚接触KEIL,连最基本的建工程操作都漏洞百出,后来慢慢的了解了利用搜索引擎工具查阅资料,对IDE的掌握也越来越熟练,同时也发现:理论指导实践,实践出真知。当我们一味盲目的操作和编写代码的时候,没有理论的指导,这样的效率简直低的可怕,很有可能就是一个寄存器的设置不正确却因为没有仔细阅读数据手册而导致项目延误很多天;我们曾经对自己傲人的考试分数沾沾自喜,而如今想起来都忍不住为当初那点纸上谈兵的无知而脸红,理论存在的意义不是考试不是考研不是分数不是死记硬背,理论是前辈们辛辛苦苦总结出的定理、公式,其目的不是将规律抽象出来而已,而是为了更好的理解和传播前辈的只是,真正的意义是带着理论走到实践中,让我们后人有机会快速的站在巨人的肩膀上,只是为了向前迈一步。
源代码与仿真下载链接:【8051单片机】基于Protues仿真的温度监测控制系统.rar