温度自动控制毕业设计论文定稿 - 图文

更新时间:2024-04-10 09:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河南理工大学万方科技学院毕业设计

本 科 毕 业 设 计(论文)

题目 基于51单片机的温度自动控制

系统设计研究

院(系部) 电气与自动化工程系 专业名称 通信工程 年级班级 09-2通信 学生姓名 指导教师

2013年05月10日

I

河南理工大学万方科技学院毕业设计

摘 要

基于单片机的温度控制器,采用DS18B20温度传感器采集所要测量的当前环境的温度,通过单片机进行处理并加以显示。单片机采用的是AT89S52系列单片机。温度传感器DS18B20具有12位精度,可较为精确的测量当前环境的温度。

该温度控制器具有设定温度上、下限的功能,通过控制继电器控制外部降温、加热装置,从而实现环境温度处于设定温度上、下限范围内。

该温度控制器的显示部分采用LED数码管显示,具有显示当先温度、温度上、下限值的功能。按键部分采用四个按键,每个按键的功能不同,通过按键的配合使用,可以实现切换LED数码管显示,调节温度上下限的功能。

该系统结构简单,精度高、量程宽、灵敏度高、体积小、功耗低,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。

关键词:单片机 AT89S52 DS18B20 数码管 继电器

II

河南理工大学万方科技学院毕业设计

Abstract

Temperature controller based on MCU, using the current environment to measure the temperature of sensor DS18B20, processing and display by MCU. The microcontroller is series of MCU AT89S52. The temperature of sensor DS18B20, with 12 accuracy, can accurately measure the current environment temperature.

The temperature controller can set temperature, and have the lower limit function,control the relay to control the external cooling, heate device. So as to realize the environmental temperature at the setting temperature, and lower bounds.

The temperature controller with the display parts, adopts LED digital tube display. Displaying the current temperature, lower value. The part of the four keys, with defferent function , can realize the switch LED digital tube display, adjust the temperature upper limition .

This system is simple, high precision, wide range, high sensitivity, small size, low power consumption, strong

anti-jamming capability, suitable for harsh environments on-site temperature measurement, has a broad application prospection.

Key words: MCU AT89S52 DS18B20 digitron relay

III

河南理工大学万方科技学院毕业设计

目 录

前 言 ............................................................................................................................... 1 1 系统方案设计 ............................................................................................................... 2

1.1 方案论证 ............................................................................................................ 2

1.1.1 方案一 ..................................................................................................... 2 1.1.2 方案二 ..................................................................................................... 2 1.2 系统设计框图 .................................................................................................... 3 2 系统硬件设计 ............................................................................................................... 4

2.1 单片机选择 ........................................................................................................ 4

2.1.1 AT89S52 特点 ......................................................................................... 4 2.1.2 AT89S52 功能描述 ................................................................................. 5 2.1.3 AT89S52 引脚功能 ................................................................................. 5 2.2 温度传感器的选择 ............................................................................................ 6

2.2.1 DS18B20简单介绍 ................................................................................. 6 2.2.2 DS18B20性能特点 ................................................................................. 7 2.2.3 DS18B20内部结构 ................................................................................. 7 2.2.4 DS18B20测温原理 ................................................................................. 8 2.2.5 DS18B20工作时序 ............................................................................... 10 2.3 硬件电路设计 .................................................................................................. 11

2.3.1 测温电路 ............................................................................................... 11 2.3.2 显示电路 ............................................................................................... 13 2.3.3 报警电路 ............................................................................................... 15 2.3.4 降温、加热电路 ................................................................................... 15 2.3.5 其他电路 ............................................................................................... 16

3 系统软件设计 ............................................................................................................. 18

3.1软件设计 ........................................................................................................... 18 4 系统调试 ..................................................................................................................... 20

4.1 软件调试 .......................................................................................................... 20 4.2 元器件调试 ...................................................................................................... 20 5 总 结 ......................................................................................................................... 22 致 谢 ............................................................................................................................. 23 参考文献 ......................................................................................................................... 24 附录一 ............................................................................................................................. 25 附录二 ............................................................................................................................. 34

