基于DS18820与AT89S51的温度测量仪设计

2017-07-10 09:37李萍
电脑知识与技术 2017年14期
关键词:仿真

李萍

摘要:针对传统测温元件和测温方法所存在的问题,提出了一种基于DS18820和AT89S51的高精度温度测量仪。详细介绍了单总线温度传感器DSl8820的结构以及其单总线工作原理,并给出了单总线测温仪的硬件电路和软件设计流程。最后,利用Proteus软件进行系统仿真调试,实现了温度实时读取、LCD显示、超温报警等功能。

关键词:单总线;温度测量;DS18820;AT89S51;Proteus;仿真

中图分类号:TP274 文献标识码:A 文章编号:1009-3044(2017)14-0200-02

温度是物体冷却程度的物理量,也是一种基本的环境参数。在大棚种植、工业控制、电子测温、家用电器等需要温度监测的领域中,温度控制的精确性和实效性要求越来越高。传统的温度测量方法很多,测温元件主要以热电偶、热电阻或者模拟式温度传感器为主,存在测量精度较低、可温度是表征靠性较低、需要A/D转换,且电路复杂等一系列问题。

本文提出一种采用Dallas公司的单总线数字温度传感器DS18820为测温元件,AT89S51单片机为控制核心所构成高精度的温度测量仪,不仅具有控制方便、电路结构简单、灵活性大等优点,且可以大大提升测温指标,很好地解决上述问题。实现在单片机的控制下检测温度与显示,并可设置高、低温度超限报警等功能,广泛使用于距离远、节点分布多的场合,具有较强的推广应用价值。

1 DSl8820测温优点

DS18820是Dallas公司继DS1820之后推出的一种改进型的单总线智能温度传感器。温度测量范围为-55~+125℃,能够直接读出被测量的温度;测量结果以9~12位数字量串行传送,同时可传送CRC校验码,最高分辨率可达0.0625℃,满足高精度的测量要求;工作电源电范围3.0~5.5V;独特的单总线接口方式,在使用过程中不需要任何外围元件,且支持多点组网功能。DS18820测温可使系统结构更加简洁,可靠性高,使得其非常适用于高精度的温度采集与检测。DS18820的内部结构图如图1所示。

2硬件电路设计及分析

系统主要由AT89S51单片机、DS18820测温元件、1602LCD显示电路、超温报警电路、时钟电路以及复位电路等构成,原理框图如图2所示。

系统采用DS18820进行测温,通过单总线方式接至AT89S51的P3.3引脚。AT89S51单片机采集DS18820送来的温度信息,经过软件算法将处理后的温度信息通过LCD1602显示器显示出来。温度的上下限值可通过P1.0-P1.2的按键来进行设定。若超过设定的上限或下限温度值,将通过P3.6或P3.7进行高低温报警。系统采用Proteus软件设计的仿真电路如图3所示。

2.1测温电路

温度采集模块DS18820采用单总线结构,与单片机交换信息仅需要一根I/O线,其读/写及温度转换的功率也可来源于数据总线,而无需额外电源。DSl8 B20有3个引脚,1脚VDD是外电源输入端,2脚DQ是数字信号输入/输出端,3脚GND是地线。

2.2 LCD液晶显示电路

LCD1602显示器用于显示实时温度数据。此外,刚上电时,先后显示上下限温度设定值。P2.0~P2.2分别接LCD1602的RS、RW及E端,P0口接LCDl602的数据输出端DO到D7。

2.3按键输入电路

采用独立式键盘P1.0~P1.2用来修改温度报警的上限与下限值。系统默认的温度报警上限为50~C,下限为-10℃。系统上电后,LCD1602将先显示温度报警上限值。若按P1.0键报警值加1,按PI.1键报警值减1;P1.2为确定键,用于保存修改值。按下确定键后,接着显示温度报警的下限值,修改保存后,再进行实时温度显示。

3软件设计及分析

软件程序主要包括以下部分:

1)初始化部分,包括对LCD 1602及DS18820的初始化。

2)按键处理部分:上电后,LCD1602显示上限报警温度值,若20秒之内有温度加或温度减键按下,则修改后保存温度上限值;同理修改并保存温度下限值。

3)设置温度报警子程序:根据修改的温度上下限值,在DS18820初始化后,发跳过ROM命令,将温度报警值写入DS18820,再发跳过ROM命令,将温度报警值复制到EE-PROM中。

4)读取温度字程序:若检测到DS18820无故障时,可读取温度。顺序是:发出跳过序列号命令(0Xcc)→启动温度转换命令(0x44)→DS18820初始化→跳过序列号命令(0Xec)→读取温度寄存器命令(0XBE)→分别保存溫度低8位、高8位以及高温限值(TH)和低温限值(TL)。

5)LCD显示温度子程序:显示温度前,需要先对温度的符号进行判别。先由符号位判定温度的正负,若温度为负,则对应的温度绝对值为原码的补码。根据读取的2字节温度值,判断其符号位并分别读取其整数部分和小数部分,通过运算后保存到显示缓冲区,并刷新LCD显示缓冲,同时注意高位为0时不显示,最后在LCD中第一行显示标题,在第二行中显示当前温度及温度符号。子程序流程图见图4。

6)温度报警处理部分:读取DS18820温度值及报警上下限值后,进行比较,若超出范围则驱动上/下限报警单元进行报警。

3.4软件设计流程

4 Keil与Proteus的仿真调试

软件上,采用C语言编程,在KeilC51软件中,将编写的程序进行编译、调试,并生成十六进制目标代码文件(XX.hex)。硬件上,利用Proteus软件绘制出系统的仿真原理图,并进行纯电路的仿真后,双击CPU,在出现对话框中的“Programfile”加入目标代码文件XX.hex,并进行系统的仿真调试,直至调试成功。仿真调试好之后,通过按键可修改温度报警的上下限值,调试时可看到LCD1602上显示所采集到的温度值,误差在0.1度范围内,达到了良好的仿真效果,如图2所示。

5结束语

本设计以Proteus和Keil软件作为开发工具,以AT89S51单片机为控制核心,并采用单总线智能温度传感器DS18820作为温度检测元器件,加上合适的外围电路,构成了实时温度检测系统。该系统可实现温度的实时读取、LCD显示及超温报警等功能,且系统具有结构简洁、精度高、适应性强、维护方便,易于扩展成为多点测温系统等优点,在温度采集与检测领域中具有良好的应用前景。

猜你喜欢
仿真
Proteus仿真软件在单片机原理及应用课程教学中的应用
一种帮助幼儿车内脱险应急装置的仿真分析
论虚拟仿真实训系统在口腔实验教学中的应用