您的当前位置:首页正文

基于单片机的电热

2021-04-12 来源:钮旅网


摘 要

本文设计的控制器采用AT89S52单片机作为控制核心,将PID算法和PWM脉宽调制技术相结合,通过控制继电器的通断实现热水器的恒温控制。该系统能根据设定的温度,实现温度的自动采集和控制,解决了传统的电热水器用冷热水闸门调节温度出现的温度不易调节的缺点。首先介绍了系统的总体组成,然后分硬件与软件两部分进行阐述,硬件中先描述了整体结构和各模块的相互关系。对于较新的可编程芯片又进一步介绍了其内部结构及外部特征。软件部分阐述了PID控制算法,然后说明PID控制在本系统中的应用,之后给出程序流程说明PID控制在该系统中实现,最后对本系统进行了总结, 本文介绍了PID控制技术的发展历史和研究进展。分析了传统的模拟和数字PID控制算法,并对传统的PID控制算法进行微分项和积分项的改进,学习了几种比较普遍运用的方法,如不完全微分PID控制算法、微分先行、遇限消弱积分PID控制算法等。

本软件采用模块化设计,在主程序模块下分成若干彼此独立的分模块,包括主控模块,温度模块,显示模块等,并且通过单片机将各个模块连接起来,形成一个完整的整体。本系统可以实现对热水器水温的实时控制,程序的可移植性强,有很好的推广、应用价值。

关键词: AT89C52单片机;PID控制;DS18B20温度传感器;温度测量

Abstract

The controller which takes the AT89S52 as the control core is designed in the paper;it combines the PID arithmetic and PWM impulse width modulate,and realizes the constant temperature control of water heater through control the on-off of relay switch .The system can achieve the temperature of automatic collection and contro1 according to the enactment temperature.It resolves that the traditional water heater using the cold-hot water gate to control the temperature bring the problem of temperature no-easy adjust.This text introduces firstly the overall composition of the system.and then describes its two parts of hardware and software.The interactions between whole structure and every module are described in the hardware.For the newer programmable chips.their internal structures and external characteristics are introduced further.The part of software explains PID control algorithm and illustrates the application of PID control in this system.The procedure flow is provided to show the realization of PID control in this system.Finally the summary of this system is given。In this paper, we will introduce the development history and the research progress of PID control technology,analysis the traditional analog and digital PID control algorithm. and improve the differential and integral of traditional PID control algorithm. Learn several methods we used commom. Such as not fully differential PID control algorithm, first differential, when limited to weaken the integral PID control algorithm.

The software adopts modular design,Including the main control module and temperature modules, display modules and so on, And through the MCU to connect the various modules to form a complete whole. This system Can realize the real—time control of the temperature of the water heater, with strong portability of the procedure.

Keywords:AT89S52 single chip microcomputer;PID control;DS18B20 temperature sensor;temperature measurement

桂林电子科技大学毕业设计(论文)报告用纸 第I页 共II页

目 录

引 言 ..................................................................................................................... 1 1. 绪 论 .............................................................................................................. 2

1.1 课题背景 .............................................................. 2 1.2 课题前景 .............................................................. 2 1.3 课题研究的目的及意义 .................................................. 2

2. 方案设计 ......................................................................................................... 3

2.1设计要求 .............................................................. 3 2.2方案设计 .............................................................. 3

3. 硬件设计 ........................................................................................................ 5

3.1 主控模块设计 .......................................................... 5

3.1.1 单片机简介 .............................................................. 5 3.1.2 AT89S52单片机 ......................................................... 6

3.2 AT89S51单片机外围电路的设计 ........................................ 10

3.2.1 时钟电路 ............................................................... 10 3.2.2单片机复位电路 ......................................................... 10 3.2.3 报警及键盘 ............................................................. 11

3.3 温度模块 ............................................................ 12

3.3.1温度传感器的选择 ....................................................... 12 3.3.2 数字温度传感器DS18B20简介 ............................................. 13

3.4 显示模块 ............................................................. 20 3.5 固态继电器及驱动电路的设计 ........................................... 23 3.6 电源及其它电路的设计 ................................................. 24

4. 系统软件设计 ............................................................................................... 25

4.1 测温子程序 ........................................................... 25 4.2 PWM控制波形程序..................................................... 26 4.3 数字PID控制器的实现 ................................................. 27 4.4 主程序流程图 ........................................................ 27 4.5 PID控制 ............................................................. 28

4.5.1 PID控制的原理和特点 ................................................... 29 4.5.2 PID算法控制 ........................................................... 30 4.5.3 PID控制器的参数整定 ................................................... 31

5 系统的调试 ................................................................................................... 33

桂林电子科技大学毕业设计(论文)报告用纸 第II页 共II页

5.1软件调试 ............................................................. 33 5.2 硬件调试 ............................................................. 33

6 总结与体会 ................................................................................................... 34 谢 辞 ................................................................................................................. 35 参考文献 ............................................................................................................. 36 附 录 ................................................................................................................. 37

附录一: ................................................................. 37 附录二: ................................................................. 38 附录三: ................................................................. 39

桂林电子科技大学毕业设计(论文)报告用纸 第1页 共46页

引 言

热水器是一种可供浴室,洗手间及厨房使用的家用电器。目前市场上热水器主要品种有电热水器、太阳能热水器、燃气热水器。就中国的具体情况而言,由于太阳能热水器的使用受天气原因的限制,使用范围狭窄;燃气热水器由于以石油、天然气为燃料,而燃料供应量又难以满足人们日益增长的需求,且不利于环境,因此电热水器越来越受到消费者的青睐。电热水器的优点是能适应任何天气变化,普通家庭可直接安装使用,长时间通电可以大流量供热水。使用时不产生废气,使用起来既安全又卫生,多数产品由于采取了过压、过热、漏电三重保护装置,在使用中更为安全。随着广大消费者生活水平的提高,电热水器已成为普通家庭生活中不可缺少的家用电器。随着科技的发展和人们生活质量的不断提高,人们对电热水器的控制要求也越来越高,从现在能到达设定温度后自动断电、自动补温等功能,到电热水器向更智能化、舒适化、人性化发展,如电热水器能快速、稳定的达到人们所需求的温度,以体现电热水器比一般热水器具有更大的优势。

单片机是家用电器常用的控制器件,本文介绍了基于AT89S51单片机控制的电热水器控制电路,包括温度测量单片机控制、水温设定与自动调节电路、键盘控制、液晶显示、报警电路五部分,在控制回路采用PID模糊控制方法,基于模糊控制的方法,在强时变、大时滞、非线性系统中的控制效果有着明显的优势,把二者结合起来,可使控制器的性能指标达到最优的目的。基于模糊控制技术的单片机控制的电热水器,是对传统的电热水器开关控制的改造,具有达到设定温度的时间短、稳态温度波动小、反应灵敏、抗干扰能力强、节省电能等优点。首先通过按下键盘按键设定所需的温度,并通过液晶显示,再通过温度传感器DS18B20测出电热水器的温度,送液晶显示并送单片机与设定水温加以比较,设定水温高于实测水温则通过继电器触头的通断来控制是否对电热丝进行加热,从而实现水温的测量以及控制,在水温高于设定温度时,蜂鸣器报警,其简洁、智能、精确的优点基本能满足人们的需求,并且将会得到广泛的应用 。

桂林电子科技大学毕业设计(论文)报告用纸 第2页 共46页

1. 绪 论

1.1 课题背景