i

河南理工大学万方科技学院毕业设计

前 言

温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。例如:在农业温室大棚生产、冶金工业、化工生产、电力工程、造纸行业、机械制作、和食品加工等诸多领域中,人们都需要对各类环境、加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业中经常遇到的问题。

基于单片机的温度控制系统可以实现温度的显示、预警等功能,对于工业生产效率的提高,可以起到很大的作用。科学技术是第一生产力,对温度实现比较系统化的检测控制使人们的生产节奏有一个良好的循环。从而将节约更多的人力物力,降低生产过程中可以省略的一些繁琐的细节。一个简单有效地控制系统可以在一定程度上使工厂的生产效益上一个台阶,只要运用得当,就有可能做到。

本设计是基于当前社会发展的良好形势,经过慎重考虑后决定的,也是对自己所学知识的一次检验,期望能够获得温故而知新的效果。只有不断地学习才能不断的进步。结合社会的实际情况,然后根据自己的特点,更好的去了解自己,充分挖掘自己的潜力。学以致用是老师要求我们的努力方向,现今社会要求我们对知识的应用越来越熟练,只有靠自己锲而不舍的奋发图强,才能争取自己的一片天地。

1

河南理工大学万方科技学院毕业设计

1 系统方案设计

1.1 方案论证

由于本方案是基于温度传感器的温度自动控制。可以采用两种方案:一种是使用热敏电阻之类的元件;另一种是使用数字温度传感器

1.1.1 方案一

选用热敏电阻电路,测温部分选用热敏电阻,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。

1.1.2 方案二

考虑到单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,体积小、构成的系统结构简单,它可直接将温度转化成数字信号给单片机处理。另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。 以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。

2

河南理工大学万方科技学院毕业设计

1.2 系统设计框图

本方案设计的系统由单片机系统、数字温度传感器、数码管显示模块、按键控制模块、温度报警模块、温度控制模块组成,其总体架构如图1-1所示

测温电路 单 片 驱动电路 显示电路 时钟电路 报警电路120100按键输入电路 80机 6040200120加热电路一月二月三月四月亚洲区欧洲区北美区

100复位电路 806040200一月二月三月四月降温电路 亚洲区欧洲区北美区图1-1 系统框图

3

河南理工大学万方科技学院毕业设计

2 系统硬件设计

2.1 单片机选择

AT89S52作为温度测试系统的核心器件。该器件是INTEL公司生产的MCS-51系列单片机中的基础产品,采用可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51产品。单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,单片机如图2-1所示。

2.1.1 AT89S52 特点

与MCS-51 兼容;

4K字节可编程闪烁存储器; 寿命:1000写/擦循环; 数据保留时间:10年; 全静态工作:0MHz-33MHz; 三级程序存储器锁定; 128*8位内部RAM; 32位可编程I/O线; 两个16位定时器/计数器; 5个中断源; 可编程串行通道; 低功耗的闲置和掉电模式; 片内振荡器和时钟电路。

图2-1 AT89S52单片机

4

河南理工大学万方科技学院毕业设计

2.1.2 AT89S52 功能描述

AT89S52是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除、快速写入程序的存储器,能承复写入/擦除1000次,数据保存时间为十年。它与MCS-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能[1]。

AT89S52可构成真正的单片机最小应用系统,缩小系统休积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O全部提供给用户。可用5V电压编程,而且擦写时间仅击10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的需求,可以直接在5V电压下进行编程,不需要12V电源。改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽,全静态工作,工作频率宽在0MHz-33MHz之间,比8751/87C51等51系列的6MHz-12MHz更具有灵活性。 AT89S52芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密于段,能完全保证程序或系统不被仿制。

2.1.3 AT89S52 引脚功能

AT89S52 单片机 P3 口第二功能如图2-2所示[2]。

5

河南理工大学万方科技学院毕业设计

