基于AT89S52单片机的温度监测报警系统

2021-07-18 07:12顾亚龙
电子制作 2021年12期
关键词:子程序温度传感器总线

顾亚龙

(新疆医科大学医学工程技术学院,新疆乌鲁木齐,830011)

现代社会生活中,越来越多的环境对温度的恒定具有较高的要求。例如,泳池的水温不能太低或太高,否则会引起人的不适;蔬菜大棚无论是在冬天还是夏天,室内的温度要保持在一定范围之内,因为植物的生长受到环境温度的影响。单片机和传感器组成的测控系统可以完成对多种信号的采集和控制,被广泛的应用在工业、农业、交通、医疗等行业[1-4]。51 单片机作为测控系统的核心,功能齐全、可靠性强,一经推出,就得到了极大的普及。本文设计的温度监测报警系统,采用了市面上常见的芯片,结构简单,成本低廉,可以同时监测多个环境的温度,应用在多种场合,满足绝大多数的温度监控需求。

1 系统整体设计

系统以单片机为核心,单片机与温度传感器之间双向通信。当单片机向温度传感器发出温度转换命令后,DS18B20 温度传感器首先将测量到的环境温度值进行AD转换,再将采集到的温度通过总线发送给单片机。单片机执行读引脚操作,将总线上读取到的温度值保存并做运算处理,传送给LCD1602 液晶显示器显示。若温度传感器发送给单片机的温度值超出了预定温度范围,则单片机向声光报警电路发出信号,此时声光报警电路同时发出声音和灯光报警。系统中电源分别向单片机、LCD1602 和声光报警电路供电。系统的整体设计框图如图1 所示。

图1 温度监测报警系统总体设计框图

2 硬件电路的设计

■2.1 温度采集电路

本文采用DS18B20 作为温度传感器。DS18B20 是DALLAS 公司生产的一种数字温度传感器,测量精度±0.5℃,可以直接将温度转化为数字信号传送给单片机,不用单独设计AD 转换电路[5]。

每个DS18B20 传感器具有单独的64 位ROM,因此,该温度传感器不仅可以和单片机组成单点测温系统[6-7],还可以构成多点测温系统。单总线的优点是结构简单、成本低廉,节省单片机的IO 口资源,若要对系统进行扩展,可将新增的温度传感器挂接在总线上。单总线也有缺点,数据和地址等信息的传送都通过一条线路,带宽低、负载重,数据传送时对时序的要求较高,编程难度加大。本文中温度采集电路设计如图2 中所示。每个温度传感器被放置在不同的测温区,测量各个区域的温度,单总线经4.7kΩ 的上拉电阻接单片机的P1.7 引脚。电源同时对4 个温度传感器供电,传感器的GND 端同时接地。

图2 硬件电路图

■2.2 温度显示电路

本文采用LCD1602 液晶显示器显示当前的四个温度传感器采集的温度值。该传感器是最常见、并且市场普及率最高的字符型液晶显示模块。该显示器每行可以显示16 个字符,同时显示两行。LCD1602 的8 条数据线经上拉电阻与单片机的P0 口相连接,当单片机对显示器写命令或需要显示字符时,命令字或字符的ASCII 码通过8 条数据线被写入显示器内部的显示数据RAM(DDRAM)。控制引脚RS 和EN 分别为寄存器选择端和使能信号端,两个引脚分别接单片机的P2.6 和P2.7 引脚。RS 和EN 引脚的不同信号组合可以控制显示器的不同读写状态,由于温度转换时设有延时程序,远大于显示器内部处理数据的时间长度,所以不用检测LCD1602 的读忙标志。单片机只向显示器写数据,不用读取,因此RW 引脚接地,恒为低电平。

■2.3 声光报警电路

扬声器工作时需要的电流较大,而单片机驱动能力最强的P0 口每个引脚最大只能提供3mA 左右的灌电流,或者400μA 的拉电流,无法驱动扬声器工作。本文为了使单片机能够驱动扬声器,采用了三极管驱动的方式。当系统需要发出报警信号时,单片机P3.6 发出低电平信号,PNP 三接管发射结导通,被放大的电流经集电极驱动扬声器发出声音报警信号。当单片机复位重启或不需要发出报警信号时,P3.6 引脚为高电平,发射结两侧没有电位差,基极无电流,通过扬声器的电流也为0。LED 的驱动电流较小,单片机引脚的灌电流足以驱动LED 发光,在扬声器工作的同时,P3.5 发出高低电平信号,使LED 断续发光,产生灯光报警信号,引起工作人员的注意。