中国已是热水器生产大国,伴随着住宅消费和人们对生活品质要求的提高,热水器已由一个高档的奢侈品成为居民乔迁新居、厨卫装修的必备产品。近几年来,随着人们生活水平的不断提高,智能化的家用电器逐渐走进千家万户,此外,受瓶装气和区域管道燃气提价影响,而且城镇的电价普遍有所下调,许多居民转而选择相对省钱的电器产品。全国城镇热水器拥有率为72.3%,45%的城市居民家庭表示要在今后几年购买热水器,市场平均每年的最低需求维持在1000万台左右。除太阳能热水器外,中国热水器行业有一定规模的生产企业大约有200家。由此可见电热水器在中国有广阔的市场,但由此也衍生了很多问题,如漏电,环保等一系列问题,近年来电热水器多次出现漏电伤人甚至致死事件,因此其安全性一直为消费者所关注。 所以对热水器的改良和智能化设计是大势所趋。 1.2 课题前景

在市场日益规范的今天,如何在电热水器的技术上实现新的突破,是各厂家都 在思考的重要问题。由于不同于一般的家电产品,涉及到人身安全,所以安全问题一直是各大电热水器厂家考虑的重点,随着现在各种安全技术在电热水器设计中的普遍应用,用电环境的日益规范,以及国家对电热水器实行强制认证,对于正规厂家经过认证的产品来说,安全保障是符合要求的,只是由于商业的原因,各大厂家都不愿意放弃在安全问题上的炒作和宣传。此外,控制技术是另一个发展方向,目前在控制技术上,主要的方向是大人机界面的人性化设计和网络化控制技术等方面,集中在更方便的操作(如各种有线和无线控制技术)、多种可选控制方式、各类预约加热技术和智能记忆技术上,并采用大人机界面来使操作更容易。另一个发展方向是节能设计,应该说,节能技术是未来电热水器发展的重点,在注重环保以及能源日益紧张的今天,对家电产品的节能要求会越来越严格,对于大用电量的电热水器来说,如何节能不仅对于有效降低用户的使用费用有益,而且对于能源日益紧张的大环境也是必需的。 1.3 课题研究的目的及意义

设计出一款经济可靠,精确实现控制的电热水器控制电路。

①利用按键精确地设定温度,精确调温使温度达到使用者要求的温度,从而实现人性化控制。

②利用PID算法进行温度控制,PID控制能使温度快速,平稳,精确的达到设定温度,配以按键,实现了智能控制。

③利用单片机控制,即达到较好的效果,又降低了价格,使热水器更加的经济可靠。 ④能进行高温保护,防止热水器干烧而导致事故。

桂林电子科技大学毕业设计(论文)报告用纸 第3页 共46页

2. 方案设计

设计就是根据题目的要求而对硬件和软件进行规划,并选择最合适的硬件电路和软件程序来达到目的。

硬件设计是通过对设计要求的分析,对各种元器件的了解,而得出分立元件与集成块的某些连接方法,以达到设计的功能要求。并且把这些元器件焊接在一块电路板上。它包括对各种元器件的功能和接法的了解,以及对各种元器件的选择和设计方案的选择。软件设计是分析设计的硬件用程序实现其功能,并且调试优化产品功能。 2.1设计要求

本课题是制作一款基于单片机控制的电热水器控制系统,使电热水器按人们的需求能快速、稳定的达到人们所需求的温度,以体现电热水器比一般热水器所具有的优势。要求温度传感器及转换电路,水温设定与自动调节电路,单片机输入输出接口电路以及显示模块的设计。其中的难点是实现PID控制温度。 2.2方案设计

方案设计的总体思路如下:首先通过键盘设定一个温度值,然后通过温度传感器采集温度,与设定的温度进行比较,如果温度小于设定值电热水器开始加热,当水温达到设定值时,则停止加热,设定的温度和水温通过LED数码管显示出来。当水温高于某临界温度(如70°)时,报警器发出报警,同时中断加热。所以可以得出电路以单片机为核心,包括温度设定按键模块,LED显示模块,报警和输出电路等模块组成,其系统模块框图见图2.1

温度设定 单片机 温度测量 数码管显示 报警

图2.1 系统模块框图

① 温度设定电路。通过一个按键产生脉冲输入单片机来调节水温的设定值。

桂林电子科技大学毕业设计(论文)报告用纸 第4页 共46页

② 温度测定电路,采用温度传感器来测量温度。

③ 单片机,是整个电路的控制核心,实现PID模糊控制。

④ 数码管显示,单片机通过动态扫描方式输出并利用数码管显示温度的设定值和实际测温值。

⑤ 报警电路,当实际温度高于设定温度时,报警电路报警。 基于以上模块设计出了电路的基本结构图,如图2.2

报警及显示电路 给定 单片机 SSR驱动 电烤箱 温度传感器

图2.2系统结构图

结构图中以单片机为核心进行系统设计。通过单片机对偏差进行PID运算,输出占空比可变的PWM波形,从而控制固态继电器的导通时间,即通过调节加热功率即可达到控制温度恒定的目的。

桂林电子科技大学毕业设计(论文)报告用纸 第5页 共46页

3. 硬件设计

3.1 主控模块设计

主控模块主要实现的功能是:分析处理温度传感器检测到的值,并与设定值比较,由固化的PID程序计算出固态继电器(SSR)的控制信号。如果测得的温度值达到或超过设定的报警值,单片机要做出相应的保护动作,保证电加热系统的安全运行。同时还要对数码管进行扫描,以实现实时数据的显示。

为了很好的实现上述功能,本电路采用市场广泛使用的AT89S52单片机为核心进行控制,所以有必要对单片机进行较深入的了解,在此对单片机进行简单的介绍。 3.1.1 单片机简介

单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。单片机作为微型计算机的一个重要分支,应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。其发展历程经历以下几个时期

(1)SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用

(2)MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。

(3)单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。

以8位单片机为起点分为四个阶段

(1)第一阶段(1976-1978):单片机的控索阶段。以Intel公司的MCS – 48为代表。MCS – 48的推出是在工控领域的控索,参与这一控索的公司还有Motorola 、Zilog等,都取得了满意的效果。这就是SCM的诞生年代,“单机片”一词即由此而来。

计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。

桂林电子科技大学毕业设计(论文)报告用纸 第6页 共46页

(2)第二阶段(1978-1982)单片机的完善阶段。Intel公司在MCS – 48 基础上推出了完善的、典型的单片机系列MCS –51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。

①完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。 ②CPU外围功能单元的集中管理模式。 ③体现工控特性的位地址空间及位操作方式。

④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。

(3)第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS – 96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS – 51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。

(4)第四阶段(1990—):微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。

随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将列强。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。80C51单片机已成为单片机发展的主流。 3.1.2 AT89S52单片机

AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。

桂林电子科技大学毕业设计(论文)报告用纸 第7页 共46页

图3.1 AT89S52单片机引脚图

1.AT89S52管脚

VCC : 电源 GND: 地

P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0具有内部上拉电阻。在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表3.1所示。

在flash编程和校验时,P1口接收低8位地址字节。

表3.1 P1口的第二功能

引脚号 第二功能 桂林电子科技大学毕业设计(论文)报告用纸 第8页 共46页

P1.0 P1.1 P1.5 P1.6 P1.7 T2(定时器/计数器T2的外部计数输入),时钟输出 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) MOSI(在系统编程用) MISO(在系统编程用) SCK(在系统编程用)

P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表3.2所示。 在flash编程和校验时,P3口也接收一些控制信号。

表 3.2 P3口的第二功能 引脚号 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

第二功能 RXD(串行输入) TXD(串行输出) INT0(外部中断0) INT0(外部中断0) T0(定时器0外部输入) T1(定时器1外部输入) WR(外部数据存储器写选通) RD(外部数据存储器写选通) RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,

桂林电子科技大学毕业设计(论文)报告用纸 第9页 共46页

ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而 在访问外部数据存储器时,PSEN将不被激活。

EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 2. 中断寄存器

