目录
摘要 ......................................................................................................................................... 2 ABSTRACT ............................................................................................................................ 3 1 绪论 ..................................................................................................................................... 4
1.1课题背景和意义 ....................................................................................................... 4 1.2论文的研究内容 ....................................................................................................... 5 1.3论文的组织结构 ....................................................................................................... 5 2 设计要求及系统工作原理 ................................................................................................. 6
2.1设计要求 ................................................................................................................... 6 2.2系统工作原理 ........................................................................................................... 6 3 系统硬件设计 ..................................................................................................................... 8
3.1温度传感器的选择 ................................................................................................... 8
3.1.1 DS18B20 的介绍 ....................................................................................... 8 3.1.2 DS18B20 的性能特点 .................................................................................. 9 3.1.3 DS18B20 的控制方法 ................................................................................ 10 3.1.4 DS18D20 的工作原理 ................................................................................ 11 3.2单片机的选择 ......................................................................................................... 11
3.2.1 ATC51 单片机介绍 ................................................................................. 12 3.2.2 ATC51 的主要特性 ................................................................................. 13 3.3系统的总体设计 ..................................................................................................... 15
3.3.1系统整体硬件电路 ...................................................................................... 15 3.3.2显示电路介绍 .............................................................................................. 16
4 系统的软件设计 ............................................................................................................... 18
4.1主程序流程 ............................................................................................................. 19 4.2读出温度子程序 ..................................................................................................... 20 4.3温度转换命令子程序 ............................................................................................. 20 4.4计算温度子程序 ..................................................................................................... 21 4.5按键扫描子程序 ..................................................................................................... 22 5仿真与调试 ........................................................................................................................ 23
5.1硬件系统设计仿真 ................................................................................................. 23 5.2实物调试 ................................................................................................................. 24 6总结 .................................................................................................................................... 27
基于单片机的温度测量系统设计
参考文献 ............................................................................................................................... 28 致谢 ....................................................................................................................................... 29 附录 ....................................................................................................................................... 30
1
基于单片机的温度测量系统设计
摘要
温度控制是工农业自动控制的重要组成部分,在工业、电子、农业、化工精度实验等诸多领域都有重要的应用,而温度测量又是温度控制当中重要的一环。将现场温度控制在一定范围内,是在各种实际应用的重要保证和前提。因此温度控制系统在工农业控制领域中十分重要。本文“智能温度报警器研究与设计”,主要研究的以一个单片机为控制核心的温度自动测量系统。论文研究了温度报警器,他的测温部分采用了美国Dallas半导体公司的DS18B20一线式数字式温度传感器。该传感器的特点是把温度采集、A/D转换和数据的串行通讯集成为了一体,由于其体积小,并具有单总线的独特优点,可以使用者轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠[1]。论文中同时也阐述了DS18B20数字温度传感器在ATMEL公司生产的ATC51单片机下的硬件连接方法,并画出了软件设计思路流程图、解释了相关汇编程序。同时采用了QX039串行LED显示器来显示测控温度。本论文中设计的温度报警器它是用汇编程序来完成测温功能的调用,可以用来实现用户设置上下限温度,当温度超过上下限时有自动报警功能,它是在传统电路控制基础上的进一步改进,同时解决了以繁琐的电路实现对温度测量控制方面的问题。此系统的设计可应用于仓库测温、大棚温度控制和生产过程监控等领域,将来也可以应用到人们工作和生活的各个角落,有力地推动各行业的技术改造和产品的更新换代,相信会有十分好的应用前景。
关键字:ATC51单片机 DS18B20温度传感器温度测量 报警
2
基于单片机的温度测量系统设计
ABSTRACT
Temperature control is an important part of agricultural and industrial automatic control, in industry, precision electronics, agriculture, chemical experiment, and many other fields has important applications, temperature control and temperature measurement is an important part of. The field temperature control within a certain range, is the important guarantee and premise in various practical applications. So the temperature control system is very important in the field of industrial and agricultural control. In this paper, research and design, \"\" smart temperature alarm, the main research with a single chip microcomputer as the control core of automatic temperature measuring system. Paper studies the temperature alarm, his temperature part adopts the Dallas semiconductor companies in the United States of digital temperature sensor DS18B20 a line type. The sensor is characteristic of the temperature acquisition, A/D conversion of serial communication and data integration for an organic whole, because of its small size, and has the distinct advantage of the single bus, users can easily establish A sensor network, and can make multi-point temperature measurement circuit is simple and reliable. Paper also expounds the DS18B20 digital temperature sensor under the ATC51 of ATMEL company produces hardware connection methods, and draw the software design flow chart, and explains the related assembly program. At the same time adopted QX039 serial LED display to display the temperature measurement and control. This thesis design temperature alarm it is to use assembler to finish temperature measurement function calls, can be used to realize the user set the upper and lower temperature, when the temperature exceeds limit automatic alarm function, it is based on traditional control circuits of the further improvement, and solved with complex circuit to control the temperature measurement issues. Design of the system can be applied to the warehouse temperature, canopy temperature control and production process monitoring, etc, can also be applied to people in the future work and life, vigorously promote technological transformation and upgrading of products, from all walks of life to believe that there will be a very good application prospect.
The keywords: ATC51 monolithic integrated circuit, DS18B20 temperature sensor, Temperature measurement, give an alarm.
3
基于单片机的温度测量系统设计
1 绪论
1.1课题背景和意义
随着电子技术以及应用需求的发展,单片机技术也得到了迅速的发展,在高集成度、高速度、低功耗以及高性能方面取得了很大的进展,电子技术有了更好的飞跃,我们现在完全可以运用单片机和温度传感器来进行温度测量和控制。
温度是日常生活、冶金、化工等领域最长遇到的一个物理量。随着经济的发展和科学技术的进步,对于温度的测量和控制有了更高的要求。采用单片机温度测量系统,能大大的提高温度测量的精度,降低产品的成本,能简化操作,节省劳动力,从而提高生产效率。
在现实生活和工农业生产及科学研究中,温度的测量十分的重要。在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。且由于我国自动化长期以来一直都比较落后,各类农业,工业有相当一部分还停留在常规的仪表测量控制,有的甚至还处在人工家常规仪表的半自动测量控制状态。这个不仅使安全生产没有保障,效率低下,工人的劳动强度也大大地提高[2]。
我国人多地少,人均占有耕地面积就更少。因此,要改变这种局面,如果靠增加耕地面积是不可能实现的,因此我们就要另辟蹊径,想办法来提高单位亩产量。而温室大棚技术就是其中一个好的方法。
温室大棚就是建立一个模拟适合生物来生长的气候条件,创造一个人工的气象环境,来消除温度对生物生长的约束。而且,温室大棚能够克服环境对生物生长的,能够使不同的农作物在他不适合生长的季节产出,使季节对农作物的生长影响不是很大,部分或完全的摆脱了农作物对自然条件的依赖。由于温室大棚能够带来可观的经济效益,所以温室大棚技术也越来越普及,并且有已经成为了农民增收的主要手段。
今天,我们的生活环境和工作环境有了越来越多被称之为单片机的小电脑在为我们服务。并且单片机在工业控制、尖端武器、通信设备、信息处理、家用电器等各测控领域的应用中独占鳌头。时下,家用电器和办公设备的智能化、遥控话也已经成为了世界潮流,而这些高性能没有一个不是靠单片机来实现的。人们采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而来提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,使其成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥了越来越大的作用[3]。因此,单片机对温度的控制问题是一个工农业生产中经常会遇到的问题。基于这个,本课题围绕应用于温室大棚的基于单片机的温度测控系统展开应用研究工作。
4
基于单片机的温度测量系统设计
1.2论文的研究内容
本次设计主要做了如下几方面的工作:一是确定了系统的总体功能设计方案;二是进行智能传感器的硬件电路和软件系统的设计:三是单片机及通信接口的硬件电路及软件系统的设计;四是对连接单片机的上位管理计算机软件系统的设计思路、工作原理和实现方法进行了一些阐述。
本文将信息采集技术、信息传输技术、信息存储技术以及信息处理技术等技术相互融合,将温室环境多种参数监测和单片机控制理论相结合,提出了一种切实可行的温室环境监测系统,可以全面、实时地对监测数据进行记录和处理,并可以将有关信息根据现场实际情况进行处理。满足了对作物生长状态实行全面、实时、长期监测的要求。
1.3论文的组织结构
全文共分为六章,各章主要内容如下:
第一章是绪论部分,主要介绍了本课题的背景以及意义,研究的主要内容以及论文的组织结构;
第二章是设计要去及系统的工作原理,
第三章是系统的硬件设计,这是我在这次课题研究及制作中的主要工作。给出了硬件设计的系统框图,器件的选型以及器件的介绍和选取原则,分模块介绍了电路图和功能仿真等。
第四章是系统软件的设计,主要介绍了系统各部分模块的设计流程和简单程序;以及系统软件仿真。
第五章是调试与验证,主要是对实物进行测试,包括硬件和软件的调试。
第六章是总结,主要是对本次课题的总结归纳,并对存在的问题提出解决方案,以及功能扩展和进一步的研究方向。
5
基于单片机的温度测量系统设计
2设计要求及系统工作原理
2.1设计要求
系统要求完成的设计功能如下:
1. 实现对大棚温度的采集,测量多点的温度。 2. 实现超限数据的实时警报。
3. 测温范围0℃--100℃,测温精度正负0.5摄氏度。
2.2系统工作原理
电源模块 按键模块 ATC51 单片机 温度测量 模块 图2-1系统工作原理图
6
显示模块 报警及指示灯模块
基于单片机的温度测量系统设计
系统总体以ATC51单片机为核心,通过温度测量模块、显示模块和按键模块来组成。可以通过按键设定温度报警的上下限。当测量的温度超出设定范围时,单片机能够驱动报警电路。显示模块可以显示当前的温度值、温度上下限等信息,按键模块采用普通按键方式。以DS18B20温度传感器来为采集模块的温度测量系统。其系统主要包括:电源模块、温度采集模块、按键控制模块、LCD1602 显示模块以及单片机最小系统。
系统整体原理图如2-2所示:
图2-2系统整体原理图
7
基于单片机的温度测量系统设计
3系统硬件设计
3.1温度传感器的选择
模拟集成传感器是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成温度传感器。模拟集成温度传感器是在20世纪80年代问世的,它是将温度传感器集成在一个芯片上,可完成温度测量及模拟信号输出功能的专用IC。模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等。
模拟集成温度控制器主要包括温控开关和可编程温度控制器,典型产品有LM56、AD22105和MAX6509。某些增强型集成温度控制器(例如TC652/653) 中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相似之处。但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别[4]。
智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微型控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
目前,国际上新型温度传感器正从模拟式向数字式、从集成化向智能化和网络化的方向飞速发展。智能温度传感器DS18B20正是朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展[5]。因此,智能温度传感器DS18B20作为温度测量装置己经广泛应用于人民的日常生活和工农业生产中。
3.1.1 DS18B20 的介绍
DS18B20是美国DALLAS半导体公司继DS18B20之后最新推出的一种数字化单总线器件,属于新一代适配微处理器的改进型智能温度传感器[6]。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,
8
基于单片机的温度测量系统设计
型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚
测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
图3-1 DS18B20 实物图
DS18B20 内部结构主要有四部分组成:位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20 的外形及管脚排列和内部结构图分别如图
图3-2 DS18D20 的外形及管脚排列和内部结构图
DS18D20 的引脚定义:DQ为数字信号输入/输出端;GND为电源地;UDD为外接供电电源输入端(在寄生电源接线方式时接地)[7]。
3.1.2 DS18B20 的性能特点
(1)采用DALLAS公司独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DSI8B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,供电电压范围:+3.0—+5.5V。
(4)测温范围:-55—+l25℃。固有测温分辨率为0.5℃。当在-10℃—+85℃范围内,可确保测量误差不超过0.5℃,在-55—+125℃范围内,测量误差也不超过2℃。
(5)通过编程可实现9—12位的数字读数方式。 (6)用户可自设定非易失性的报警上下限值。
9
基于单片机的温度测量系统设计
(7)支持多点组网功能,多个 DS18B20可以并联在唯一的三线上,实现多点测温。 (8)负压特性,即具有电源反接保护电路。当电源电压的极性反接时,能保护DS18B20不会因发热而烧毁。但此时芯片无法正常工作。
(9)DS18B20的转换速率比较高,进行9位的温度转换仅需93.75ms。 (10)适配各种单片机或系统。
(11)内含位激光修正的只读存储ROM,扣除8位产品系列号和8位循环冗余校验码(CRC)之后,产品序号占48位。出厂前产品序号存入其ROM中。在构成大型温控系统时,允许在单线总线上挂接多片DS18B20[8]。
3.1.3 DS18B20 的控制方法
在硬件上,DS18B20与单片机的连接有两种方法。一种是将DS18B20的UDD接外部电源,GND接地,其I/0与单片机的I/0线相连;另一种是用寄生电源供电,此时 DSI8B20的UDD、GND接地,其I/0接单片机I/0。无论是内部寄生电源还是外部供电,DS18B20的I/0口线要接5K见左右的上拉电阻。DS18B20有六条控制命令,如表3-1所示:
表3-1 DS18B20 的六条控制命令 指令 温度转换 读暂存器 写暂存器 复制暂存器 重新调E2RAM 读电源供电方式 约定代码 44H BEH 4EH 48H B8H B4H 操作说明 启动在线的DS18B20进行温度转换 读取温度寄存器的温度值 将两个字节的数据写入温度寄存器的TH、TL字节 将温度寄存器的数值拷贝到E2RAM中,保证温度值不丢失 将E2RAM中的数值拷贝到温度寄存器中 启动DS18B20发送电源供电方式的信号给主CPU (“0”为寄生电源; “1”为外部电源) CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作和对数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。例如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,必须经历三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作[9]。
10
基于单片机的温度测量系统设计
3.1.4 DS18D20的工作原理
斜率累加器 比较 计数器1 预置 LSB 置位/清除 加1 =0 温度寄存器 停止 计数器2 预置 低温度系数晶振 高温度系数晶振 =0 图3-3 DS18D20 工作原理图 DS18B20的读写时序与DS18B20测温原理相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入[10]。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3-3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
3.2单片机的选择
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用[11]。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
11
基于单片机的温度测量系统设计
概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择[12]。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
3.2.1 ATC51 单片机介绍
ATC51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。ATC2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的ATC51是一种高效微控制器,ATC051是它的一种精简版本[13]。ATC51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3-4所示。内部结构图如3-5所示。
12
基于单片机的温度测量系统设计
图3-4 ATC51 的实物图及其引脚排列 图3-5 ATC51 内部结构图
3.2.2 ATC51 的主要特性
ATC51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,ATC51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位[14]。
ATC51各引脚对应功能简要介绍如下: VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每个引脚可吸收8TTL门电流。当P0
口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上电阻。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平
13
基于单片机的温度测量系统设计
时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口应该用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为ATC51的一些特殊功能口,如下表所示: 口管脚备选功能
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(计时器0外部输入) P3.5 T1(计时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高
14
基于单片机的温度测量系统设计
电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出[15]。
3.3系统的总体设计
本课题是使用了ATC51单片机作为控制核心,以智能温度传感器DS18B20为温度测量元件,采用一个温度传感器对温度进行检测,通过键盘模块对温度进行自动、手动设置,上、下限设置,超过其温度值就报警。显示电路采用4位数码管显示,使用9013三极管为中心组成的报警电路 。如图3-6所示。
图3-6温度测量系统框图
3.3.1系统整体硬件电路
电路设计原理图如图3-7所示,控制器使用单片机ATC51温度 传感器使用DS18B20,用4位共阴LED数码管以动态扫描实现温度显示。
键盘电路 报警电路 单片机 温度传感器 4位数码管显示电路 15
基于单片机的温度测量系统设计
图3-7设计电路原理图
图3-8ATC51与4位数码管接口电路图
3.3.2显示电路介绍
显示器件选用的是4位共阴极数码管显示,8个数据接口用4.7K电阻作为上拉电阻 。
16
基于单片机的温度测量系统设计
如图3-8所示:
显示电路采用静态显示,4位共阴LED数码管。所谓静态显示,就是每一个 显示器都要占用单独的具有锁存功能的I/O接用于笔划段字形代码[16]。这样单片 机只要把要显示的字形代码发送到接门电路,就不用管它了,直到要显示新的 数据时,再发送新的宇形码,因此,使用这种方法,单片机中CPU的开销小。 (1)LSD的静态显示
实际使用的LED显示器通常由多位构成,对多位LED显示器的控制包括字 行控制和字位控制,在静态显示方式下,每一位显示器的字行控制是的, 分别接到一个8位I/0接口上,字位控制线连在一起,接地或5伏。 (2)LSD显示器及接法
通常所说的LED显示器由7个发光二极管组成,故也称7段数码管,此外 显示器还有一个圆点型发光二极管,用于显示小数点,故有时也称八段LED显 示管,通过7段发光二极管亮暗的不同组合,可以显示多种数字,字母及其他 符号。LEA示器中的发光二极管有2种接法:
(1) 共阳极接法 把发光二极管的阳极连在一起构成共阳极,使用时公共 阳极接+5伏,这样,阳极输入端低电平的段发光二极管就导通点亮,而输入高 电平则不点亮。 (2) 共阴极接法 把发光二极管的阴极连在一起构成共阴极,使用时,公 共阴极接地,这样,阳极输入端高电平的段发光二极管就导通点亮,而输入端低 电平则不点亮。
17
基于单片机的温度测量系统设计
4 系统的软件设计
在计算机测控系统之中,硬件设计是非常的重要,但软件设计也同样的重要。把硬件比作人的身躯,而软件就是这个人的灵魂。当系统的硬件选取完毕,电路设计完毕之后,就轮到了软件设计。对于可编程芯片而言,没有软件设计就不能发挥它的用途。软件的设计和硬件的设计是同样重要的,很大程度上软件的设计决定了系统的性能。为了使系统的性能达到最优,使软硬件完美结合。
本设计智能温度报警系统由温度采集、信号处理、温度监测、输出控制四部分组成。它通过预先设在单片机中的高低温度值来对非常温度值进行报警,从DSI8B20 采集到的温度经信号调理电路处理后直接送入单片机进行刷新。微控制器根据信号数据及设定的各种控制参数,按照嵌入的软件控制规律执行计算与处理,自动显示温度值、输出相应的控制信号,并根据当前状态输出正常、报警等信号,同时将各种数据通过数码管进行显示监控。
·
N Y
图4-1系统的软件设计流程图
设定值 温度报警 温度判断 温度显示 温度刷新 温度采集 温度设定 开始 18
基于单片机的温度测量系统设计
4.1主程序流程
主程序主要用来实现对单片机和加热控制系统各部件的初始化,以及实现各功能子程序的调用,协调各个功能模块,采用循环查询的方法来实现对温度的采集和控制以及温度的显示。主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程图如图4-2所示,通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在了不同的两个单元中,然后可以通过调用显示子程序显示出来。
初始化 读取温度 读出温度值温度计算处理显示数据刷新 发温度转换开始命令 调用显示子程序 N Y 设置键是否按下?
图4-2 主程序流程图
设置报警温度 19
基于单片机的温度测量系统设计
4.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
而且DS18B20的各个命令对时序的要求特别的严格,所以必须按照所要求的时序才能达到预期的目的。其程序流程图如图4-3示。
发DS18B20复位命令 发跳过ROM命令 读取操作,CRC校验 N Y 结束 图4-3读出温度流程 CRC校验正? 9字节完? 发读取温度命令 Y 移入温度暂存器 N 4.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图4-4所示。
20
基于单片机的温度测量系统设计
发DS18B20复位命令 发跳过ROM命令
结束 图4-4温度转换流程 发温度转换开始命令 4.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4-5所示:
温度零下? 温度值取补码置“1”标志 计算小数位温度BCD值 计算整数位温度BCD值 结束 图4-5计算温度流程图 置“0”标志 开始 21
基于单片机的温度测量系统设计
4.5按键扫描子程序
按键采用扫描查询方式,设置标志位,检测 SET 键是否被按下,当标志位为 1 时, 显示设置温度,否则显示当前温度。同时设定一个变量 a,a为设置温度的量度,当另外 一个键SET1 见在显示设置温度是被检测按下的时候,a 赋值为3,否则a=1。。当标志位为0时,确定按键按下,根据判断不同的键按下上调报警温度或下调报警温度,从而完成对 温度的设置。如图4-6所示。
设置键按下 N 增加键是否 按下? N Y 报警温度加 1
调用显示子程序
图4-6按键扫描子程序
减少键是否按下? 报警温度减1 22
基于单片机的温度测量系统设计
5仿真与调试
5.1硬件系统设计仿真
本次设计应用Proteus 绘制电路原理图,写出相应的用程序调试系统功能,并且进行仿真。当C语言程序在keil软件上编译调试成功之后,导入单片机进行系统总调试。温度采集模块:DS18B20的温度实时数据能够有效地显示出来;键盘控制模块,相应按键按下之后,程序立即响应指定的动作指令;报警模块也能正常工作。
硬件电路主要由单片机最小系统、DS18B20为核心的传感器电路、液晶显示电路、报警电路和供电电路组成。单片机最小系统:提供一个上电复位高电平,和12MHZ时钟振荡。
11 DS18B20传感器电路:加电就能工作,DATA端加4.7K电阻作上拉电阻保证有足够大的电流。
液晶显示电路:
报警电路:利用5V蜂鸣器作报警提示。
供电电路:利用7805组成线性稳压电源为整个系统供电。
见图5-1,硬件接线正确,单片机能够正常工作,硬件和系统仿真试功。
图5-1 proteus硬件电路仿真图
23
基于单片机的温度测量系统设计
5.2实物调试
做完硬件调试以后,将买到的各个元器件焊到电路板上,并且将程序录入ATC51单片机后,就可以得到实物了,见图5-2;
图5-2 实物图
将电路板接通电源以后,电路板能够正常运行,4位数码管显示的是当前温度,如图5-3所示;
图5-3实物正常运行图
24
基于单片机的温度测量系统设计
电路板正常运行后,可以同过按键模块对单片机预设温度的上下限度进行调节,如图5-4所示;
图5-4调节温度上下限度图
把温度上限调节至低于室温,则会发生高温报警,当发生高温或者低温报警时,蜂鸣器能够正常工作,灯光指示器也能够正常闪烁,实物测试成功。如图5-5所示;
图5-5 温度超限报警图
在多次试验过程中,出现了两次比较大的测试误差,一是实物在启动后的几秒内迅速从29.3℃降到了室温26.1℃,二是实物在启动后温度在27.1℃上下反复显示。通过讨论,发现第一项误差出现的原因是由于在触摸实物时,双手接触到了温度传感器DS18B20,导致接通电源后检测温度高于环境温度,而在开启之后,双手离开实物,温度迅速下降,所以在以后的实验过程中,针对该项误差完善了使用流程,误差得到解决。第二个误差出现的
25
基于单片机的温度测量系统设计
原因是因为在程序设计过程中,温度显示刷新的速率为500ms,刷新频率过快,经过调整设置刷新速率为1s,实验误差得到解决。
26
基于单片机的温度测量系统设计
6总结
实验表明:该智能温度报警系统结构简单、测温准确,具有一定的实际应用价值。该智能温度报警系统只是DSI8B20在温度控制领域的一个简单实例,还有许多需要完善的地方,例如可以将测得的温度通过单片机与通讯模块相连接,以手机短信息的方式发送给用户,使用户能够随时对温度进行监控。
从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
特别是对单片机C语言产生了更深的兴趣,能用Portel,PROTEUS等专业软件,掌握了电子电路调试的方法,能解决设计与调试过程中出现的一般问题,能正确选用元器件与材料,能对所设计电路的指标和性能进行测试并提出改进意见,能查阅各种有关手册和正确编写设计报告。
做毕业设计的过程是一个学习的过程,也是一个成长的过程。在这个过程里我们需要做查找资料,学习硬件设计电路 ,电路仿真测试等工作,只有通过不断的修改测试,才能实现最终的功能。当焊接完成,硬件的功能能够实现时,自己内心有那么一点点成就感。使自己在这个过程里具有充实感。
在设计的过程中,我重新复习了之前学过的许多专业课知识,掌握了包括LCD、DS18B20等元器件的原理和用法,在知识上收获颇丰。但更多的收获还在书本之外。开始时,不知道理论与实践相结合的方法,只是在一味的看理论知识,从而使进度很慢。后来,通过看书看视频教程与实践相结合的方法,一边学习一边实践,大大挺高了学习效率,加快了系统设计的进程,并且这种学习方法并不枯燥,记着后不容易忘记。我觉得理论与实践相结合的方法,应该成为工程研发人员的重要学习方法,使他们可以快速方便的掌握新的知识。
目前,测量温度控制温度获得了很快的发展,近几年,国内也涌现出许多高精度的温度控制系统,但相对于用户来说,价格还是有点高。而由于竞争越来越激烈,现在企业发展的趋势是如何有效的提高生产效率,降低生产成本。寻求性能可靠、价格低廉,且应用广泛的元器件是生产过程的首先要考虑和解决的问题,因此像本设计这种控制简单、价格低廉的控制系统会有很好的发展前景,并且在此设计基础之上,还可扩展出其他应用功能,所以学好单片机技术也十分重要。
通过本次的设计,使我感觉到单片机的应用会越来越广泛,并将深入到各个领域,自动化、智能化是其发展趋势,学好单片机及其与其它软件相结合技术必有光明前途。
27
基于单片机的温度测量系统设计
参考文献
[1] 乐建波.温度控制系统.化学工业出版社,2003;
[2] 谢自美.电子线路设计·实验·测试.华中科技大学出版社,2000;
[3] 陈东光.单片微型计算机原理及C语言程序设计.华中科技大学出版社,2004年 [4] 武庆生,仇梅.单片机原理与应用.电子科技大学出版社,1998年; [5] 谭浩强.C程序设计.清华大学出版社,2007年;
[6] 余锡存. 《单片机原理与接口技术》 西安电子科技大学出版社,2003年; [7] 李广弟,朱月秀,王秀山.《单片机基础》北京航空航天大学出版社,2001年; [8] 蔡美琴,张为民等《.MCS-51系列单片机系统及其应用》高等教育出版社,2004年; [9] 张毅刚,等.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,1997年; [10] 刘瑞星,胡健等.《Protel DXP 实用教程》机械工业出版社,2003年; [11] 余锡存. 《单片机原理与接口技术》 西安电子科技大学出版社,2003年; [12] 赵负图.现代传感器集成电路.人民邮电出版社,2000年;
[13] 谷树忠.Protel 2004实用教程——原理图与PCB设计.电子工业出版社,2007年; [14] 康华光.数字电子技术基础[M].华中理工大学出版社,1998年; [15] 李隆宝.使用电子器件和电路简明手册[M].电子工业出版社,1991年; [16] 张勇.电路设计技术入门与应用(第一版)。电子工业出版社,2002年;
28
基于单片机的温度测量系统设计
致谢
感谢母校为我们提供了一个良好的学习环境,让我们努力学习,在这里陶冶情操。在此向我的论文指导老师送上最诚挚的感谢!老师不仅仅在学业上言传身教。而且本文更是多亏了他的忠告,从选题到方案的论证,从硬件设计到程序的编写,他都给了我莫大的帮助。滴水之恩,当涌泉相报。我只有在未来的工作中,坚持不懈的努力,争取多做出一些成就,来报答老师的恩情。至此,向恩师致以最真挚的感谢和最崇高的敬意!
同时,我要感谢我的合作队友,我们一起选题,一起去网上、图书馆查找资料,互相帮助,分工合作,在这次课题中我负责硬件方面,他负责软件方面。在遇到困难时一起探讨问题,思考解决问题的方法。
另外,我要向所有帮助过我的同学致以真诚的谢意!在设计的过程中,遇到自己不能解决的问题时,是他们都给了我无私的帮助,让我度过难关。这个毕业设计也有你们的一份功劳,谢谢你们!
29
基于单片机的温度测量系统设计
附录
#include #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit dq=P2^0; //位声明 sbit beep=P1^1; sbit d=P1^0; sbit k1=P1^2; sbit k2=P1^3; sbit k3=P1^4; sbit lcden=P2^6; sbit lcdrw=P2^5; sbit lcdrs=P2^4; uchar code str[]=\"OK\"; uchar code str0[]=\"TOO HIGH!\"; uchar code str1[]=\"TOO LOW!\"; uchar code str2[]=\"SET\"; uchar code str3[]=\"MAX:\"; uchar code str4[]=\"MIN:\"; uchar temp,flag1,flag2,max,min; void write_com(uchar); //液晶写命令子程序 void write_data(uchar); //液晶写指令子程序 void delay_(uint); //一微秒延时程序 void init_d(); //ds18b20初始化子程序 void delay(uint); //一毫秒延时子函数 void write_byte(uchar); //ds18 b20写字节子程序 uchar read_t(); //检测温度程序 uchar read_byte(); // ds18 b20读字节子程序 void display(); //显示温度子程序 void write_str(uchar *); //向液晶内写入字节 void display_max(); //显示最大值子程序 void display_min(); //显示最小值子程序 void main() 30 基于单片机的温度测量系统设计 { max=40; min=20; lcdrw=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(1); while(1) { while((flag1==0)&&(flag2==0)) { write_com(1); temp=read_t(); display(); write_com(0x80+9); write_data('C'); if(temp>max) { beep=0; d=0; write_com(0x80+0x40+4); write_str(str0); delay(200); } else if(temp write_com(0x80+0x40+4); write_str(str1); delay(200); } else { 31 基于单片机的温度测量系统设计 beep=1; d=1; write_com(0x80+0x40+7); write_str(str); delay(200); } if(k1==0) { delay(5); //消抖 if(k1==0) { if((flag1==0)&&(flag2==0)) flag1=1; else if((flag1==1)&&(flag2==0)) { flag1=0; flag2=1; } else { flag1=0; flag2=0; } while(!k1); //松手检测 write_com(1); } } } } while((flag1==0)&&(flag2==1)) { beep=1; d=1; write_com(0x80+0x40+1); write_str(str2); 32 基于单片机的温度测量系统设计 write_com(0x80+6); write_str(str3); write_com(0x80+14); write_data('C'); write_com(0x80+0x40+6); write_str(str4); write_com(0x80+0x40+14); write_data('C'); display_max(); display_min(); while((flag1==0)&&(flag2==1)) { if(k2==0) { delay(5); if(k2==0) { while(!k2); min++; if(min==(max-4)) min=0; display_min(); } } if(k3==0) { delay(5); if(k3==0) { while(!k3); min--; if(min==255) min=max5; display_min(); } 33 基于单片机的温度测量系统设计 } if(k1==0) { delay(5); //消抖 if(k1==0) { if((flag1==0)&&(flag2==0)) flag1=1; else if((flag1==1)&&(flag2==0)) { flag1=0; flag2=1; } else { flag1=0; flag2=0; } while(!k1); //松手检测 write_com(1); } } } } } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init_d() //ds18b20初始化 { 34 基于单片机的温度测量系统设计 uchar n; dq=1; delay_(8); dq=0; delay_(80); dq=1; delay_(8); n=dq; delay_(4); } void delay_(uint t) //一微妙延时 { while(t--); } void write_com(uchar com) //写命令{ lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar da) //写数据 { lcdrs=1; P0=da; delay(5); lcden=1; delay(5); lcden=0; } void write_byte(uchar dat) //读字节 { uchar i; 35 基于单片机的温度测量系统设计 for(i=0;i<8;i++) { dq=0; dq=dat&0x01; delay_(4); dq=1; dat>>=1; } delay_(4); } uchar read_byte() //写字节 { uchar i,value; for(i=0;i<8;i++) { dq=0; value>>=1; dq=1; if(dq) value|=0x80; delay_(4); } return value; } uchar read_t() //读温度{ uchar a,b; init_d(); write_byte(0xcc); write_byte(0x44); delay_(300); init_d(); write_byte(0xcc); write_byte(0xbe); a=read_byte(); b=read_byte(); 36 基于单片机的温度测量系统设计 b<<=4; b+=(a&0xf0)>>4; return b; } void display() //显示 { write_com(0x80+6); write_data(0x30+(temp/10)); write_com(0x80+7); write_data(0x30+(temp%10)); } void write_str(uchar *p) { while(*p) write_data(*p++); } void display_max() //显示最高值 { write_com(0x80+11); write_data(0x30+(max/10)); write_com(0x80+12); write_data(0x30+(max%10)); } void display_min() //显示最小值 write_com(0x80+0x40+11); write_data(0x30+(min/10)); write_com(0x80+0x40+12); write_data(0x30+(min%10)); } 37 {
因篇幅问题不能全部显示,请点此查看更多更全内容