图2-2 P3口的第二功能

2.2 温度传感器的选择

由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。

2.2.1 DS18B20简单介绍

DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55~+125 摄氏度,可编程为9位~12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口

6

河南理工大学万方科技学院毕业设计

较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

2.2.2 DS18B20性能特点

(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(2)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温

(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内

(4)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电

(5)测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃ (6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温

(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快

(8)测量结果直接输出数字温度信号,以\一线总线\串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力

2.2.3 DS18B20内部结构

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

图2-3为DS18B20的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),

7

河南理工大学万方科技学院毕业设计

用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分,如图2-3所示。

存储器与控制逻辑 64 位 ROM 和 单 线 接 口 高 速 缓 存 温度控制器 温度控制器 温度控制器 温度控制器 温度控制器

图2-3 DS18B20内部结构框图

2.2.4 DS18B20测温原理

DS18B20的测温原理如图2-4所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号

8

河南理工大学万方科技学院毕业设计

进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。如图2-4所示。

另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

斜率累加器 预置 比较 τ低温度系数振荡器 1 计数器 加1 预置 Tx =0 温度寄存器 τ高温度系数振荡器 2 计数器2 停止 =0

图2-4 DS18B20测温原理图

9

河南理工大学万方科技学院毕业设计

2.2.5 DS18B20工作时序

图2-5为时序图中各总线状态。

总线控制器低电平

DS18B20低电平

同为低电平 总线控制器和DS18B20 电阻上拉

图2-5工作时序图 (1)初始化(时序图见图2-6)。

图2-6 初始化时序图

① 先将数据线置高电平1。

② 延时(改时间要求不是很严格,但是要尽可能短一点)。 ③ 数据线拉到低电平0.

④ 延时750us(改时间范围可以在480-960us)。 ⑤ 数据线拉到高电平1。

⑥ 延时等待。如果初始化成功则在15-60ms 内产生一个有DS18B20 返回的低电平0,据该状态可以确定它的存在。但是应注意不能无限的等待,不然会使程序进入死循环,所以要进行超时判断。

⑦ 若CPU 读到数据线上的低电平0 后,还要进行延时,其延时的时间从发出高电平算起(第5 步的时间算起)最少要480us。

⑧ 将数据线再次拉到高电平1 后结束。

10

河南理工大学万方科技学院毕业设计

(2)DS18B20 写数据 ① 数据线先置低电平0。 ② 延时确定的时间为15us。

③ 按从低位到高位的顺序发送数据(一次只发送一位)。 ④ 延时时间为45us。 ⑤ 将数据线拉到高电平1。

⑥ 重复①-⑤步骤,直到发送完整个字节。 ⑦ 最后将数据线拉到高电平1。 (3)DS18B20 读数据 ① 将数据线拉到高电平1。 ② 延时2us。 ③ 将数据线拉低到0。 ④ 延时6us。 ⑤ 将数据线拉高到1。 ⑥ 延时4us。

⑦ 读数据线的状态得到一个状态位,并进行数据处理。 ⑧ 延时30us。

⑨ 重复①-⑦步骤,直到读完一个字节。

2.3 硬件电路设计

2.3.1 测温电路

本设计采用DS18B20温度传感器作为温度采集电路核心部件。DS18B20是美国DALLAS 半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供处理器处理。

11

河南理工大学万方科技学院毕业设计

目前常用的单片机与外设之间进行数据传输的串行总线主要有I2C 总线以同步串行二线方式进行通信(一条时钟线,一条数据线),SPI总线则以同步串行三线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线),而SCI 总线是以异步方式进行通信的(一条数据输入线,一条数据输出线)。这些总线至少需要两条或两条以上的信号线,而DS18B20使用的单总线技术与上述总线不同,它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的,因而单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。单总线适用于单主机系统,能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单总线器件,他们之间的数据交换只通过一条信号线。当只有一个从机设备时,系统可按单节点系统操作;当有从机设备时,系统则按多节点系统操作。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放出总线,而让其他设备使用总线。单总线要求外接4.7kΩ的上拉电阻。本设计系统的温度采集电路图如图2-7所示[3]。

图2-7 测温电路

12

河南理工大学万方科技学院毕业设计

由图可以看出,DS18B20 和单片机的连接非常简单,单片机只需要一个I/O 口就可以控制DS18B20。这个图的接法是单片机与一个DS18B20 通信,如果要控制多个DS18B20 进行温度采集,只要将所有的DS18B20 的I/O 口全部连在一起就可以了。在具体操作时,通过读取每个DS18B20 内部芯片的序列号来识别。本系统仅操作一个DS18B20 进行温度采集。

2.3.2 显示电路

单片机应用系统中,通常都需要进行人机对话,这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果等。

LED 显示电路由段驱动电路和位驱动电路组成。由于单片机的并行口不能驱动LED 显示器,必须采用专门的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作。如果驱动电路能力差,即负载能力不够,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏。

LED 显示器的显示控制方式分为静态显示和动态显示两种,若选择静态显示,则LED 驱动器的选择较为简单,只要驱动器的驱动能力与显示器的电流相匹配即可;动态显示则不同,由于一位数据的显示是由段和位选信号共同配合完成的,因此,要同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力[4]。数码管位选代码如图2-8所示。

13

河南理工大学万方科技学院毕业设计

管脚数 显示 0 1 2 3 4 5 6 7 8 9 dp 1 1 1 1 1 1 1 1 1 1 g 1 1 0 0 0 0 0 1 0 0 f 0 1 1 1 0 0 0 1 0 0 e 0 1 0 1 1 1 0 1 0 1 d 0 1 0 0 0 0 0 1 0 0 c 0 0 1 0 0 0 0 0 0 0 b 0 0 0 0 1 1 1 0 0 0 a 0 1 0 0 0 0 0 0 0 0 十六进制数 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H 图2-8 数码管位选代码

14

河南理工大学万方科技学院毕业设计

2.3.3 报警电路

当温度超过设定温度时,实现声光报警,蜂鸣器鸣叫、二极管闪烁。蜂鸣器由单片机P3~7口控制,用三极管驱动,电路如图2-9所示[5]。

图2-9 报警电路

2.3.4 降温、加热电路

继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

当温度超过设定温度后,单片机控制继电器,继电器通过三极管驱动,但三极管由导通变为截止时,继电器绕组感生出一个较大的自感电压。它与电源电压叠加后加到控制继电器线圈的三极管上,使发射结有可能被击穿。为了消除这个感应电动势的有害影响,在继电器线圈两端反向并联抑制二极管,以吸收该电动势,保证三极管的安全。降温、加热电路如图2-10所示。

图2-10 降温、加热电路

15

河南理工大学万方科技学院毕业设计

2.3.5 其他电路

(1)按键输入电路

考虑到系统的要求,还需设计按键输入电路,基于单片机的温度控制系统工作时应具备以下功能:?可以切换显示实时温度和温度上限值。?可以调节温度上、下限。要实现这些功能,可以通过按键输入电路。 键盘结构可分为独立式键盘和行列式键盘(矩阵式)两类,由于本系统只采用4 个按键,因此可选用独立式按键,按键采用轻触开关。这4个按键的功能分别是:调整温度上限、加1、减1,复位。如图2-11所示。

图2-11 按键电路

(2)电源电路

由于该系统需要稳定的5V 电源,因此设计时必须采用能满足电压,电流和稳定性要求的电源。本电源采用三端集成稳压器LM7805。它仅有输入端、输出端及公共端三个引脚。其内部设有过流保护,过热保护及调整管安全保护电路。由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。图2-12为电源电路连接图[6]。

16

河南理工大学万方科技学院毕业设计

图2-12 电源电路

17

河南理工大学万方科技学院毕业设计

3 系统软件设计

3.1软件设计

整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。按照软件的功能,把软件分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。图3-1为读取数据流程图,具体代码参考附录一[7]。

18

河南理工大学万方科技学院毕业设计

开始

N

DS18B20初始化 发温度读取命令 清DQ准备发送 延时1us以上 读一位数据 延时 45us 释放总线 延时15~45us 8位数据是否读完 Y

结束读取 图3-1 数据读取流程图[8]

19

河南理工大学万方科技学院毕业设计

4 系统调试

4.1 软件调试

本次设计采用preteus仿真,测试采用模拟温度测试,测试结果如下。 当环境温度大于38度时,蜂鸣器报警,并启动继电器,模拟降温装置启动。当环境温度小于5度时,蜂鸣器报警,并启动继电器,模拟加热装置启动。

在用proteus仿真过程中出现一些问题,包括以下几个方面。 (1)数码管显示乱码,出现这种情况主要是程序错误,我用的是四位共阴数码管,而在编写程序时,却误用成了共阳数码管的代码,经改正后显示正常。

(2)降温、加热电路启动错误,在没有超过报警温度时,电路启动,超过报警温度后,却又关闭,经排查是单片机引脚是高电平,而降温加热子程序中,设置的是高电平启动。设置成低电平启动时,电路工作正常。

(3)按键电路没反应,在按下设置键以及调整键时,系统没有反应。经排查后发现是按键没接地。接地后按键电路工作正常。

4.2 元器件调试

在系统元件的焊接中出现过很多问题,在经过逐一排查后,系统最终运行起来,其中出现的包括以下几个方面。

(1)开机后系统显示乱码,系统不起作用,经排查后发现晶振电路用错了电容,换成22pF后系统工作,但仍显示乱码。查资料后发现,由于用的是片内存储器,但EA/Vpp没有接高电平,接上高电平后数码管显示正常。

(2)系统工作不正常,温度一直显示85度,确定程序没有问题后,

20

河南理工大学万方科技学院毕业设计

经排查后发现由于之前把传感器接反,导致DS18B20烧坏,重新更换后问题解决,显示正常。

(3)数码管显示太暗,系统运行后发现,数码管显示的太暗,看不太清楚,故在数码管位选脚上加上拉电阻,经测试后,数码管显示正常。

21

河南理工大学万方科技学院毕业设计

5 总 结

此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。一旦学会了正确的使用方法,就能感觉到它带来的便利是热电偶不能比拟的,以后再次使用的话就能很快上手了。

软件设计中,把程序按功能分模块的话能提高编程效率,把问题一一解决,同时画流程图能帮助理清思路,使问题简单化。定义变量时,尽量定义局部变量,在字符型变量能达到要求的情况下就不用定义成整形变量了,以节省内存空间。同时局部变量应避免与全局变量取同名,否则全局变量将被屏蔽或与局部变量相冲突而达不到设计的效果。另一方面,取变量名时也要讲究技巧,应尽量使其见名知意,同样地,写程序时加注释确是非常必要的,否则隔一段时间后,想再改进或做扩展的话就比较困难了,因为即使是自己写的程序也变得难读难懂了。在做键盘消抖时,延时的时间比较重要,一般为10ms左右,延时太短就会使按键太过灵敏,按一下就使数字跳变几次;而延时过长则可能使按键按下了却无响应,在外部定义初始化一个延时函数的入口参量则能很方便地调整延时时间,以达到比较好的效果。另外,如果对按键进行释放判断的话就能解决长时间按键导致按键重复响应的问题。

总的来说,自己从这次独立的毕业设计中收获了一些知识与经验,一些从书本中学之不来的东西,不是说理论无用,而这恰恰是在理论的土壤中开出的花朵,是在理论的肩膀望见的更宽广的道路!成功来之不易,自主动手动脑实践,小小的成果亦能带来硕大的喜悦。

22

河南理工大学万方科技学院毕业设计

致 谢

首先,我要感谢河南理工大学万方科技学院,感谢电气系对我四年的培养,让我学到了许许多多的知识,感谢各位老师在这四年里对我的关怀与照顾,在此致以我深深的谢意。

本论文从选题到最后定稿成文,本校赵鸿图老师一直给予了悉心指导,赵老师那种严谨求实的作风,广博深邃的洞察力,孜孜不倦的开拓精神和敬业精神令我深受启迪和教益,谨向我的指导老师赵鸿图老师致以深深的谢意。

我国古代有句成语叫做“管中窥豹,略见一斑”,本文是基于单片机及温度传感器,组成温度自动控制装置。但是,由于我水平有限,在理论的描述、资料的运用等方面难免有不当、不深、不周之处,有些观点也尚欠成熟,敬请各位老师批评指正。

最后,我还要向所有曾经帮助过我的同学和朋友们致敬。你们的鼓励和帮助永远是我前进的动力。

23

河南理工大学万方科技学院毕业设计

参考文献

[1] 郭天祥.51单片机C语言教程--入门、提高、开发、拓展全攻略[M].

北京:电子工业出版社,2009.

[2] 蔡美琴、毛敏等.MCS-51系列单片机系统及其应用[M].北京:高等教

育出版社,2009.

[3] 闫胜利.Altium Designer实用宝典-原理图与PCB设计[M]. 北京,电

子工业出版社,2007.

[4] 朱清惠等.Prnteus教程:电子线路设计制版与仿真[M].北京:清华大

学出版社,2008.

[5] 康华光.电子技术基础一模拟部分[M].北京:高等教育出版社,2008. [6] 康华光.电子技术基础一数字部分[M].北京:高等教育出版社,2009. [7] 铃术雅成.晶体管电路设计[M].科学出版社,2010. [8] 谭浩强.C程序设计[M].北京:清华人学出版社, 2008.

24

河南理工大学万方科技学院毕业设计

附录一

源程序:

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

程序名称:DS18B20温度测量、报警系统

简要说明:DS18B20温度计,温度测量范围0~99.9摄氏度 可设置上限报警温度、下限报警温度

即高于上限值或者低于下限值时蜂鸣器报警,并启动降温、加热电路

默认上限报警温度为38℃、默认下限报警温度为5℃ 报警值可设置范围:最低上限报警值等于当前下限报警值 最高下限报警值等于当前上限报警值

将下限报警值调为0时为关闭下限报警功能

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

#include #include \#define uint unsigned int

#define uchar unsigned char //宏定义 #define SET P3_1 //定义调整键 #define DEC P3_2 //定义减少键 #define ADD P3_3 //定义增加键 #define BEEP P3_7 //定义蜂鸣器 #define Cool P3_5

//定义降温

#define Hot P3_0 //定义加热 bit shanshuo_st; //闪烁间隔标志 bit beep_st; //蜂鸣器间隔标志

25

河南理工大学万方科技学院毕业设计

sbit DIAN = P2^7; //小数点 uchar x=0; //计数器

signed char m; //温度值全局变量 uchar n; //温度值全局变量 uchar set_st=0; //状态标志

signed char shangxian=38; //上限报警温度,默认值为38 signed char xiaxian=5; //下限报警温度,默认值为5 uchar code LEDData[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};

uchar code ALARMData[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};

/*****延时子程序*****/ void Delay(uint num) {

while( --num ); }

/*****初始化定时器0*****/ void InitTimer(void) {

TMOD=0x1; TH0=0x3c;

TL0=0xb0; //50ms(晶振12M) }

26

河南理工大学万方科技学院毕业设计

/*****定时器0中断服务程序*****/ void timer0(void) interrupt 1 {

TH0=0x3c; TL0=0xb0; x++; }

/*****外部中断0服务程序*****/ void int0(void) interrupt 0 {

EX0=0; //关外部中断0 if(DEC==0&&set_st==1) {

shangxian--;

if(shangxian

else if(DEC==0&&set_st==2) {

xiaxian--;

if(xiaxian<0)xiaxian=0; } }

27

河南理工大学万方科技学院毕业设计

/*****外部中断1服务程序*****/ void int1(void) interrupt 2 {

EX1=0; //关外部中断1 if(ADD==0&&set_st==1) {

shangxian++;

if(shangxian>99)shangxian=99; }

else if(ADD==0&&set_st==2) {

xiaxian++;

if(xiaxian>shangxian)xiaxian=shangxian; } }

/*****读取温度*****/ void check_wendu(void) {

uint a,b,c;

c=ReadTemperature()-5; //获取温度值并减去DS18B20的温漂误差

a=c/100; //计算得到十位数字 b=c/10-a*10; //计算得到个位数字

28

河南理工大学万方科技学院毕业设计

m=c/10; //计算得到整数位 n=c-a*100-b*10; //计算得到小数位 if(m<0){m=0;n=0;} //设置温度显示上限 if(m>99){m=99;n=9;} //设置温度显示上限 }

/*****显示开机初始化等待画面*****/ Disp_init() {

P0 = 0xf7; Delay(200); P0 = 0xfb; Delay(200); P0 = 0xfd; Delay(200); P0 = 0xfe; Delay(200);

P2 = 0xbf; //显示- P0 = 0xff; //关闭显示 }

/*****显示温度子程序*****/ Disp_Temperature() //显示温度 {

P0 = 0xf7;

P2 =LEDData[n]; //显示个位

29

河南理工大学万方科技学院毕业设计

Delay(300); P0 = 0xfb;

P2 =LEDData[m]; //显示十位 DIAN = 1; //显示小数点 Delay(300); P0 = 0xfd;

P2 =LEDData[m/10]; //显示百位 Delay(300);

P0 = 0xff; //关闭显示 }

/*****显示报警温度子程序*****/ Disp_alarm(uchar baojing) {

P0 = 0xf7;

P2 =ALARMData[baojing]; //显示十位 Delay(200); P0 = 0xfb;

P2 =ALARMData[baojing/10]; //显示百位 Delay(200); P0 = 0xfd;

if(set_st==1)P2 =0x76;

else if(set_st==2)P2 =0x38; //上限H、下限L标示 Delay(200);

P0 = 0xff; //关闭显示 }

30

河南理工大学万方科技学院毕业设计

/*****报警子程序*****/ void Alarm() {

if(x>=10){beep_st=~beep_st;x=0;}

if((m>=shangxian&&beep_st==1)||(m

else BEEP=1; }

/*****降温子程序*****/ void jiangwen() {

if(m>shangxian-1) Cool=0; else Cool=1; }

/*****加热子程序*****/ void jiare() {

if(m

/*****主函数*****/ void main(void) {

uint z;

InitTimer(); //初始化定时器

31

河南理工大学万方科技学院毕业设计

EA=1; //全局中断开关 TR0=1;

ET0=1; //开启定时器0 IT0=1; IT1=1;

check_wendu(); check_wendu(); for(z=0;z<300;z++) {

Disp_init(); } while(1) {

if(SET==0) {

Delay(2000); do{}while(SET==0);

set_st++;x=0;shanshuo_st=1; if(set_st>2)set_st=0; }

if(set_st==0) {

EX0=0; //关闭外部中断0 EX1=0; //关闭外部中断1 check_wendu();

32

河南理工大学万方科技学院毕业设计

Disp_Temperature(); Alarm(); //报警检测 jiangwen(); jiare(); }

else if(set_st==1) {

BEEP=1; //关闭蜂鸣器 EX0=1; //开启外部中断0 EX1=1; //开启外部中断1

if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(shangxian);} }

else if(set_st==2) {

BEEP=1; //关闭蜂鸣器 EX0=1; //开启外部中断0 EX1=1; //开启外部中断1

if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(xiaxian);} } } }

/*****END*****/

33

河南理工大学万方科技学院毕业设计

附录二

仿真电路图:

实物图一:

34

河南理工大学万方科技学院毕业设计

实物图二:

35

本文来源:https://www.bwwdw.com/article/sx3r.html

Top