各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。AT89S51有6个中断源:两个外部中断(INT0和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断如图所示。每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。如表5所示,IE.6位是不可用的。对于AT89S51,IE.5位也是不能用的。用户软件不应给这些位写1。它们为AT89系列新产品预留。

定时器2可以被寄存器T2CON中的TF2和EXF2的“或”逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2或EXF2激活中断,标志位也必须由软件清0。

定时器0和定时器1标志位TF0和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周期被电路捕捉下来。然而,定时器2的标志位TF2在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。

表3.3 中断允许控制寄存器

(MSB) (LSB) EA - ET2 ES ET1 EX1 ET0 EX0 中断允许控制位=1,允许中断 中断允许控制位=0,禁止中断 符号 EA 位地址 功能 IE.7 中断总允许控制位。EA=0,中断总禁止;EA=1,各中断由各自的控制桂林电子科技大学毕业设计(论文)报告用纸 第10页 共46页

位设定 - ET2 ES ET1 EX1 ET0 EX0

3.2 AT89S51单片机外围电路的设计 3.2.1 时钟电路

单片机内部有一个高增益反向放大器,输入端为芯片引脚XTAL1,输出端为引脚

IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0 预留 定时器2中断允许控制位 串行口中断允许控制位 定时器1中断允许控制位 外部中断1允许控制位 定时器0中断允许控制位 外部中断1允许控制位 XTAL2。而在芯片外部XTAL1和 XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。晶体震荡频率高,则系统的时钟频率也高,单片机运行速度也就快,但反过来运行速度快对存储器的速度要求就高,对印制电路板的工艺要求也高,所以,这里使用震荡频率为12MHz的石英晶体。震荡电路产生的震荡脉冲并不直接是使用,而是经分频后再为系统所用,震荡脉冲经过二分频后才作为系统的时钟信号。在设计电路板时,振荡器和电容应尽量靠近单片机,以避免干扰。需要注意的是:电路板时,振

图 3.2 时钟电路

荡器和电容应尽量安装得与单片机靠近,以减小寄生电容的存在更好的保障振荡器稳定、可靠的工作电路图如图3.2所示。 3.2.2单片机复位电路

单片机的复位电路分为上电复位和按键复位两种方式:

①上电复位:在加电之后通过外部复位电路的电容充电来实现的。当VCC的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的初始化电路原理

桂林电子科技大学毕业设计(论文)报告用纸 第11页 共46页

图。RST上的电压必须保证在斯密特触发器的阀值电压以上足够长时间,满足复位操作的要求。

②按键复位:程序运行出错或操作错误使系统处于死锁状态时,为了摆脱困境,也需按复位键以重新启动。RST引脚是复位信号的输入端,复位信号是高电平有效。按键复位又分按键脉冲复位(图3.3)和按键电平复位。电平复位将复位端通过电阻与VCC相连,按键脉冲复位是利用RC分电路产生正脉冲来达到复位的。

图3.3 复位电路

(c) 注意:

因为按键脉冲复位是利用RC微分电路产生正脉冲来达到复位的。所以电平复位要将复位端通过电阻与VCC相连.如复位电路中R、C的值选择不当,使复位时间过长,单片机将处于循环复位状态。故本设计采用按键复位。 3.2.3 报警及键盘

电路报警电路主要对现场的温度进行监控,如果超过安全温度,单片机将做出相应的报警动作和保护动作。键盘电路主要是实现用户输入设定的温度及运行的功能。其中报警用蜂鸣器实现,通过一个三极管来驱动,实现声音报警功能。键盘部分由三个按键组成,其中,运行/设置键通过外中断的方式读值,另外两个用于设定温度的加减,并改变程序内部的温度设定值。电路原理图如下图3.4所示:

桂林电子科技大学毕业设计(论文)报告用纸 第12页 共46页

图3.4报警及键盘电路

3.3 温度模块

温度模块是硬件模块非常重要的一个模块,温度检测主要任务是检测系统的采样温度,并通过相应的转换,把系统的温度转换成单片机能处理的数字信号。 3.3.1 温度传感器的选择 (一)传感器概述 1) 传感器的定义

国家标准GB7665-87对传感器下的定义是:“能感受规定的被测量并按照一定的规律转换成可用信号的器件或装置,通常由敏感元件和转换元件组成”。传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节。 2) 传感器的作用

人们为了从外界获取信息,必须借助于感觉器官。而单靠人们自身的感觉器官,在研究自然现象和规律以及生产活动中它们的功能就远远不够了。为适应这种情况,就需要传感器。因此可以说,传感器是人类五官的延长,又称之为电五官。

新技术革命的到来,世界开始进入信息时代。在利用信息的过程中,首先要解决的就是要获取准确可靠的信息,而传感器是获取自然和生产领域中信息的主要途径与手段。

桂林电子科技大学毕业设计(论文)报告用纸 第13页 共46页

在现代工业生产尤其是自动化生产过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。因此可以说,没有众多的优良的传感器,现代化生产也就失去了基础。

在基础学科研究中,传感器更具有突出的地位。现代科学技术的发展,进入了许多新领域:例如在宏观上要观察上千光年的茫茫宇宙,微观上要观察小到 cm的粒子世界,纵向上要观察长达数十万年的天体演化,短到 s的瞬间反应。此外,还出现了对深化物质认识、开拓新能源、新材料等具有重要作用的各种极端技术研究,如超高温、超低温、超高压、超高真空、超强磁场、超弱磁砀等等。显然,要获取大量人类感官无法直接获取的信息,没有相适应的传感器是不可能的。许多基础科学研究的障碍,首先就在于对象信息的获取存在困难,而一些新机理和高灵敏度的检测传感器的出现,往往会导致该领域内的突破。一些传感器的发展,往往是一些边缘学科开发的先驱。

传感器早已渗透到诸如工业生产、宇宙开发、海洋探测、环境保护、资源调查、医学诊断、生物工程、甚至文物保护等等极其之泛的领域。可以毫不夸张地说,从茫茫的太空,到浩瀚的海洋,以至各种复杂的工程系统,几乎每一个现代化项目,都离不开各种各样的传感器。

由此可见,传感器技术在发展经济、推动社会进步方面的重要作用,是十分明显的。世界各国都十分重视这一领域的发展。相信不久的将来,传感器技术将会出现一个飞跃,达到与其重要地位相称的新水平。 (二)温度传感器

温度传感器是最早开发,应用最广的一类传感器。温度传感器的市场份额大大超过了其他的传感器。从17世纪初人们开始利用温度进行测量。在半导体技术的支持下,本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。与之相应,根据波与物质的相互作用规律,相继开发了声学温度传感器、红外传感器和微波传感器。

温度测量转换部分是整个系统的数据来源,直接影响系统的可靠性。传统的温度测量方法是:温度传感器例如AD590,将测量的温度转换成模拟电信号,再经过A/D转换器把模拟信号转换成数字信号,单片机再对采集的数字信号进行处理。这种模拟数字混合电路实现起来比较复杂,滤波消噪难度大系统稳定性不高,鉴于这些考虑,在此选取数字温度传感器DS18b20来作为测温工具。 3.3.2 数字温度传感器DS18B20简介

由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。 特征 :

桂林电子科技大学毕业设计(论文)报告用纸 第14页 共46页

独特的单线接口仅需一个端口引脚进行通讯

每个器件有唯一的 64 位的序列号存储在内部存储器中 简单的多点分布式测温应用 无需外部器件

可通过数据线供电。供电范围为3.0V到5.5V。 测温范围为-55~+125℃(-67~+257℉) 在-10~+85℃范围内精确度为±5℃ 温度计分辨率可以被使用者选择为9~12位 最多在 750ms 内将温度转换为12 位数字 用户可定义的非易失性温度报警设置

报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件 与DS1822兼容的软件

