基于单片机的温度控制系统设计毕业论文_第1页
基于单片机的温度控制系统设计毕业论文_第2页
基于单片机的温度控制系统设计毕业论文_第3页
基于单片机的温度控制系统设计毕业论文_第4页
基于单片机的温度控制系统设计毕业论文_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的温度控制系统 南南 阳阳 理理 工工 学学 院院 本本 科科 毕毕 业业 设设 计(论文)计(论文) 基于单片机的温度控制系统设计 Based on Single Chip Microcomputer Temperature Control System Design 学 院(系):计算机与信息工程学院 专业:计算机科学与技术 学 生 姓 名:李瑞卿 学号:1306734005 指 导 教 师(职称):鲁庆宾(副教授) 评 阅 教 师: 完 成 日 期:2015 年 6 月 南阳理工学院 Nanyang Institute of Technology 基于单片机的温度控制系统 基于单片机的温度控制系统设计 通信工程专业李瑞卿 【摘摘 要要】温度是工业控制中主要的被控参数之一,在日常生活中也经常要用到温 度的检测及控制。本文介绍了一种以 AT89C51 单片机为核心的控制器,以 DS18B20 为温度传感器的温度控制器。首先,通过对元器件的选择,设计控制器的硬件电 路;然后,设计相关应用程序;最后,通过仿真,对整个系统进行调试、分析。 最终实现温度采集、显示、控制等功能。仿真结果表明,所设计的控制器能够完 成所需功能,并且具有测量精准高、实时性好、使用方便等特点。 【关键词关键词】:温度控制;AT89C51;温度显示;DS18B20 Based on Single Chip Microcomputer Temperature Control System Design Communications Engineering MajorLi Ruiqing Abstract:Temperature control is charged with one of the main industrial parameters, in everyday life also often use to detect and control the temperature. This paper presents a AT89C51 microcontroller as the core to the controller to DS18B20 temperature sensor temperature controller. First, the choice of components, design of the controller hardware circuit; then, design-related applications; Finally, the simulation of the entire system for debugging and analysis. The ultimate realization of temperature acquisition, display and control functions. Simulation results show that the designed controller to complete the required function, and has high measurement precision, real-time, user-friendly features. Key words: Temperature control;AT89C51; Temperature display; DS18B20 基于单片机的温度控制系统 目 录 1 绪 论.1 1.1 课题背景及意义.1 1.2 课题研究的内容.1 1.3.温度控制器的选择2 2. 温度控制器的硬件电路设计.3 2.1 温度传感器的选择3 2.1.1 数字温度传感器3 2.1.2 热电阻温度传感器4 2.1.3 方案选择4 2.2 温度采集模块电路的设计4 2.2.1 DS18B20 介绍.4 2.2.2 温度传感器工作原理5 2.2.3 DS18B20 工作原理介绍.7 2.2.4 DS18B20 使用中的注意事项.8 2.2.5 DS18B20 和 AT89C51 单片机连接电路.9 2.3 显示模块设计10 2.3.1 LCD 液晶显示器简介.10 2.3.2 液晶模块简介11 2.3.3 液晶显示部分与 STC89C51 单片机的接口13 2.4 按键电路的设计14 2.4.1 单片机检测按键的原理14 2.4.2 矩阵键盘的设计15 3. 系统软件设计.16 3.1 主程序的设计16 3.2 DS18B20 初始化程序.17 3.3 LCD 初始化程序的设计.19 3.4 继电器控制的程序20 4. 仿真结果及分析.26 4.1 系统仿真26 4.2 仿真分析27 5. 总结.28 基于单片机的温度控制系统 参考文献.错误!未定义书签。错误!未定义书签。 附 录.30 致谢.30 基于单片机的温度控制系统 1 1 绪 论 1.1 课题背景及意义 日常生活中温度控制在各行各业中都起着重要的作用,因此能够检测温度变 化的温度检测设备出现在人们的视线中。它能使人们能及时看到温度变化的第一 手资料,提示温度变化情况,协助人们及时调整,并有温度报警作用,让温度控 制更好的服务于整个社会和人们的生活。 21 世纪是电子技术飞速发展的时代,人类的生活发生了质的变化,特别是随 着大规模集成电路的出现微型计算机应运而生,让人类社会进入了一个新的时代。 虽然微机可以完成各种各样的工程控制,但是微机价格高,对于大多数的工业控 制来说,并不是最佳选择。于是单片机就出现在了人们的视野中。它是一个简化 的微机,将微机的中央处理器,存储单元,I/O 接口,定时器/计数器等集成在一 片芯片上。和微机比较,单片机价格低廉,适合应用在工业的控制场合以降低成 本。另外,单片机可靠性高,性能稳定。可在复杂的工业环境下运行。单片机依 靠其高性价比,在工业控制,工业生产,家用电器制造等方面得到了广泛的应用。 温度是表征物体冷热程度的物理量,工农业生产过程中温度是一个重要的参 数。温度测量在产品生产,工业设计,能源节约中起到了关键性的作用。随着科 学技术的进步和生产的需要,温度传感器不断更新丰富起来。 温度作为一个模拟量,如果采用合适的技术和元件,将模拟的温度量转化为 数字量虽说不难,但电路也很复杂,成本也很高。温度测量中测量温度是重点, 本设计中单片机温度测量同样如此。 1.2 课题研究的内容 本设计研究的主要课题是基于单片机的水温控制系统,介绍了对炉内温度的 显示、控制和报警,实现了温度的实时显示及控制。其中炉内温度控制中,采用 AT89C51 单片机、DS18B20、和 LCD 的硬件电路检测和显示实时水温,采用 DS18B20 与单片机相接再由硬件与软件电路组合来实现对加热电阻丝的控制和超出规定的 基于单片机的温度控制系统 2 上下限温度的报警。 1.3.温度控制器的选择 温度控制器选择基于 51 单片机的温度控制器,图 2-1 是基于 51 单片机的温 度控制器框图。该控制器由温度采集模块、控制模块、显示模块、报警模块以及 电源模块等组成。 基于单片机的温度控制器框图如图 2-1 所示。 图 1-1 基于单片机温度控制器框图 51 单片机是控制器的控制核心,因此单片机的选择,对所设计系统的实现以 及功能的扩展有着很大的影响。单片机种类很多,在众多 51 系列单片机中,较为 常用的是 ATMEL 公司的 AT89C51 和 AT89S52 单片机, AT89C51 片内 4KROM 是 Flash 工艺的,使用专用的编程器自己就可以随时对单片机进行电擦除和改写,片内有 128 字节的 RAM。而 AT89S52 含有在系统可编程的 Flash 存储器,片内有 8K 闪存, RAM 的容量也较 AT89C51 大,为 256 字节。显然这种单片机优点更多,开发时间也 大为缩短。 基于单片机的温度控制系统 3 2.2. 温度控制器的硬件电路设计温度控制器的硬件电路设计 2.1 温度传感器的选择 温度是表征物体冷热程度的物理量,它可以通过物体随温度变化的某些特性 (如电阻、电压变化等特性)来间接测量,利用这种物理特性制成的传感器称为 温度传感器。常用的温度传感器有热电偶、热敏电阻、热电阻、集成温度传感器 及数字式温度传感器等多种温度传感器。 2.1.1 数字温度传感器 典型的数字温度传感器如 DS18B20,该传感器主要特性如下: 1.数据线供电是寄生电源方式下的供电方式,电压适应的范围更宽,电压范 围:3.05.5V; 2.DS18B20在和微处理器的连接仅仅需一条总线即就可以实现DS18B20和微处 理器双向的通信,它的单线接口方式十分特殊; 3.DS18B20 可以支持多个点的组网功能, 多个 DS18B20 可并联的在唯一的总线 上,能够实现组网的多点测温; 4.转换的电路及全部传感器元件就像一只三极管集成在的集成电路内, DS18B20 在使用的时候不需要任何的外围元件; 5.在-10+85时精度为0.5,测温范围55+125; 6.可分辨温度依次为 0.5、0.25、0.125和 0.0625,相对应的可以编 程的分辨率是 912 位,可实现高精度测温; 7.12 位分辨率时最多在 750 毫秒内把温度值转换为数字,在 9 位分辨率时最 多在 93.75 毫秒内把温度转换为数字,速度更快; 8.直接输出数字温度信号的测量结果,可传送 CRC 校验码,同时以“单总线“ 串行方式传送给 CPU,有极强抗干扰和纠错能力; 基于单片机的温度控制系统 4 9.负压特性:接反电源的极性时,芯片不会因发热而烧毁,但不能正常工作。 2.1.2 热电阻温度传感器 热电阻的测量精度高,性能稳定,使用方便,测量范围宽,在高精度、低温测量 中占有重要的地位。热电阻传感器主要用于中低温度(-200+650或 850) 范围的温度测量。常用的工业标准化热电阻有铂热电阻和铜热电阻。铂电阻传感 器是利用金属铂(Pt)的电阻值随温度变化而变化的物理特性而制成的温度传感 器。以铂电阻作为测温元件进行温度测量的关键是要能准确地测量出铂电阻传感 器的电阻值。铂电阻具有适用范围广、测量范围大、稳定性高、重复性好、价格 低廉、使用方便等优点,成为目前工业和实验室中温度测量应用最广泛普遍的传 感元件之一,工业中应用较多的热电阻传感器如 Pt100。 2.1.3 方案选择 对比上述两种方案,虽然 Pt100 的测量温度范围比较大,但是由于其测温原 理是电阻值随着温度的改变而改变,需要设计非常优良的温度采集电路,其中应 包括测温部分,线性化部分,放大部分,A/D 转换部分,这就会使外围的电路更加 复杂。DS18B20 是数字式温度传感器,只需一根总线就可以与单片机通信,是外围 的电路大大简化,测量的精度更准确。因此本控制器的设计中,温度传感器拟选 择 DS18B20 作为温度采集传感器。 2.2 温度采集模块电路的设计 2.2.1 DS18B20 介绍 DS18B20 引脚图如图 2-1 所示。 基于单片机的温度控制系统 5 27.0 DQ 2 VCC 3 GND 1 U1 DS18B20 图 2-1 DS18B20 引脚图 DALLAS 最新的单线数字温度传感器 DS18B20 是一种新型“一线器件”,它的 体积更小、更适用于多种场合、而且适用电压更宽、也更经济。DALLAS 半导体公 司开发的数字化温度传感器 DS18B20 也是世界上第一片支持“一线总线”接口的 数字温度传感器。温度的测量范围为-55+125 摄氏度,能编程为 9 位12 位转 换精度,0.0625 摄氏度的测温分辨率,分辨率的设定参数及用户设定的报警温度 会存储在 EEPROM 中,掉电后依然能保存。用符号扩展的 16 位数字量方式串行的 输出被测温度;采用寄生电源方式产生,其工作的电源既可以远端引入;3 根或 2 根线上可并联多个 DS18B20,CPU 只需要一根端口线就能与诸多的 DS18B20 通信, 较少占用微处理器的端口,可以节省逻辑电路和大量的引线,因而用它来组成的 测温系统,具有线路简单,在一根通信线,可挂多个这样的数字温度计,非常的 方便。 2.2.2 温度传感器工作原理 DS18B20 的读写时序及测温原理与 DS1820 是相同的,得到的温度值的位数却 会因为分辨率的不同而不同,而且进行温度转换时的延时时间从 2s 减为 750ms。 DS18B20 的测温原理:低温度系数的晶振,它是用以产生固定频率的脉冲信号给计 数器 1,它的振荡频率受到温度的影响非常的小。高温度系数的晶振,则它的振荡 率会随着温度的变化而明显的改变,产生的信号就作为计数器 2 的脉冲输入。温 度寄存器以及计数器 1 被预先设置在55所对应的一个基数值。对从低温度系 数晶振产生的脉冲,将会通过计数器 1 来进行减法的计数,当计数器 1 预置的值 减到了 0 的时候,计数器 1 的预置值将重新装入,这时候温度寄存器的值就加 1。 基于单片机的温度控制系统 6 计数器 1 也就重新开始进行计数,如此循环,停止温度寄存器值的累加时计数器 2 的计数值到 0,所测温度就为此时温度寄存器中的数值。 DS18B20 功能特点: 1.采用了总线技术,与单片机的通信只需要一根 I/O 线,在一根线上可以挂 接多个的 DS18B20。 2.每只 DS18B20 它是根据序列号来访问相应的器件,具有一个独有的,不可 更改的 64 位的序列号。 3.低压供电,电源范围为 3-5V,可本地供电,也能直接通过数据线提供电源 (即寄生电源 2 方式)。 4.在-10C 至+85C 范围内的可以达到精度为0.5 摄氏度,测温的范围为 55+125 摄氏度。 5.温度超过了的预定值的器件可以用报警搜索命令识别以及寻址。 6.用户可以自己设定报警上下限温度。 7.它转换 12 位的温度的最大时间为 750 毫秒,可编辑的数据位 9-12 位。 8.DS18B20 的分辨率由用户通过 EEPROM 设置为 9-12 位。 9.DS18B20 可以将检测到的温度值直接转化为数字量,并且通过串行通信方 式。 DS18B20 有 4 个主要数据部件: 1. 光刻 ROM 中的 64 位序列号在出厂之前就已经被光刻好了,它可看作该 DS18B20 的地址的序列码。64 位光刻 ROM 的排列为:开始的 8 位 (28H)是产品 类型的标号,接着 48 位是该 DS18B20 的自身序列号,最后的 8 位是前面的 56 位 循环冗余校验码(CRC=X8+X5+X4+1)。光刻 ROM 的作用是让每一个 DS18B20 都不 相同,这样的话就能够一根总线上可挂接多个的 DS18B20。 2. DS18B20 温度传感器能实现对温度的测量,以 12 位的转化为例:用 16 位 的符号扩展二进制补码读数的形式提供,以 0.0625/LSB 的形式表达,其中 S 是 基于单片机的温度控制系统 7 符号位。 3. DS18B20 温度传感器它的内部存储器包括一个高速暂存 RAM 以及一个非易 失性的、可电擦除的 EEPRAM,后者存放高温度和低温度的触发器 TH、TL 以及结构 寄存器。 4.配置寄存器。 DS18B20 内部结构及功能: DS18B20 内部的结构如图 3-7 所示。主要包括以下部分:电源,温度传感器, 64 位的 ROM 单总线接口,用于存放中间数据的高速暂存器 RAM,用于存储用户设 定温度上下限的 TH 和 TL 触发器,控制逻辑,8 为循环冗余校验码(CRC)发生器 等 7 部分。DS18B20 内部结构如图 2-2 所示。 图 2-2 DS18B20 内部结构 2.2.3 DS18B20 工作原理介绍 温度的读取: DS18B20 出厂时配置为 12 位,读取温度时共读取 16 位,所以要把后 11 位的 2 进制转化为 10 进制后再乘以 0.0625 就是所测的温度,还需判断正负。前 5 个的 数字为符号位,若前 5 位为 1 时,读取的温度就为负数;若前 5 位为 0 时,读取 的温度就为正数。 DS18B20 写操作: 基于单片机的温度控制系统 8 1.数据线首先置低电平“0”。 2.延时的时间为 15ms。 3.再按从低位到高位的顺序发送字节(一次只能发送一位)。 4.延时的时间为 45ms。 5.把数据线拉到高电平。 6.重复上(1)到(6)的操作,一直到所有的字节全部都发送完为止。 7.最后把数据线拉高。 DS18B20 读操作: 1.把数据线拉高“1”。 2.延时 2ms。 3.数据线拉低“0”。 4.延时 15ms。 5.将据线拉高“1”。 6.延时 15ms。 7.读数据线的状态得到了 1 个状态位,并且进行数据处理。 8.延时 30ms。 2.2.4 DS18B20 使用中的注意事项 DS18B20 虽具有连接方便、测温系统简单、占用口线少、测温的精度高等优 点,然而在实际的应用中也应该注意以下几方面问题: 1.DS18B20 从测温结束直到把温度值转换成为了数字量,需要一些转换时间, 这必须保证,不然会出现转换错误现象,从而使温度输出总是显示为 85 度。 2.在实际的使用中,应该使电源电压保持在 5V 左右的大小,若是电源的电压 基于单片机的温度控制系统 9 过低了,就会降低所测得的温度精度。 3.较小的硬件开销就需要比较复杂的软件来进行补偿,因为 DS1820 和微处理 器间数据是串行传送的,所以,对 DS1820 进行读写编程,就必须严格保证读写时 序,否则就不能读取测得的温度值。 4.DS18B20 的有关资料由于未提及单总线上所挂 DS18B20 数量,就使人误认 为能够挂任意多个的 DS18B20,但在实际的应用中并不是这样的,如果在单总线上 所挂载的 DS18B20 超过了 8 个,就要解决微处理器的总线驱动问题,在进行多点 测温系统设计时必须注意这一点。 5.在 DS18B20 测温程序的设计中,向 DS18B20 发出了温度转换命令后,程序 总是要等待 DS18B20 的返回信号,若某个 DS18B20 接触不好或这断线,当程序读 该 DS18B20 时, 将会没有返回的信号, 程序就进入了死循环, 这一点在进行 DS18B20 硬件连接和软件设计的时候也要给予重视。 2.2.5 DS18B20 和 AT89C51 单片机连接电路 DS18B20 可以有两种供电的方式,一种用的是电源供电的方式,此时 DS18B20 的 1 脚接地,3 脚接电源,2 脚是信号线。另一种是寄生电源供电的一种方式。如 图 2-3 所示单片机端口接的是单总线,为了在 DS18B20 有效的时钟周期之内提供 的电流足够,对总线的上拉可用一个 MOSFET 管来完成。 当 DS18B20 处于温度 A/D 转换操作和写存储器操作时,必须有强的上拉在总 线上,上拉的最大开启时间为 10 微秒。采用寄生电源供电的供电方式时 VDD 端接 地,单线制由于只有一根线,因此发送接口必须是三态的。 DS18B20 与单片机的接口电路如图 2-3 所示。 基于单片机的温度控制系统 10 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 27.0 DQ 2 VCC 3 GND 1 U2 DS18B20 R14.7k 图 2-3 DS18B20 与单片机的接口电路 2.3 显示模块设计 2.3.1 LCD 液晶显示器简介 显示器是人和机器交流信息的重要界面, 早期的是以显像管(CRT/Cathode Ray Tube)显示器为主,但是随着技术的不断发展,各种各样的显示技术不断诞生,而 液晶(LCD)显示器由于具有耗电量较低、短小轻薄、无辐射的危险,平面直角显示, 和稳定不闪烁的影像等优势,更是在近年来不断下跌的价格吸引下,逐渐取代了 主流的 CRT 之地位。 液晶是一种既有液体的流动性还具光学特性的有机化合物,它的透明程度和 呈现颜色受外加电场影响,利用这个特点就可以做成字符显示器。 液晶显示器(LCD)英文为 Liquid Crystal Display,它是一种采用液晶控制透 光度的技术来实现色彩的显示器。和 CRT 显示器比,LCD 的优点是十分明显的。因 为通过控制是否透光从而控制亮和暗,当色彩不变化时,液晶也就保持不变,这 样就不用考虑刷新率的问题。 显示接口用来显示系统的状态,命令和采集的电压数据。本系统的显示部分 基于单片机的温度控制系统 11 用的是 LCD 液晶模块,采用的是一个 161 字符型液晶的显示模块。 点阵图形式的液晶显示器是由 M 行N 列个显示单元组成的, 若 LCD 显示屏 有 64 行,每行有 128 列,每 8 列对应 1 个字节的 8 个位,则每行有 16 字节, 共有 168=128 个点所组成, 屏上 6416 个显示单元和显示 RAM 区 1024 个的 字节是相对应的,屏上相应位置的亮暗和每一个字节的内容是对应的。一个字符 是由 68 或者 88 一个点阵所组成的, 所以要找到和屏上某几个位置相对应显 示 RAM 区的 8 个字节,而且应该使每一个字节不的同位为1状态,其它的则 为0,为1的点亮,为0的点为暗,这样就组成了某一个字符。但是对 内部自带字符发生器的控制器来说,字符显示就会比较简单了,可以使控制器在 文本方式下工作,根据在每行的列数找出显示 RAM 对应的地址和 LCD 开始显示的 行列号,设立光标,在此送入该字符的对应代码就可以了。 2.3.2 液晶模块简介 LM016L 结构及功能: LM016L 液晶模块采用了 HD44780 的控制器,hd44780 是具有简单而功能较强 的指令集,能实现字符移动,闪烁等一些功能,LM016L 与单片机 MCU 通讯可以采 用 8 位或者 4 位并行传输的两种方式,hd44780 控制器是由两个 8 位的寄存器,地 址计数器 RAM(AC),和字符发生器 ROMA(CGOROM)字符发生器 RAM(CGRAM),显 示数 RAM(DDRAM),及指令寄存器(IR)以及数据寄存器(DR)忙标志(BF)。 寄存指令码用 IR, 只可以写入不可以读出, DR 用以寄存数据, 数据是暂存从 DDRAM 和 CGRAM 读出,或内部操作自动的写入 DDRAM 和 CGRAM 的数据,当 BF 为 1 时,液 晶模块就会处于内部模式,不响应接受数据和外部操作指令,DDTAM 用以存储显示 字符,能够存储总共 80 个字符码,CGROM 是由 5*10 点阵字符 32 种和 8 位字符码 生成的 5*7 点阵字符 160 种.CGRAM 是专门给用户编写特殊字符而留的,容量只有 64 个字节,可以自定义 4 个 5*10 点阵字符或 8 个 5*7 点阵字符,AC 可存储 CGRAM 和 DDRAM 的地址,若是地址码随指令写入了 IR 的话,那么 IR 就自动把地址码装入 AC,与此同时,选择 DDRAM 或者 CGRAM5。LM016L 晶模块的引脚图如图 2-4 所示。 基于单片机的温度控制系统 12 D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 LM016L 图 2-4 1601 引脚图 LM016L 引脚介绍: Vss(1 脚):一般的会接地。 Vdd(2 脚):一般接电源。 Vee(3 脚):液晶显示器的对比度调整端,接电源时它的对比度是最弱的, 接地时它的对比度却是最高的(如果对比度过高则会产生“鬼影”,使用时可通 过一个 10K 电位器用来调整对比度)。 RS(4 脚):RS 是选择寄存器的引脚,低电平 0 时选择的是指令寄存器、高 电平 1 时就会选择数据寄存器。 R/W(5 脚):R/W 是读写的信号线,低电平(0)时则进行的是写操作,高电平 (1)时进行的是读操作。 E(6 脚):E(或 EN)端是使能(enable)端,也即下降沿使能。 DB0(7 脚):底 4 位的三态、 双向数据总线的 0 位(最低位)。 DB1(8 脚):底 4 位的三态、 双向数据总线 的 1 位。 DB2(9 脚):底 4 位的三态、 双向数据总线的 2 位。 DB3(10 脚):底 4 位的三态、 双向数据总线的 3 位。 基于单片机的温度控制系统 13 DB4(11 脚):高 4 位的三态、 双向数据总线 的 4 位。 DB5(12 脚):高 4 位的三态、 双向数据总线的 5 位。 DB6(13 脚):高 4 位的三态、 双向数据总线的 6 位。 DB7(14 脚):高 4 位的三态、 双向数据总线 的 7 位(最高位)(也是 busy flag)。 寄存器选择控制如表 2-5。 表 2-5 寄存器选择控制 RSR/W操作说明 00写入指令寄存器(清除屏等) 01读 busy flag(DB7),及读取位址计数器(DB0DB6)值 10写入数据寄存器(显示各字型等) 11从数据寄存器中读取数据 2.3.3 液晶显示部分与 STC89C51 单片机的接口 如图 3-5 所示。用 89C51 的 P0 口作数据线,用 P1.2、P1.1、P1.0 分别作 LCD 的 E、R/W、RS。其中,E 是下降沿触发片选信号,R/W 是读写信号,RS 是寄存器 选择信号,本模块有如下设计要点:显示模块的初始化:首先要清屏,然后再设 置 8 位接口数据位,显示的行数为 1 行,字型的为 57 点阵,然后再设置成整体 显示,取消光标以及字体的闪烁,最后再设置成正向增量的方式且为不移位。送字 符给 LCD 显示缓冲区,程序采用的是一个显示的字符,2 个字符数组,另一则显示 电压数据, 相应数组中被送入要显示的字符或者数据, 完成之后再统一的显示.LCD 显示的缓冲区送人一个要显示的字符或者数据,通过软件延时 2.5 毫秒后,再作个 数是否够显示的判断,若不足够则地址加一,取下一个要显示的字符或者数据。 液晶与 80C51 单片机连接电路如图 2-6 所示。 基于单片机的温度控制系统 14 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 LM016L R1 10k R2 10k R3 10k R4 10k R5 10k R6 10k R7 10k R8 10k 图 2-6 液晶与 89C51 单片机的连接电路 2.4 按键电路的设计 2.4.1 单片机检测按键的原理 单片机的 I/O 口即可以作为输出也可以作为输入使用,当该检测按键使用的 是它的输入功能,我们把按键的其中一端接地,另一段与单片机的 I/O 口相连, 开始时先给 I/O 口赋一个高电平,然后让单片机一直不断循环检测该 I/O 口是已 经否变为了低电平,若是按键闭合,就相当于此 I/O 口通过按键接地了,变成低 电平,程序如果检测到 I/O 口变为了低电平就说明该按键已被按下,然后就执行 相应的指令和程序。 基于单片机的温度控制系统 15 2.4.2 矩阵键盘的设计 键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常 用的输入设备。我们可以通过键盘输入数据或命令来实现简单的人机通信。通过 4X4 的矩阵键盘来可以对温度方便的进行设定, 并通过液晶显示器实时显示温度设 置的情况。44 的矩阵式键盘由 4 根列线和 4 根行线交叉构成,行列的交叉点 上就是按键,这样就有 16 个按键。其中交叉点的行线和列线不连接,当按键按下, 位于交叉点处的列线和行线导通。行线由上拉电阻连接 VCC。若是无按键按下,行 线为高电平;若是有键按下,行、列线在交点导通,此时,行线电平状态是与此 行线相连列线的电平状态关联。这是判断按键是否按下的关键环节。但是,矩阵 键盘的每一条行线均和 4 条列线相连接,位于交点处的按键是否按下均会影响该 键所在列线和行线的电平状态,各个按键之间将会相互的影响,按键分析时必须 把列线、行线的状态信号配合处理,才能确定闭合键的位置。在本设计中,按键 电路原理图如图 2-7 所示。 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 图 2-7 按键电路原理图 基于单片机的温度控制系统 16 3.3. 系统软件设计系统软件设计 3.1 主程序的设计 整个设计系统功能由软件配合硬件电路来实现,若硬件已经定型,软件的功 能也就基本上确定了。从软件的不同功能可为两大类:一类是主程序(监控软件) , 是整个控制系统的核心,专门用于协调操作者和各执行模块的关系。二类是子程 序(执行软件),它用来实现各种实质性的功能,比如测量、计算、显示、通讯 等。每一个小的执行软件就是一个小功能执行的模块。在这里一一的列出各执行 模块,并为每一个执行模块进行接口和功能的定义。规划好各个执行模块以后, 就可以进行监控程序的规划了。首先应根据系统的总体功能选择一种最合适的监 控程序的结构,然后再根据实时性的要求,合理地安排监控软件和各执行模块之 间地调度关系。主程序流程图如图 3-1 所示。 图3-1 主程序流程图 主程序的 C 语言程序如下: /* 主程序 基于单片机的温度控制系统 17 */ main() set();/开始设置 while(1)/设置好后进入死循环 lcd_init();/ 初始化 LCD key();/键盘扫描 error();/检查是否出错 readtemp();/读取温度值 lcd();/显示子函数 relay();/控制继电器 delay(500);/延时 3.2 DS18B20 初始化程序 DS18B20 初始化步骤如下: 1、高电平“1”状态必须先给数据线。 2、然后延时(该时间的要求不严格,但尽可能短一点)。 3、把数据线拉低到电平“0”状态。 4、再延时 750 微秒(该时间的范围为 480-960ms)。 5、把数据线拉高到电平“1”。 基于单片机的温度控制系统 18 6、延时等待(初始化已成功,在 15-60ms 时间之内 DS18B20 返回一个低电 平“0”。根据该状态来确定它是否存在,但不可无限进行等待,否则程序会进入 死循环状态,故要有超时控制的操作)。 7、CPU 如果读到了数据线上“0”状态的低电平,还要再做延时,延时时间由 发出高电平开始算起(第(5)步的时间开始算),最少需 480ms。 8、再次把数据线拉高到高电平“1”后就结束。 DS18B20 初始化的 C 语言程序如下: /* DS18B20 初始化子程序 */ void Init_DS18B20() unsigned char x=0;/定义字符型局域变量 DS = 1;/总线拉高 tmpDelay(8);/延时,准备与 DS18B20 通讯 DS = 0;/总线拉低 tmpDelay(80);/延时,给 DS18B20 复位信号 DS = 1;/总线拉高 tmpDelay(14);/延时,等待 DS18B20 响应 x=DS;/读 DS18B20 响应状态 tmpDelay(20);/延时 基于单片机的温度控制系统 19 3.3 LCD 初始化程序的设计 LM016L 的读操作时序如图 3-2 所示。 LM016L 的写操作时序如图 3-3 所示。 LM016L 的初始化的 C 语言程序如下: /* LCD 初始化子程序 */ lcd_init() 基于单片机的温度控制系统 20 lcd_wcmd(0x38);/设置 8 位字符显示,5*10 点阵字符 delay(1);/延时 lcd_wcmd(0x0c);/开显示、光标和闪烁关闭 delay(1);/延时 lcd_wcmd(0x06);/读、写操作后,AC 增一、画面不动 delay(1);/延时 lcd_wcmd(0x01);/清除 LCD 的显示内容 delay(1);/延时 3.4 继电器控制的程序 当测量的环境温度低于设定温度时,启动加热继电器,使系统自动加热,当测 量的温度高于设定的温度时,启动降温继电器,使系统自动降温,从而使系统的 温度维持在设定的温度。 系统继电器控制的 C 语言程序如下: /* 继电器控制子程序 */ void relay() if(an=0)flagn=0;/实际温度为 0 度,实际温度标志位置 0 if(as=0)flags=0;/设置温度为 0 度,设置温度标志位置 0 if(flagn=0)/实际温度标志位为 0 时循环 基于单片机的温度控制系统 21 if(flags=0)/设置温度标志位为 0 时循环 if(anas)/若实际温度大于设置温度循环 down=0;/降温继电器闭合 up=1;/升温继电器打开 if(flags=1)/设置温度标志位为 1 时循环 up=1;/升温继电器打开 基于单片机的温度控制系统 22 down=0;/降温继电器闭合 if(flagn=1)/实际温度标志位为 1 时循环 if(flags=1)/设置温度标志位为 1 时循环 if(anas)/若实际温度小于设置温度循环 down=1;/降温继电器打开 up=0;/升温继电器闭合 基于单片机的温度控制系统 23 if(flags=0)/设置温度标志位为 0 时循环 up=0;/升温继电器闭合 down=1;/降温继电器打开 3.5 按键程序的设计 由于实际波形与理想波形之间有区别, 实际波形在按下和释放的瞬间会有抖动 的现象,按键的抖动时间和机械特性的长短有关,一般为 5-10 毫秒。我们通常 手动按下按键, 然后就立即释放掉按键, 这个过程稳定闭合的时间超过了 20 毫秒。 因此,单片机检测按键是否按下必须要加上去掉抖动的操作,可以通过去抖动的 电路去掉抖动,也可以通过专用的去抖动芯片去抖动,但我们常用的是软件延时, 能很容易解决抖动问题,而没有必要再添加多余的硬件电路。按键检测流程图如 图 3-4 所示。 基于单片机的温度控制系统 24 图 3-4 按键检测流程图 按键扫描的 C 语言程序如下: /* 按键扫描子程序 */ uchar keyscan() P2=0xf0;/行扫描为低电平,列线为高电平 LJC=P2/第一次读列检测状态 if(LJC!=0xf0)/若有键盘被按下 delay(2);/键盘消抖 LJC=P2/第二次读取列检测状态 if(LJC!=0xf0)/若有闭合键,则逐行扫描 基于单片机的温度控制系统 25 HSM=0xfe;/扫描码为 0xfe、0xfd、0xfb、0xf7 while(HSM/输出行扫描码 LJC=P2/读列检测: 0xe0、0xd0、0xb0、0x70 if(LJC!=0xf0)/如果有按键闭合 keyvalue=(HSM)+(LJC|0x0f);/计算键盘值 P2=0xf0;/测试按键是否松开 while(P2!=0xf0);/进入死循环直至按键松开 return(keyvalue);/返回键值 else HSM=(HSM1)|0x01;/行扫描左移 1 位 P2=0xf0;/测试按键是否松开 while(P2!=0xf0);/进入死循环直至按键松开 return(0x00);/没有按键按下则返回 0x00 基于单片机的温度控制系统 26 4.4. 仿真结果及分析仿真结果及分析 4.1 系统仿真 1 仿真实验一: 设定的温度为-21.00 摄氏度, 实时检测的温度为 0.00 摄氏度, 启动降温继电器。仿真图如图 4-1 所示。 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 LM016L 0.0 DQ 2 VCC 3 GND 1 U2 DS18B20 R1 4.7k R2 10k R3 10k R4 10k R5 10k R6 10k R7 10k R8 10k R9 10k RL1 G2R-14-AC120 RL2 G2R-14-AC120 Q1 PNP Q2 PNP D1 LED-BIBY D2 LED-BIBY R10 470 R11 470 D3 LED-BIBY D4 LED-BIBY D5 LED-BIBY D6 LED-BIBY R12 470 R13 470 R14 470 R15 470 D7 DIODE D8 DIODE R16 3kR173k 图 4-1 仿真图 2. 仿真实验二: 设定的温度为 22.00 摄氏度,实时检测的温度为 0.00 摄氏度, 启动升温继电器。仿真图如图 4-2 所示。 基于单片机的温度控制系统 27 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论