基于AT89C51单片机的数字温度计设计
2016-10-19单体良
单体良
渤海大学
基于AT89C51单片机的数字温度计设计
单体良
渤海大学
本系统设计了一款基于AT89C51单片机的数字温度计,可以实现温度的显示和报警等功能。系统以AT89C51单片机为主控制芯片,采用温度传感器DS18B20来检测电路的温度,测量精度达到0.5℃,使用LCD1602A液晶显示模块,来显示测出的温度值。该系统具有结构简单、读数方便、精度高、测温范围广等特点,具有很强的应用价值。
数字温度传感器 AT89C51单片机 单总线 PTR2030无线收发模块
随着工业、农业的发展,当前的生活环境越来越不能满足人们的要求,对温度进行测量和控制就显得很重要。基于单片机的智能温度控制系统在工农业生产中以及人们日常生活中都应用很广。传统的监控方法不能达到精确、快速的作用,很难达到较高的性能要求。随着科学技术的发展,温度传感器的应用范围越来越广,温度传感器DS18B20,可以把温度信号转换为数字信号。本文利用单片机和温度传感器结合,设计一款数字温度计,来代替手工测量,可以省时间、省力气。
1 系统总体设计方案
本系统以AT89C51单片机为主控芯片,用DS18B20传感器来测量外界的温度,利用4×4键盘模块设定温度的最大值和最小值,当温度超过最大值或者最小值时就报警。显示电路采用LCD1602A液晶模块,报警电路由三极管、蜂鸣组成,温度测量系统总体设计框图如图1所示:
图1 温度测量系统总体框图
2 系统硬件设计
2.1主控制器
本系统选用AT89C51单片机,该单片机是一种低功耗,高性能的8位COMS微控制器,其片内含有4KB只读存储器,引脚和指令和80C51兼容,可以多次编程。
2.2温度传感器
2.2.1DS18B20的工作原理
温度传感器选择DS18B20,它是一款数字温度传感器,不需要模数转换就能读取电路温度,而且可以采用编程的方式实现9位到12位的转换,具有线路简单、体积小等优点。可以测量的温度范围为-55.C到+125.C,电压范围为3.0到5.5V,并且只利用一个端口就可以完成通信,不同器件有不同的序号,在实际工作中不需要依靠外部元器件就可以完成对温度的测量。
2.2.2DS18B20与单片机的接口电路
DS18B20的单总线和单片机P2.0引脚连接。单片机P2口内部带上拉电阻,当P2口输出高电平时,P2口做为输入口使用。在主机发送读时序的时候,传感器给主机传送数据。主控制器配合采集数据时,把温度传感器的信号线和主控制器的一位I/O口线连接,主控制器的一位I/O 口线可以和多个温度传感器相连接,完成一个节点或者多个节点的温度检测。DS18B20有三个引脚,分别和地、电源以及主控制器的I/O口连接,电源和数字输入、输出管脚之间接一个4.7K的电阻。
DS18B20温度的计算方法如下:
SSSSS = 11111 b 温度值:
T=[ (MSB and 7) ×256 + LSB] ×0.0625 ℃
SSSSS = 00000 b 温度值:
T=-[ (256 - MSB) ×256 - LSB] ×0.0625 ℃
2.3键盘电路
根据系统中需要实现的功能,采用4X4=16的矩阵式键盘设定温度的最大值和最小值,这种矩阵式的键盘可以提高主控制器的I/O口使用效率。
当按多个键时,为了充分提高单片机I/O口的使用效率,避免线路过于复杂,把按键排成矩阵的形式,分为行线和列线,其中行线是输出端,列线是输入端。假如无按键按下,系统输出端置高电平,假如有按键按下,系统输入端置低电平。键盘电路工作原理为:
a)判断有无键按下。
b)去除键的机械抖动。假如判断有键按下,也就是输入端有低电平,延时10ms,第二次读取,假如两次都判断为有键按下,确定为有按键按下,否则不判为键按下,判为抖动。
c)判别哪个键按下。
d)CPU采取等键释放后,处理一次按键的闭合。
2.4显示电路
LCD1602和单片机连接方法有:采用8位数据总线连接和三个控制端口连接;采用D4-D7作为四位数据分为两次传送。本实验将使用并采用八位数据方式来控制1602显示。单片机的P3.5口-P3.7口分别和液晶的使能端、读写选择端、以及RS端相连,当使能端有效时,利用命令选择端控制数据的读和写。主控制器的P2口和液晶的数据端口相连,用来传输数据。
2.5报警电路
报警电路主要由三极管和蜂鸣器组成,单片机的P1.1引脚信号,经三极管Q1驱动后发声。当P1.1口输出电平为低时,蜂鸣器不响;当P1.1口输出电平为高时,蜂鸣器发出声响,其音调高低和脉冲信号的频率有关系。
2.6电源电路
系统需要5V的稳定电源,因此需要把电压稳定在5V。采用LM7805三端稳压器实现,LM7805内部有过温、过流保护电路,并且和外部电路连接时需要的元器件少、使用方便、可靠。
3 软件设计
系统使用C语言为编程语言,主程序主要由温度采集模块、温度处理模块、数据显示模块以及键盘处理模块四部分组成,系统初始化后,分别实现各个功能。其中温度采集部分的功能是实现被测温度的采集;温度处理部分的功能是把采集到的温度数据进行比较、处理和判断,如果处理判断后的数值大于设定值,蜂鸣器就报警,提醒注意;数据显示部分可以显示温度值;键盘处理部分能够设定系统的参数,实现用户和系统之间的人机对接。系统软件主流程如图2所示。
3.1测温模块流程图
测温模块操作流程图如3所示。
图2 系统软件总流程图
图3 测温模块操作流程图
图4 多点温度测量电路流程图
3.2多点温度的测量
多点温度测量的过程如下:
(1)发送跳过ROM命令。
(2)发启动温度传感器命令,开始温度转换。
(3)延迟1s。
(4)发匹配ROM命令。
(5)取出64位ROM代码并发送到单总线中。
(6)发读温度值命令,然后读测量的温度值。
(7)对结果进行CRC校验,在显示器中显示出来。
(8)重复(4)到(7)歩鄹,直到所有的测量结束。
(9)测量结完成后,重复上面过程,重新进行下一轮温度测量。
多点温度测量电路流程图如图4所示。
3.3显示模块流程图
显示模块流程图如图5所示。
图5 LCD1602A操作流程图
图6 键盘扫描程序流程图
3.4键盘扫描流程图
按键处理程序主要实现报警参数设置以及显示模式设置,其工作流程如下文所示。通过扫描键盘读取键值,通过温度传感器设置温度的最大值报警值和最小值报警值,键盘扫描流程图如图6所示。
4 系统测试
把系统设计的温度计放在既有水又有冰的混合物里面,让温度计在混合物中静置一段时间后,把此时系统显示的温度值设置为0.00,即0℃;然后读取当地地面的大气压强,并计算出当时的实际压强,再把温度计放到沸腾的水中,根据物理中水的沸点和实际压强的关系确定此时水沸腾的实际温度,让显示屏的数据和当地当时的沸点温度相等[6]。经过测试,系统设计的温度计可以测量-30℃~ 150℃之间的温度,测量精度为 0.5℃,常用的温度为0℃~ 100℃。分别测试几个温度点,然后用精密水银再测试这几个温度点,把两种温度计测试的结果进行对比,经过测试表明,该系统设计的数字温度计精确度达到测量精度要求。
5 结论
本测温系统充分利用了单片机强大资源,功能齐全,设计电路简单、美观,不仅具有精度高、速度快的特点,还具有稳定性好、使用范围广的特点,适用于对温度要求比较高的场所,具有很强的实用性。
[1]李海玲,王航宇.基于AT89C51&;DS18B20的数字温度计设计[J]. 国外电子元器件,2008,11:82-84.
[2]陈慕君,唐慧刚,刘其群,袁富娟. 一种基于AT89C51单片机控制的数字温度计设计[J]. 黑龙江科技信息,2009,14:26+127.
[3]丁磊,佟彤.基于AT89C51单片机的数字温度计的设计与研究[J].才智,2011,19:58.
[4]龙吉. 基于AT89C2051单片机的数字温度计的设计[J]. 科学之友,2010,20:36+38.
[5]曹文祥.AT89C51单片机数字体温计的设计[J]. 武汉工程职业技术学院学报,2012,03:32-34+37.
[6]廖月琴.基于AT89S51单片机数字温度计的设计[J].咸宁学院学报,2010,12:13-14.