应用包括温度控制、工业系统、消费品、温度计或任何热感测系统 1.引脚排列

图 3.5 DS18B20 引脚图

2.引脚说明 GND -地

桂林电子科技大学毕业设计(论文)报告用纸 第15页 共46页

DQ -数据I/O VDD -可选电源电压 NC -无连接 3.说明

DS18B20 数字温度计提供9-12 位摄氏温度测量而且有一个由高低电平触发的可 编程的不因电源消失而改变的报警功能。DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20 之间仅需一条连接线(加上地线)。它的测温范围为-55~+125℃,并且在-10~+85℃精度为±5℃。除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求。

每个 DS18B20 都有一个独特的64 位序列号,从而允许多只DS18B20 同时连在一根单线总线上;因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS18B20。这一特性在HVAC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。

表 3.4详细的引脚说明

8 引脚SOIC TO-9 封装 封装* 5 4 1 2 符号 GND DQ 说明 接地。 数据输入/输出引脚。对于单线操作: 漏极开路。当工作在寄生电源模式时 用来提供电源(建“寄生电源”节)。 3 3 VDD 可选的VDD 引脚。工作与寄生电源模 式时VDD必须接地。 *所有上表未提及的引脚都无连接。 4.概览

图3.6 是表示DS18B20 的方框图,表3.4已经给出了引脚说明。64 位只读存储器储存器件的唯一片序列号。高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据。除此之外,高速暂存器提供一个直接的温度报警值寄存器(TH和TL),和一个字节的的配置寄存器。配置寄存器允许用户将温度的精度设定为9,10,11 或12 位。TH,TL 和配置寄存器是非易失性的可擦除程序寄存器(EEPROM),所以存储的数据在器件掉电时不会消失。

DS18B20通过达拉斯公司独有的单总线协议依靠一个单线端口通讯。当全部器件经由一个3态端口或者漏极开路端口(DQ引脚在DS18B20上的情况下)与总线连接的时候,控制线需要连接一个弱上拉电阻。在这个总线系统中,微控制器(主器件)依靠每个器件独有的64位片序列号辨认总线上的器件和记录总上的器件地址。由于每个装置有一个

桂林电子科技大学毕业设计(论文)报告用纸 第16页 共46页

独特的片序列码,总线可以连接的器件数目事实上是无限的。单总线协议,包括指令的详细解释和“时序”见单总线系统节。

DS18B20的另一个功能是可以在没有外部电源供电的情况下工作。当总线处于高电平状态,DQ与上拉电阻连接通过单总线对器件供电。同时处于高电平状态的总线信号对内部电容(Cpp)充电,在总线处于低电平状态时,该电容提供能量给器件。这种提供能量的形式被称为“寄生电源”。作为替代选择DS18B20同样可以通过VDD引脚连接外部电源供电。

图3.5 DS18B20方框图

5.测温操作

DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD转换时,总线控制器必须发出[44h]命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”(见单总线系统节),DS18B20正在温度转换中返回0,转换结束返回1。如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否则将不会由返回值。寄生电源的总线要求DS18B20 供电节详细解释。

图 3.7 温度寄存器格式

桂林电子科技大学毕业设计(论文)报告用纸 第17页 共46页

表 3.5 温度/数据关系

温度℃ +125 +85 +25.0625 +10.125 +0.5 0 -0.5 -10.125 -25.0625 -55 6.报警操作信号

数据输出(二进制) 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 数据输出(十六进制) 07D0h 0550h 0191h 00A2h 0008h 0000h FFF8h FF5Eh FE6Eh FC90h *上电复位时温度寄存器默认值为+85℃

DS18B20完成一次温度转换后,就拿温度值与和存储在TH和TL中一个字节的用 户自定义的报警预置值进行比较。标志位(S)指出温度值的正负:正数S=0,负数S=1。TH和TL寄存器是非易失性的,所以它们在掉电时仍然保存数据。在存储器节将解释TH和TL是怎么存入高速暂存器的第2和第3个字节的。

图 3.6 TH 和TL 寄存器格式

当TH和TL为8位寄存器时,4位温度寄存器中的11个位用来和TH、TL进行比 较。如果测得的温度高于TH 或低于TL,报警条件成立,DS18B20 内部就会置位一个报警标识。每进行一次测温就对这个标识进行一次更新;因此,如果报警条件不成立了,在下一次温度转换后报警标识将被移去。总线控制器通过发出报警搜索命令[ECh]检测总线上所有的DS18B20 报警标识。任何置位报警标识的DS18B20将响应这条命令,所以总线控制器能精确定位每一个满足报警条件的DS18B20。如果报警条件成立,而TH或TL的设置已经改变,另一个温度转换将重新确认报警条件。 7.DS18B20 供电

DS18B20可以通过从VDD引脚接入一个外部电源供电,或者可以工作于寄生电源模式,该模式允许DS18B20工作于无外部电源需求状态。寄生电源在进行远距离测温时是非常有用的。寄生电源的控制回路见图3.5,当总线为高电平时,寄生电源由单总线通过VDD引脚。这个电路会在总线处于高电平时偷能量,部分汲取的能量存储在寄生电源储能电容(Cpp)内,在总线处于低电平时释放能量以提供给器件能量。当DS18B20处于

桂林电子科技大学毕业设计(论文)报告用纸 第18页 共46页

寄生电源模式时,VDD引脚必须接地。

寄生电源模式下,单总线和Cpp在大部分操作中能提供充分的满足规定时序和电压的电流(见直流电特性和交流电特性节)给DS18B20。然而,当DS18B20正在执行温度转换或从高速暂存器向EPPROM传送数据时,工作电流可能高达1.5mA。这个电流可能会引起连接单总线的弱上拉电阻的不可接受的压降,这需要更大的电流,而此时Cpp无法提供。为了保证DS18B20由充足的供电,当进行温度转换或拷贝数据到EEPROM操作时,必须给单总线提供一个强上拉。用漏极开路把I/O直接拉到电源上就可以实现,见图4。在发出温度转换指令[44h]或拷贝暂存器指令[48h]之后,必须在至多10us之内把单总线转换到强上拉,并且在温度转换时序(tconv)或拷贝数据时序(ter=10 ms)必须一直保持为强上拉状态。当强上拉状态保持时,不允许有其它的动作。

对DS18B20供电的另一种传统办法是从VDD引脚接入一个外部电源,见图5。这样做的好处是单总线上不需要强上拉。而且总线不用在温度转换期间总保持高电平。温度高于100℃时,不推荐使用寄生电源,因为DS18B20在这种温度下表现出的漏电流比较大,通讯可能无法进行。在类似这种温度的情况下,强烈推荐使用DS18B20的VDD引脚。对于总线控制器不直到总线上的DS18B20是用寄生电源还是用外部电源的情况,DS18B20 预备了一种信号指示电源的使用意图。总线控制器发出一个Skip ROM指令[CCh],然后发出读电源指令[B4h],这条指令发出后,控制器发出读时序,寄生电源会将总线拉低,而外部电源会将总线保持为高。如果总线被拉低,总线控制器就会知道需要在温度转换期间对单总线提供强上拉。

图 3.7 DS18B20 温度转换期间的强上拉供电

图 3.8 外部电源给DS18B20 供电

8.存储器

桂林电子科技大学毕业设计(论文)报告用纸 第19页 共46页

DS18B20的存储器结构示于图3.9。存储器有一个暂存SRAM和一个存储高低报警触发值TH 和TL 的非易失性电可擦除EEPROM 组成。注意当报警功能不使用时,TH和TL 寄存器可以被当作普通寄存器使用。所有的存储器指令被详述于DS18B20功能指令节。位0和位1为测得温度信息的LSB和MSB。这两个字节是只读的。第2和第3字节是TH和TL的拷贝。位4 包含配置寄存器数据,其被详述于配置寄存器节。位5,6 和7被器件保留,禁止写入;这些数据在读回时全部表现为逻辑1。

