基于单片机AT89C52的温度实时监控系统设计

DS18B20数字温度传感器温度测量范围为-55~+125℃,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量进行串行输出,适配各种单片机或系统机。使用这种传感器不需要A...

本文介绍了一种温度实时监控系统的设计 。该系统通过单片机实现实时控制,并通过串口连接单片机与上位计算机,在计算机中实现实时监控、大容量的数据存储及数据分析等功能,解决了常规温度测量方法在温度测量实时性差、不能储存数据及缺乏数据分析功能等方面的缺陷 。
温度监控系统在农业、工业和生活中有着广泛的应用,但随着监控的面积扩大,监控点的增加及控制处理趋于智能化等新的应用要求出现,传统的温度控制系统已经逐渐不适用,首先是不便于观察而且不能及时地对异常温度变化做出迅速反应,其次是传统的温度控制系统不能储存大量数据,不能对监控的数据进行分析,不便于对温度情况进行长期的监测和科学的分析,为了解决以上问题,本文设计了一个能实时响应温度并进行控制的温度实时控制系统,并且采用与计算机串口通信结合的方式通过计算机增大了系统储存量,而且在计算机系统中收集和处理温度控制系统的数据,大幅度的增强了该系统的功能,并具备较强的扩展性 。
随着计算机技术特别是单片机技术的发展,串口通信在诸多领域上得到了广泛的应用,计算机可以通过串口来获取单片机的各种数据,然后利用计算机强大的功能进行处理,再根据处理的结果发送数据到单片机,实现远程控制设备 。本设计采用上位机和下位机的互联工作,而计算机的分析处理能力较强,有很好的人机界面和大容量的多种存储方式,所以上位机一般采用计算机,单片机具有价格低,功能强,较好的抗干扰能力和面向控制等特点,所以下位机采用单片机来构成互联工作模式 。由于串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,适用于本设计的通信要求 。
1 硬件设计
1.1 电路设计
温度实时控制系统的下位机由7个部分组成(详见图1),其中测量环境温度使用DS18B20数字温度传感器,它将温度传感器、A/D传感器、寄存器、接口电路集成在一个芯片中,采用1-Wire总线协议,可实现直接数字化输出 。DS18B20数字温度传感器温度测量范围为-55~+125℃,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量进行串行输出,适配各种单片机或系统机 。使用这种传感器不需要A/D转换电路,可以大大简化电路,温度测量精度和速度都大幅提高 。
 
本设计利用MAX232进行电平转换,实现计算机和单片机的互联通信 。MAX232是低功耗、单电源双RS 232发送/接收器,适用于各种EIA-232E和V.28/V.24的通信接口 。MAX232芯片内部有一个电源电压变换器,可以把输入的+5 V电源变换成RS 232C输出电平所需±10V电压,所以采用此芯片接口的串行通信系统只要单一的+5V电源就可以 。在MAX232芯片上,选用其中一路发送/接收,R2OUT接89C52的RXD(P3.0),T2IN接89C52的TXD(P3.1),T2OUT接PC机的RD,R2IN接PC机的TD,这样就能通过P3.0和P3.1I/O口就实现单片机与计算机互联通信 。本设计的信号灯部分一共使用6只LED灯,其中Start灯亮表示单片机上电工作,RX2(P3.0)灯亮表示接受从PC机传来的数据,TX2(P3.1)灯亮表示向PC机发送数据 。m1,m2,m3三颗灯分别对应的接口为P2.5,P2.6,P2.7,当3个温度传感器探测的温度大于设定值则变亮 。
总体电路设计是以单片机为中心,整合和控制各部分 。本设计的单片机是STC89C52,它通过XTAL1,XTAL2引脚外接晶振和电容实现11.0 59 2MHz的时钟周期,这能产生准确的波特率,有利于串行通信 。它的RESET引脚外接电路实现上电自动复位和按键电平复位,P1.4~P1.7引脚接有4个按键,实现时间和温度的设定 。单片机通过P1.0,P1.1,P1.2引脚读出3个温度传感器的温度值,然后通过P0端口和P2.0,P2.1,P2.2控制液晶板,在液晶上显示时间和温度值 。同时经过单片机内部程序,控制信号灯的亮灭,发送和接受计算机的数据 。
1.2 单片机程序设计
基于上节所述的硬件设计,编写程序以实现期望的功能,其中主程序不断刷新LCD显示的内容,定时器T0中断程序用于时钟的功能,定时器T1作为波特率发生器,串口中断实现与PC机的通信 。
单片机刚启动,首先进行数据的初始化,初始化结束后,开始进入工作状态,若没有到结束时间,就进行温度测量并在液晶板上显示当前温度值,同时按键扫描程序不断监测是否有按键启动,若S1被按,则进入设定状态,定时器T0中断关闭,当前时间停止,液晶板上显示温度设定值和当前时间,可以通过S2,S3按键做修改(如图2) 。
 
