前几天推了一篇DS18B20与LCD1602温度测量显示案例的文章,今天在上次基础之上做一个DS18B20温度报警系统设计应用的案例。该系统能够实时检测环境温度,并根据处理结果,发出声光报警信号,并具备有以下功能:
(1)具有报警的阙值设置功能。
(2)具有报警取消功能。
(3)具有显示屏显示当前温度和报警温度阙值的功能。
(4)显示屏信息温度数据,每秒钟更新一次。
-
系统的原理图
该系统主要由单片机最小系统、DS18B20测温模块、LCD1602液晶显示模块、按键电路、蜂鸣器报警电路。项目需要监测温度并显示,需要用到测温模块和显示模块,另外需要按键模块来对单片机进行控制。通过STC89C51单片机来控制整个系统的运行,通过单片机实时读取DS18B20的测量数据,与报警值进行比较,当温度超过报警值时,发出报警信息。同时温度的测量结果实时现在LCD1602上。可以通过按键设置温度报警阈值。
2.系统程序设计
系统程序主要包括主程序、读出温度子程序、温度转换命令程序、计算温度子程序、显示数据刷新子程序等等。
2.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每ls 进行一次。
2.2测温程序及转换
该板块主要是通过DS18B20监测温度,并将检测到的温度转换为数字储存在变量中,定义一个字符串,将温度数值数字转换为字符串,便于发送给显示模块进行显示。
2.3显示模块
主要接收来自测温模块以及设温模块传入的字符串信息而不是温度值,通过显示温度值转换的字符串来显示温度。
温度显示处理如上图代码所示,这里采用将浮点的温度数值,通过sprintf函数转换为字符串,然后调用LcdShowStr函数,在屏幕显示温度值。
sprintf指的是字符串格式化命令,函数声明为 int sprintf(char *string, char *format [,argument,...]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。
2.4设温模块
通过监控设温键的状态来随时准备进入设温状态,设温键按下则设温指示灯亮起,通过指示灯的亮起达到进入设温状态,此后一直在设温中死循环,直到再次按下设温键才会跳出循环。
在设温状态中,同时监控S2、S3、S4三个按钮,对应的功能分别为“升温”、“降温”、“跳出设温状态”,升温时每次将定义的阈值在原来的基础之上加0.1°C,由于使用的是IF语句且并没有定义在按键按下再弹起后才开始执行,所以长按按键时会持续增加阈值,降温键也是如此。
3.运行视频见连接:DS18B20温度报警系统设计
公众号回复《DS18B20报警》自动获取完整程序