高速暂存器的位8是只读的,包含以上八个字节的CRC码,CRC的执行方式如CRC发生器节所述。

数据通过写暂存器指令[4Eh]写入高速暂存器的2,3和4位;数据必须以位2为最低有效位开始传送。为了完整的验证数据,高速暂存器能够在数据写入后被读取(使用读暂存器指令[BEh])。在读暂存器时,数据以位0为最低有效位从单总线移出。总线控制器传递从暂存器到EEPROMTH,TL和配置数据必须发出拷贝暂存器指令[48h]。

EEPROM 寄存器中的数据在器件掉电时仍然保存;上电时,数据被载入暂存器。数据也可以通过召回EEPROM命令从暂存器载入EEPROM。总线控制器在发出这条命令后发出读时序,DS18B20返回0表示正在召回中,返回1表示操作结束。

图 3.9 DS18B20 存储器图

配置寄存器

存储器的第4位为配置寄存器,其组织见图8。用户可以通过按表3所示设置R0和R1位来设定DS18B20的精度。上电默认设置:R0=1,R1=1(12位精度)。注意:精度和转换时间之间有直接的关系。暂存器的位7和位0-4被器件保留,禁止写入;在读回数据时,

它们全部表现为逻辑1。

桂林电子科技大学毕业设计(论文)报告用纸 第20页 共46页

表 3.6温度计精确度配置表

R1 0 0 1 1 9.CRC 发生器

R0 0 1 0 1 分辨率 9位 10位 11位 12位 温度最大转换时间 93.75ms 187.5ms 375ms 750ms CRC字节作为DS18B2064 位ROM的一部分存储在存储器中。CRC码由ROM的前56位计算得到,被包含在ROM的重要字节当中。CRC由存储在存储器中的数据计算得到,因此当存储器中的数据发生改变时,CRC的值也随之改变。CRC能够在总线控制器读取DS18B20时进行数据校验。为校验数据是否被正确读取,总线控制器必须用接受到的数据计算出一个CRC 值,和存储在DS18B20 的64 位ROM 中的值(读ROM 时)或DS18B20 内部计算出的8 位CRC 值(读存储器时)进行比较。如果计算得到的CRC值和读取出来的CRC值相吻合,数据被无错传输。CRC 值的比较以及是否进行下一步操作完全由总线控制器决定。当在DS18B20中存储的或由其计算到CRC值和总线控制器计算的值不相符时,DS18B20内部并没有一个能阻止命令序列进行的电路。 CRC的计算等式如下: CRC = X8 + X5 + X4 + 1

单总线CRC可以由一个由移位寄存器和XOR门构成的多项式发生器来产生,见图3.10。这个回路包括一个移位寄存器和几个XOR 门,移位寄存器的各位都被初始化为0。从ROM中的最低有效位或暂存器中的位0开始,一次一位移入寄存器。在传输了56位ROM中的数据或移入了暂存器的位7后,移位寄存器中就存储了CRC值。下一步,CRC的值必须被循环移入。此时,如果计算得到的CRC是正确的,移位寄存器将复0。

图 3.10 CRC 发生器

3.4 显示模块

现在驱动LED数码管流行采用单片机设计电路,但发现一些显示(LED数码管)电路设计复杂,没有充分利用单片机的电器特点、没有采用“硬件软化”的方法。直接用单片机的8位数据口作为数码管的8段显示驱动口。这种显示方式虽然简便,电路也最简单,但显示的位数很少(只用四位)。但已经满足了此次设计要求,所以选用此种方

桂林电子科技大学毕业设计(论文)报告用纸 第21页 共46页

式。

3.4.1 LED数码管的结构及工作原理

LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图3.4.2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图片

图3.4.1 这是一个7段两位带小数点 10引脚的LED数码管

图3.4.2 引脚定义

每一笔划都是对应一个字母表示 DP是小数点.

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。

桂林电子科技大学毕业设计(论文)报告用纸 第22页 共46页

A、静态显示驱动:

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位*器*进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×8=40根I/O埠来驱动,要知道一个89S51单片机可用的I/O埠才32个呢。故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。 B、动态显示驱动:

数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\"a,b,c,d,e,f,g,dp \"的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。

透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。

本次设计是使用了8段4位共阴数码管的动态显示方式。然而,设计中发现如果严格按照一般的数码管用法,即a~dp段对应单片机数据位的高到低位一一对应,但是数码管的封装不是按顺序一一对应的,布线和做板就比较麻烦。因此设计时既然用单片机译码就在硬件连接的基础上做软件译码,这样就方便了电路的布线,也体现了单片机编程的灵活性。

数码管的数据位由单片机的P0口控制,数码管的段选由P2.4~P2.7控制。本次系统设计中的数码管与单片机的连接如下图3.4.3所示。

SEG1P0_0P0_1P0_2P0_3P0_4P2_7123456edhcg41af23b121110987P2_4P0_6P0_7P2_5P2_6P0_5图3.4.3 数码管与单片机的连接图

基于以上数码管的硬件连接,在单片机编程时要对数码管进行软件译码,各数字所

SEG8_4桂林电子科技大学毕业设计(论文)报告用纸 第23页 共46页

对应的码字如下表所示:

表3.4.1 八段共阴数码管段码

显示字符 0 1 2 3 4 5 6 7

共阴段码 0xEB 0x28 0x73 0x7A 0xB8 0xDA 0xDB 0x68 显示字符 8 9 A B C d E F 共阴段码 0xFB 0xFA 0xF9 0x9B 0xC3 0x3B 0xD3 0xD1 3.5 固态继电器及驱动电路的设计

固态继电器用来控制电热丝加热的开断,在电路中有非常重要的作用,控制电路图如下图3.5.1。用于在闭环控制系统中对被控对象实施控制,被控对象为电烤箱,采用对加在电烤箱两端的电压进行通断的方法进行控制,以实现对加热功率的调整,从而达到对温度控制的目的。对电炉丝通断的控制采用电烤箱自带的JGX-1671F固态继电器。它的使用非常简单,只要在控制端TTL电平,即可实现对继电器的开关,使用时完全可以用 NPN型三极管接成电压跟随器的形式驱动。当单片机的P2.0为高点平时,三极管驱动固态继电器工作接通加热器工作,当单片机的P2.0为低电平时固态继电器关断,加热器不工作。

图3.5.1 SSR及其驱动电路

桂林电子科技大学毕业设计(论文)报告用纸 第24页 共46页

3.6 电源及其它电路的设计

在以上硬件基础上本系统的硬件已经基本能达到本次系统设计的要求,为了便于调试和方便扩展,本次设计加入了几个发光二极管以指示系统的工作状态。具体电路如图3.61所示。

图3.6.1 电源及指示灯电路

桂林电子科技大学毕业设计(论文)报告用纸 第25页 共46页

4. 系统软件设计

软件是电路必不可少的一部分,是整个电路的灵魂部分,只有软硬件完美的配合才是一个完整的电路设计,下面将着重介绍系统的软件部分设计。

软件设计是分析设计的硬件用程序实现其功能,并且调试优化产品功能。软件方面方面,51 单片机用的是Keil软件,Keil C编译器提供一个参数使生成的文件为汇编代码,把这些汇编代码可用A51编译并和其它模块连接。这和直接用编译器产生目标文件是一样的。这种做法的优点是可对产生的汇编代码进行编辑,这样可对代码进行优化,然后再把修改后的代码进行编译和连接。本设计中本人选择了用C语言编写程序。主要编程序来控制定时、计时中断、和输出等。下面介绍C语言编程的优点。C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。