在工作的过程中,当单片机接收一个数据会全部储存在BUF变量里面,同时产生一个串口中断,需要软件去清除中断标志 。然后取出BUF的值,储存到对应的数组中 。由于传送的数据简单,采用了无校验的8位数据直接传送模式(如图3所示) 。
2上位机的程序设计
在串口的几种编程方式中,利用MICroSOFt公司提供了MSComm控件,可以使开发串口通信程序变得十分简单 。VisualBasic是近年来发展最快的一种计算机语言,其简洁和实用性已经受到了众多计算机用户和程序员的欢迎,尤其是6.0版本,功能强大且易于掌握,是一种优秀的可视化开发环境,在VB应用程序中调用MSComm控件也十分容易 。采用VB标准控件MSComm来实现通信功能,实际上是调用了API函数,而API函数是由Commdry解释并传给设备驱动程序执行的,对于VB程序开发者只需知道MSComm控件的属性和事件的用法即可以实现串口的操作 。本温度实时控制系统的上位机操作界面正是基于VB的MSComm控件为核心,完成接收和保存数据,以及修改单片机上的参数 。
系统操作界面启动后,在串口端口和波特率选择2个参数设置正确后,打开串口,这时计算机会接收从单片机发送过来的数据,这些数据是一连串的字符,所以对接收过来的数据的处理,关键是字符串的处理 。通过设定参数的位数,准确分离开出每一个参数的值,然后存入对应的数组中,并实时地显示在屏幕上,还可以按需把数据保存到记事本 。同时在操作界面上修改的数据也能通过串口传送到单片机,远程控制单片机 。在发送的数据也要严格按照一定的格式进行发送,这样单片机才能正确接收,操作界面程序流程如图4所示 。
本设计定义的接收和发送数据格式如表1所示 。
 
3 系统实际运行
打开设计好的上位机软件后,首先选择正确的串口,实现与单片机通信,然后通过图5所示的操作界面可以实时观测到这个温度实时控制系统所测量的温度值和对应的时间点,如有需要可以设置时间的起始点和结束点,通过软件绘画出温度值的变化曲线,也可以通过实时曲线观查温度的变化情况,这个设置方便于长时间地观察温度的变化,还可以将数据全部保存到软件里,在需要的时候进行必要的数据分析;而在操作界面上可以很方便对温度实时控制系统中的监控时间段和温度限制值作修改,当测量的温度值超过温度限制值,设置好的报警灯会闪烁,提醒我们注意 。
4 结语
【基于单片机AT89C52的温度实时监控系统设计】本文设计了基于单片机AT89C52的温度实时监控系统并通过串口通信实现了单片机与计算机互联,实现了多点温度实时远程控制,计算机的实时数据分析,长期数据的图表式保存,该系统已经在硬件平台和软件平台上成功运行 。整个设计具有成本低,测量范围广,实时操作方便快捷,显示和储存的信息量大,可扩展功能强等优点,可以应用在仓库、温室大棚、机房等进行温度实时控制 。另外设计方案可以扩展为网络连接,可以突破串口传送的距离限制,广泛用于温度在DS18B20测温范围之内的场合,实现随时随地通过网络进行实时控制,将具有更大的应用价值 。

    推荐阅读