除此之外,硬件电路还设有时钟电路和复位电路,用于产生数字电路系统所需的时钟信号和初始化系统所用,以满足单片机系统工作的基本需求。

3 软件系统的设计

■3.1 获取温度传感器ROM 码

每个DS18B20 都有一个唯一的64 位ROM 码,从而允许多只DS18B20 同时连接在一根总线上。若单片机要与总线上的某一只DS18B20 通信,必须要知道该温度传感器的ROM 码,以识别“身份”。本文中的温度监测系统共有4只DS18B20,需要获取每一只温度传感器的ROM 码。

首先让总线上的三个传感器先与总线断开,剩余一个温度传感器与单片机相连接。单片机与该DS18B20 初始化通信结束后,接着发送[33h](读取ROM 指令),温度传感器会由低位到高位发送内部64 位ROM 码,单片机按位读取后,存储在内部数据存储器预定的8 个字节存储单元中。分别让剩余三个DS18B20 单独与单片机相连,读取ROM码并存储起来。系统工作时,单片机要核对收到的ROM 码,因此要将ROM 显示出来,以供编程时使用。最后,调用LCD1602 显示子程序分别显示已存储的每个温度传感器的ROM 码,并写入源程序中。

■3.2 温度获取与显示

单片机在总线上依次与各个DS18B20 通信,获取温度值。首先在总线上发出初始化信号,DS18B20 做出回应。单片机再发送[55h](匹配ROM)指令,后跟64 位ROM码,目的是与指定的温度传感器建立通信,其余的温度传感器不再对后面的指令做出回应。单片机接着发送[44h](温度转换指令)。已经建立通信的DS18B20 接收到温度转换指令以后,开始温度转换,将转换好的温度保存在内部暂存器的第0 和第1 字节,此过程最长需要750ms,单片机需要延时等待。再发出[BEh](读暂存器指令),DS18B20将温度值的补码由低位至高位发送到总线上,单片机读取总线上的数据后将之储存在寄存器中。此后,单片机分别于各个DS18B20 建立通信,获取4 个传感器测量到的温度值。温度值经过运算处理后,被依次发送给LCD1602,每次显示两个区域的温度,间隔2 秒再显示两个区域的温度,如图3 所示。

图3 温度的显示

■3.3 报警程序

单片机读取完所有的温度值后会进行判断,如果有温度值超过预设的温度上限或低于温度下限值后,单片机调用报警子程序。报警子程序同时令单片机的P3.5 和P3.6 引脚发出低电平,通过中断子程序中的定时延时程序每0.5 秒使P3.5 和P3.6 引脚电平同时相反变化一次,可得到变化的声光报警信号,提示当前温度超出预设范围。LCD1602 显示屏同时显示超出预设范围的区域温度,提示操作人员及时做出相应处理。若单片机读取的温度值在预设范围内时,P3.5和P3.6 引脚保持高电平,无报警信号发出,程序继续循环扫描读取每个传感器测得的温度值进行判断。

■3.4 主程序

本文将温度传感器的初始化、读字节、写字节、启动温度转换、液晶显示器的初始化、写命令、写数据等过程分别建立子程序。主程序中在变量声明,初始化液晶显示器程序后,进入无线循环程序。无限循环程序中,单片机分别依次调用DS18B20 初始化、读取各个传感器温度、判断温度、温度报警、显示温度子程序。无限循环确保了单片机能一直监测温度,无需人为再进行操作。如果单片机受到干扰死机或者程序跑飞,按下复位按键重新启动即可。定时器中断程序为扬声器和LED提供了1秒的闪烁周期,放在主程序之后。

4 结束语

本文设计的温度监测报警系统可以应用于室内房间、保温箱、农业大棚等多种场所,能够有效地帮助人们同时监测多个区域的温度。如果加以驱动,同一总线最多可以支持挂接256 个DS18B20 温度传感器,在本文的基础上,可以扩展同时监测更多的目标区域温度,扩大温度监测的范围。若加继电器以驱动升温或降温电路,可以控制将环境温度保持在一个区间内,构成恒温控制系统[8]。本设计能够满足温度监测精度不小于±0.5℃的监控场所需求,具有成本低,可靠性强,易扩展的特点。

猜你喜欢
子程序温度传感器总线
基于HSIC的日光温室温度传感器优化配置策略
2021款奔驰C260车发动机故障灯点亮
数控加工中数控程序的简化
关于CAN总线的地铁屏蔽门控制思路论述
浅谈温度传感器原理及其应用
在数控车床上加工软轴零件
数控车床加工螺纹编程方法探讨
Q&A热线
PCI9030及其PCI总线接口电路设计