基于上一节的分析和结合实际的系统,基本可以确定本次设计的方案。温控系统为纯滞后一阶惯性系统,所以式(4-2)的各参数的选择取决于电烤箱的阶跃响应曲线和实际经验。为实现系统的各个功能,首先要确定程序流程图,再对具体的模块进行编程。以下分别介绍各程序的流程图。 4.1 测温子程序

在测温时首先对DS18B20进行初始化,初始化DS18B20成功后,启动DS1820开始测温,所输出的是12位2进制数,然后将12位数进行双8位分离,经单片机及其温度数据对应表进行2进制到10进制的转换,最后实时输出并显示10进制温度值。测温子程序流程图见下图 4.1。

桂林电子科技大学毕业设计(论文)报告用纸 第26页 共46页

图4.1 测温子程序流程图

开始 初始化 DS18B20 启动测温 读取12位 2进制数据 12位数据 双8位分离 10进制 温度显示 4.2 PWM控制波形程序

本程序用于控制SSR在一个控制周期导通时间,本系统暂定控制时间为1s,把控制周期分为100等分,每份的时间为10ms,这样可通过定时器实现占空比可变的PWM波形,定时器的定时时间为10ms。基本的程序流程如图4.2所示,其体程序见附录。

桂林电子科技大学毕业设计(论文)报告用纸 第27页 共46页

定时器初始化 启动定时器 定时到PID输出值 使输出引脚变为低电平 控制周期到 使输出引脚变为低电平 返回主程序 图4.2 PMW控制波形流程图

4.3 数字PID控制器的实现

由上一小节可确定本系统采用的PID算法应使用位置式PID算法,SSR的导通率就像一般控制系统的阀门,通过调节占空比来调节SSR的输出功率。注意到,占空比不能为负数也不能大于100,这样对SSR没有任何意义,故在输出时在加限幅处理。具体流程图如图4.3所示,其体程序见附录。

设定温度 返回主程序 取得测量温度 保存当误差 计算偏差 计算控制增量 输出限幅 图4.3 数字PID程序流程图

4.4 主程序流程图

本系统实现对电热水器的温度实时显示、控制功能,首先对DS18B20进行初始化,然后判断设定水温和从DS18B20温度传感器测来的温度进行比较,当设定水温大于实测

桂林电子科技大学毕业设计(论文)报告用纸 第28页 共46页

水温时继电器常开触头闭合,电热丝加热,否则返回。当水温大于临界温度值时,蜂鸣器报警并且停止加热。图4.4显示了本系统的主程序流程图。

开始 初始化 设定温度 读取温度 临界温度<实测水温 设定温度>实测水温 报警,停止加热 电热丝加热 返回 返回 图4.4 主程序流程图

4.5 PID控制

在工业过程控制中,目前采用最多的控制方式依然是PID方式,即使在日本,PID控制的使用率也达到84.5%。它具有容易实现、控制效果好、鲁棒性强等特点,同时它原理简单,参数物理意义明确,理论分析体系完整,并为工程界所熟悉,因而在工业过程控制中得到了广泛应用。本系统的核心控制方法为数字PID,在控制系统中,控制器最常用的控制规律是PID控制。本节将分别介绍PID控制、PID算法控制过程和参数的整

桂林电子科技大学毕业设计(论文)报告用纸 第29页 共46页

定。

4.5.1 PID控制的原理和特点

在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。 比例(P)控制

比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 积分(I)控制

在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 微分(D)控制

在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入 “比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。

PID控制系统原理框图如图4.5.1所示。系统由PID控制器和被控对象组成。

桂林电子科技大学毕业设计(论文)报告用纸 第30页 共46页

图4.5.1 PID控制系统原理框图

PID控制器是一种线性控制器,一种它根据给定值rin(t)与实际输出值yout(t)构成控制偏差:

e(t)=rin(t)-yout(t) (4-1)

PID控制就是对偏差信号进行比例、积分、微分运算后,形成一种控制规律。即,控制器的输出为:

TDde(t)1t u(t)Kp (4-2) e(t)e(t)dt0T1dt式中,Kp——比例系数;Ti——积分时间常数;TD——微分时间常数。 4.5.2 PID算法控制 1. 模拟PID调节器

(一)模拟PID控制系统组成

图4.5.2 模拟PID控制系统原理框图

(二)模拟PID调节器的微分方程和传输函数

PID调节器是一种线性调节器,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制。 1、PID调节器的微分方程

u(t)KPe(t)1TIt0e(t)dtTDde(t)  (4-3)

dt 式中 e(t)r(t)c(t) 2、PID调节器的传输函数

U(S)1 D(S)(4-4) KP1TDS

E(S)TSI

桂林电子科技大学毕业设计(论文)报告用纸 第31页 共46页

(三)PID调节器各校正环节的作用

1、比例环节:即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。

2、积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数TI,TI越大,积分作用越弱,反之则越强。

3、微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。 2. 数字PID控制器

①模拟PID控制规律的离散化

模拟形式 离散化形式 e(t)r(t)c(t) de(t) dTe(n)r(n)c(n) e(n)e(n1) Tt0e(t)dt e(i)TTe(i) i0i0nn②数字PID控制器的差分方程

TTnu(n)KPe(n)e(i)De(n)e(n1)u0 (4-5) TIi0TuP(n)uI(n)uD(n)u0式中 uP(n)KPe(n) 称为比例项

T uI(n)KPTI uD(n)KPe(i) 称为积分项

i0nTDe(n)e(n1) 称为微分项 T③常用的控制方式

1、P控制 u(n)uP(n)u0 2、PI控制 u(n)uP(n)uI(n)u0 3、PD控制 u(n)uP(n)uD(n)u0 4、PID控制 u(n)uP(n)uI(n)uD(n)u0

4.5.3 PID控制器的参数整定

PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的

桂林电子科技大学毕业设计(论文)报告用纸 第32页 共46页

方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行 PID控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作;(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;(3)在一定的控制度下通过公式计算得到PID控制器的参数。

在实际调试中,只能先大致设定一个经验值,然后根据调节效果修改。 对于温度系统:P(%)20--60,I(分)3--10,D(分)0.5--3 对于流量系统:P(%)40--100,I(分)0.1--1 对于压力系统:P(%)30--70,I(分)0.4--3 对于液位系统:P(%)20--80,I(分)1--5 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线振荡频率快,先把微分降下来 动差大来波动慢。微分时间应加长 理想曲线两个波,前高后低4比1 一看二调多分析,调节质量不会低

桂林电子科技大学毕业设计(论文)报告用纸 第33页 共46页

5 系统的调试

5.1软件调试

软件的调试主要通过Keil 软件进行操作,对程序编写过程中的错误进行查找,找出错误,进行修改,然后再进行编译直至编译成功,生成HEX文件,才能下载到单片机里,继而实现相应功能。 5.2 硬件调试

在印制电路板工作完成之后,根据设计的步骤要求我对自己的硬件电路板进行了调试工作,这里将调试的过程及在调试的过程中所遇到的问题提出来进行讨论,以便能够进一步的掌握设计工作的要领。 (1)检测元器件:

检测所有元器件的好坏,是否正常工作,导线是否导通等。具体的实现方法是先检测电容、电阻及导线是否短接,采用的工具是万用表。 (2)检测各个引脚信号:

给电路接通电源,大概用手摸一下元器件是否发热,有的话,关掉电源,进行再次检测;没有的话,则测试所有芯片的VCC端电压是否达到要求,接地端是否都接地,无误后,则开始对电路中所用到的引脚进行信号波形测试,所使用的工具最好是示波器。

在调试中遇到了一些问题,温度显示不出来,我首先检查测温电路,检查DS18B20管脚有没有接错。检查结果是管脚没有接反,但发现10K上拉电阻接错了,问题出在在设计原理图的时候,由于疏忽将10K电阻接到DS18B20的电源脚上了。这样的话,DS18B20根本无法正常工作。马上将错误纠正后,测温电路才开始正常工作。

继而检查报警器,在本电路中,采用蜂鸣器来作为报警器。通过一个1K限流电阻和一个NPN三极管来驱动蜂蜜器接单片机的P2.1口,用一小段程序来使蜂鸣器报警。后来发现所测温度达到70度时蜂鸣器不响,但检查程序并没有问题,用万用表测量发现P2.1口的输出电压只有1.17V。分析得出结论是单片机内部上拉电阻上拉能力有限,所以,就又在单片机的P2.1口接了一个4.7K的上拉电阻,蜂鸣器还是不响,只能去检查原理图发现错把PNP当成了NPN来使用,装元器件时也用用错了NPN,就买了一个PNP装上再调试,发现温度达到70度时蜂鸣器报警。

检测都没有什么问题的时候,就可以烧写单片机程序,进行整体调试了,调试的结果能达到设计的要求数据,就算硬件设计工作完成。

在调试本系统时,有些问题在仿真软件上是无法表现出来的。比如本系统数码管显示的问题,在Proteus上能很清昕地显示,不过烧到单片机上时,发现由于选择的延时时间不好,导致数码管闪烁不定。经过调节数码管的延时时间,使数码管能更清昕地显示。

桂林电子科技大学毕业设计(论文)报告用纸 第34页 共46页

6 总结与体会

本文设计的电热水器控制系统由单片机AT89C51、温度传感器DS18B20、及键盘及显示电路系统软件的设计采用模块化结构,采用定时中断的结构,主要由主系统程序、LED显示子程序、键盘中断服务子程序、中值滤波子程序等程序组成。该控制系统具有较强的智能,可根据用户设定的温度自动控制加热管的工作,给出恒定温度的出水以及漏电保护等功能。且具有不需预热、无需等待、节能省电、安全环保、体积小巧、节约空间和水温恒定等突出优点。

本次课程设计是对所学知识的一次综合性运用。其中包括对模拟电子技术基础、和数字电子技术基础、单片机等知识的运用。从而完成了本次设计。在设计的过程中发现了自身知识的不足,也发现我们必须具备专业基础知识以外,才能成功的设计出一件合格的东西。这次课程设计收获很多,体会也很深刻,并且对我们所学的东西也产生了浓厚的兴趣。在设计过程中,也学会了很多新的东西,PROTEL软件绘制电路原理图和PCB图,以及一些仿真软件的应用,最典型的就是PROTEUS软件的应用,以及与KEIL软件的联合使用功能。当然最重要的是学到了关于基本电子设计的一些基本方法,同时也加深了对一些常用的电子元件的理解及其基本用法的掌握。除此之外,我觉得在这次设计的过程中,我发现团队精神的重要性,很多时候一个人的力量是有限的,一个人不可能什么都会,什么都能自己解决,还是有需要他人帮助的时候,我觉得人与人之间的相互帮助很有必要,这样不仅能帮助大家很快的解决问题,还能提高我们每个人的实际水平,也培养了我们的团队合作精神,这些能力对于我们今后的学习和工作都很有帮助。

由于时间关系,本次设计中还有不尽完善之处。希望在以后的学习生涯中不断的完善和改进。

桂林电子科技大学毕业设计(论文)报告用纸 第35页 共46页

谢 辞

我是一名成绩并不出色的学生,理论基础底子薄弱,很多简单的问题对我来说都是难度重重。但是通过这次学习,使我的理论知识得到了加强。刚开始接触这个课题时,对一些理论知识不是很懂,向导师李彩林教授的请敦问题也比较多,有些看起来很简单的问题也需要请教。但是每当我向李老师请教的时候,李老师总是耐心地解答,帮助我解决在论文过程中所遇到的各种困难,李老师不仅诲人不倦,而且具有渊博的知识,扎实的理论基础和实践功底,严谨踏实的治学态度,这些都使我受益无穷。尤其是导师平易近人、豁达开朗的生活态度,让我感到无比亲切。在此我谨向李老师表示我深深的谢意。

其次,我也要衷心感谢桂林电子科技大学对我的培养和教育,感谢给我们上课的各位老师、感谢教辅人员和其他各位领导对本人帮助。

在论文的整个过程中,我还得到了其他人的大力帮助,在此我一并向他们表示感谢。

桂林电子科技大学毕业设计(论文)报告用纸 第36页 共46页

参考文献

[1] (美)D.H.施因果德编著;徐德炳译 传感器的接口及信号调理电路[M] 北京:国防工业出版社,

1984.1.

[2] 沈德金. MCS-51系列单片机接口电路与应用程序设计[M] 北京:北京航空航天大学出版社,

1999.

[3] 陆坤等. 电子设计技术[M] 成都:电子科技大学出版社,1997.

[4] 袁涛等编著. 单片机C高级语言程序设计及其应用[M] 北京:北京航空航天大学出版社,2001. [5] 朱世鸿. PLD实用设计技术[M] 北京:电子工业出版社,1994.

[6] 胡伟,季晓衡编著单片机C程序设计及应用实例[M] 北京:人民邮电出版社,2003. [7] 公茂法等编著 单片机人机接口实例集[M] 北京:北京航空航天大学出版社,1998.4. [8] 王宏宝编著 电子测量[M] 北京:科学出版社,2005.

[9] 卢文科编著. 实用电子测量技术及其电路精解[M]. 北京:国防工业出版社,2000. [10] 黄冰,覃伟年,黄知超.微机原理及应用[M].重庆:重庆大学出版社,2003.1. [11] 吉雷.Protel99电子电路设计[M].成都:电子科技大学出版社,2000.12. [12] 黄友锐,曲立国.PID控制器参数整定和实现[M]. 科学出版社 ,2010.1.

[13] 潘新民,王燕芳.微型计算机控制实用教程[M] 电子工业出版社 2006.1.

[14] 王效华, 牛思先. 基于单片机PWM控制技术的实现[J]. 武汉理工大学学报. 2010-01.

[15] 孙**, 张大鹏, 丁金滨. 51系列单片机原理、开发与应用实例[M]. 北京:中国电力出版社,

2009.

桂林电子科技大学毕业设计(论文)报告用纸 第37页 共46页

附 录

附录一:

DS18B20VCCVCCD1LED1R21KLED2R31KD3LED3R4P2_2P2_1GNDVCCDQ12VCC3R110KD2U1BELLVCCQ1S1P3_2SW-PBS2P3_3P1_2S3SW-PBP3_49013SW-PB图3.4 报警及键盘电路

P2_3P1_01KVCCVCCJ1VCCJ2VCCJ3C1111104222POWERPOWERPOWERVCCVCCVCCJ4J5J6J8P3_0VCCU2P0_01P1_01P2_0P3_11P1_0VCCP0_12P1_12P2_11P3_22P1_1P1_0VCCP0_0P0_23P1_23P2_22P3_33P1_2P1_1P0_0P0_1P0_34P1_34P2_33C2P1_3P1_2P0_1P0_2P0_45P1_45P2_445P3_44P1_0P1_4P1_3P0_2P0_3P0_56P1_56P2_56P3_55S4P1_5P1_4P0_3P0_4P0_67P1_67P2_6P2_77P3_66SW-PBP1_6P1_5P0_4P0_5P0_78P1_788P3_77810UP1_7P1_6P0_5P0_69999RESTRESTP1_7P0_6P0_7P0P1P2P3C3P3_0RESTP0_7VCCVCCVCCATAL1P3_1P3_0EAJP2JP3JP4R8P3_2P3_1ALEJP1P1_03010KP3_3P3_2PSENP0_0P1_11P2_01P3_01Y1P3_4P3_3P2_7P2_7P0_11P1_22P2_12P3_1212MHZP3_5P3_4P2_6P2_6P0_22P1_33P2_23P3_23C4P3_6P3_5P2_5P2_5P0_33P1_44P2_34P3_34ATAL2P3_7P3_6P2_4P2_4P0_44P1_55P2_45P3_45ATAL2P3_7P2_3P2_3P0_55P1_66P2_56P3_5630ATAL1ATAL2P2_2P2_2P0_66P1_77P2_67P3_67GNDATAL1P2_1P2_1P0_778P2_78P3_78GNDP2_0P2_08P0P1P2P3AT89C52SEG1VCCP0_1012P2_4R9P0_21e111P0_6P0_32daSEG10P0_7300P0_43hf89P2_5SSRJ7P0_54c2_48P2_6P2_67g34b7P0_5P2_0R7Q29013121342SEG8-4100JGX-1671FOUTR51KQ3DS18B20

桂林电子科技大学毕业设计(论文)报告用纸 第38页 共46页

附录二:

桂林电子科技大学毕业设计(论文)报告用纸 第39页 共46页

附录三:

#include

#define uchar unsigned char #define uint unsigned char #define Kp 3 #define Tmax 70

unsigned char code seg[]={0xEB,0x28,0x73,0x7A,0xB8,0xDA,0xDB,0x68, 0xFB,0xFA,0xF9}; uchar D,set_flag=1; uint temp,set; int PID;

sbit DQ=P1^0;

sbit LED1=P2^2; sbit LED2=P2^1; sbit RUN=P2^3; sbit BELL=P1^2;

sbit D0=P2^4; sbit D1=P2^5; sbit D2=P2^6;

sbit D3=P2^7;//数码管段控制字

sbit key1=P3^3; sbit key2=P3^4;

sbit OUT=P2^0;//PID输出 /***************/ void kdelay(void) {

uchar i,j;

for(i=100;i>0;i--) for(j=248;j>0;j--); }

/*****************/ void delay(uint t) {

uint i; while(t--)

{for (i=0;i<250;i++);} }

/*********************/ void tdelay(uint us)

桂林电子科技大学毕业设计(论文)报告用纸 第40页 共46页

{

while(us--); }

/************************************************************/ //温度传感器DS18B20的初始化函数 Init_DS18B20(void) {

uchar x = 0;

DQ = 1; //DQ复位信号 tdelay(10); //延时

DQ = 0; //将DQ电平拉低 tdelay(80); //延时大于480us DQ = 1; //将DQ电平拉高 tdelay(20); //延时

x = DQ; //如果x=0则初始化成功,x=1则初始化失败 tdelay(30); //延时 }

/************************************************************/ //读一个字节

ReadOneChar(void) {

uchar i = 0; uchar dat = 0; for(i=8;i>0;i--) {

DQ = 0; //低电平脉冲信号 dat>>=1; //dat右移一位 DQ = 1; //高低平脉冲信号 if(DQ) {

dat |= 0x80; }

tdelay(8);//延时 }

return(dat); //返回dat值 }

/************************************************************/ //写一个字节

WriteOneChar(uint dat) {

uint i = 0;

for(i=8;i>0;i--)

桂林电子科技大学毕业设计(论文)报告用纸 第41页 共46页

{

DQ = 0; //低电平脉冲信号 DQ = dat&0x01; tdelay(10);//延时

DQ = 1; //高电平脉冲信号 dat >>= 1;//dat右移一位 }

tdelay(8); }

/************************************************************/ //读取温度

ReadTemperature(void) {

uint L = 0; //定义温度高八位 uint H = 0; //定义温度低八位 uint tp = 0;

Init_DS18B20(); //温度传感器DS18B20初始化 WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 L = ReadOneChar(); //读取温度值低位 H = ReadOneChar(); //读取温度值高位 L = L>>4; tp = H<<4; tp = tp|L; return(tp); }

/**************************/

void display(uint ti,uint te)//显示 {

P0=seg[ti/10]; //送译码数据 D3=1; D2=1; D1=1;

D0=0; //选通第一位数码管 delay(1); // 延时防闪

D0=1; //关闭第一位数码管

P0=seg[ti%10]|0x04;;//显示点号 D3=1; D2=1;

桂林电子科技大学毕业设计(论文)报告用纸 第42页 共46页

D1=0; //选通第二位数码管 D0=1; delay(1); D1=1;

P0=seg[te/10]; D3=1;

D2=0; //选通第三位数码管 D1=1; D0=1; delay(1); D2=1;

P0=seg[te%10];

D3=0; //选通第三位数码管 D2=1; D1=1; D0=1; delay(1); D3=1; }

/*********************************/ void kscan(void) //按键处理 {

while(key1==0) {

kdelay(); //按下去抖 if(key1==0) {

set++; //设置值加1 if(set>100)

set=100;//限幅处理 }

while(!key1);

kdelay(); //松开去抖 while(!key1); }

while(key2==0) {

kdelay(); if(key2==0) {

set--; if(set<20)

桂林电子科技大学毕业设计(论文)报告用纸 第43页 共46页

set=20; }

while(!key2); kdelay(); while(!key2); } }

void alarm(void) {

temp=ReadTemperature(); if(temp>=Tmax) {

LED2=0;//打开警灯 BELL=1;//开启警铃 OUT=1; //关闭加热系统 } }

/**************************************/ void init(void) //初始化 {

TMOD=0x11; //设置定时器0和定时器1的工作方式为方式1 TH0=(65536-50000)/256;

TL0=(65536-50000)%256;//设置定时为50ms EA=1; // 开总中断

ET0=1; //开定时器0中断

TH1=(65536-10000)/256;

TL1=(65536-10000)%256;//设置定时为10ms ET1=1; // 开定时器1中断

EX0=1; //开放外中断

IT0=1; //设置为脉冲触发方式

LED1=1; LED2=1;

RUN=1; //关运行灯 BELL=0; //关蜂鸣器

OUT=1; PID=0; set=25; }

桂林电子科技大学毕业设计(论文)报告用纸 第44页 共46页

/*************************************/ void main(void) {

init(); while(1) {

while(set_flag) {

if(set_flag==1)//设置 {

RUN=1; OUT=1; D=0; TR1=0;

TH1=(65536-10000)%256; TL1=(65536-10000)/256; kscan();

temp=ReadTemperature();

display(set,temp); //显示设置温度和当前温度 }

if(set_flag==2)//运行 {

RUN=0;; TR1=1;

temp=ReadTemperature(); set_flag=0; } }

if(temp==set) LED1=0; display(set,temp); } }

/***********************/ void t1(void) interrupt 3 {

TH1=(65536-10000)/256; TL1=(65536-10000)%256; D++;

if(PID==0) {

OUT=1; }

if(PID==100) {

桂林电子科技大学毕业设计(论文)报告用纸 第45页 共46页

OUT=0; }

if(D==PID&&PID!=100) {

OUT=1; }

if(D==100&&PID!=0) { D=0; OUT=0;

temp=ReadTemperature(); alarm();

PID=Kp*(set-temp); if(PID>=100) {

OUT=0; PID=100; }

if(PID<=0) {

OUT=1; PID=0; } } else

if(D==100) {

D=0;

temp=ReadTemperature(); alarm();

PID=3*(set-temp); if(PID>=100) {

OUT=1; PID=100; }

if(PID<=0) {

OUT=0; PID=0; } } }

桂林电子科技大学毕业设计(论文)报告用纸 第46页 共46页

/*******************************/ void exter0(void) interrupt 0 {

set_flag++;

if(set_flag>2) set_flag=0; }

因篇幅问题不能全部显示,请点此查看更多更全内容