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

下载本文档

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

文档简介

1、基于单片机的温度控制系统 南 阳 理 工 学 院 本 科 毕 业 设 计(论文) 基于单片机的温度控制系统设计 Based on Single Chip Microcomputer Temperature Control System Design矚慫润厲钐瘗睞枥庑赖。 学院 (系): 计算机与信息工程学院 专 业: 计算机科学与技术 学生 姓 名: 李瑞卿 学 号: 1306734005 指 导 教 师(职称):鲁庆宾(副教授) 评 阅 教 师: 完 成 日 期:2015年 6月 南阳理工学院 Nanyang Institute of Technology 基于单片机的温度控制系统 基于单片

2、机的温度控制系统设计 通信工程专业 李瑞卿 【摘 要】温度是工业控制中主要的被控参数之一,在日常生活中也经常要用到温 度的检测及控制。 本文介绍了一种以 AT89C51单片机为核心的控制器, 以 DS18B20 为温度传感器的温度控制器。首先,通过对元器件的选择,设计控制器的硬件电 路;然后,设计相关应用程序;最后,通过仿真,对整个系统进行调试、分析。 最终实现温度采集、显示、控制等功能。仿真结果表明,所设计的控制器能够完 成所需功能, 并且具有测量精准高、 实时性好、 使用方便等特点。 聞創沟燴鐺險爱氇谴净。 【关键词】 :温度控制; AT89C51;温度显示; DS18B20 Based

3、on Single Chip Microcomputer Temperature Control System Design残骛楼諍锩瀨濟溆塹籟。 Communications Engineering Major Li 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 AT89C

4、51 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

5、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 displa

6、y; DS18B20彈贸摄尔霁毙 攬砖卤庑。 基于单片机的温度控制系统 目录 1 绪 论 0 1.1 课题背景及意义 0 1.2 课题研究的内容 0 1.3. 温度控制器的选择 1 2. 温度控制器的硬件电路设计 2 2.1 温度传感器的选择 2 2.1.1 数字温度传感器 2 2.1.2 热电阻温度传感器 3 2.1.3 方案选择 3 2.2 温度采集模块电路的设计 3 2.2.1 DS18B20 介绍 3 2.2.2 温度传感器工作原理 4 2.2.3 DS18B20 工作原理介绍 6 2.2.4 DS18B20 使用中的注意事项 7 2.2.5 DS18B20 和 AT89C51单片机连

7、接电路 8 謀荞抟箧飆鐸怼类蒋薔。 2.3 显示模块设计 9 2.3.1 LCD 液晶显示器简介 9 2.3.2 液晶模块简介 10 2.3.3 液晶显示部分与 STC89C51单片机的接口 12 厦礴恳蹒骈時盡继價骚。 2.4 按键电路的设计 13 2.4.1 单片机检测按键的原理 13 2.4.2 矩阵键盘的设计 14 3. 系统软件设计 15 3.1 主程序的设计 15 3.2 DS18B20 初始化程序 17 3.3 LCD 初始化程序的设计 18 3.4 继电器控制的程序 20 4. 仿真结果及分析 26 4.1 系统仿真 26 4.2 仿真分析 27 5. 总结 28 基于单片机的

8、温度控制系统 参考文献 错误!未定义书签。 附 录 30 致谢 30 基于单片机的温度控制系统 1 绪论 1.1 课题背景及意义 日常生活中温度控制在各行各业中都起着重要的作用,因此能够检测温度变 化的温度检测设备出现在人们的视线中。它能使人们能及时看到温度变化的第一 手资料,提示温度变化情况,协助人们及时调整,并有温度报警作用,让温度控 制更好的服务于整个社会和人们的生活。 茕桢广鳓鯡选块网羈泪。 21 世纪是电子技术飞速发展的时代,人类的生活发生了质的变化,特别是随 着大规模集成电路的出现微型计算机应运而生,让人类社会进入了一个新的时代。 虽然微机可以完成各种各样的工程控制,但是微机价格高

9、,对于大多数的工业控 制来说,并不是最佳选择。于是单片机就出现在了人们的视野中。它是一个简化 的微机,将微机的中央处理器,存储单元, I/O 接口,定时器 / 计数器等集成在一 片芯片上。和微机比较,单片机价格低廉,适合应用在工业的控制场合以降低成 本。另外,单片机可靠性高,性能稳定。可在复杂的工业环境下运行。单片机依 靠其高性价比,在工业控制,工业生产,家用电器制造等方面得到了广泛的应用。 鹅娅尽損鹌惨歷茏鴛賴。 温度是表征物体冷热程度的物理量,工农业生产过程中温度是一个重要的参 数。温度测量在产品生产,工业设计,能源节约中起到了关键性的作用。随着科 学技术的进步和生产的需要,温度传感器不断

10、更新丰富起来。 籟丛妈羥为贍偾蛏练淨。 温度作为一个模拟量,如果采用合适的技术和元件,将模拟的温度量转化为 数字量虽说不难,但电路也很复杂,成本也很高。温度测量中测量温度是重点, 本设计中单片机温度测量同样如此。 預頌圣鉉儐歲龈讶骅籴。 1.2 课题研究的内容 本设计研究的主要课题是基于单片机的水温控制系统,介绍了对炉内温度的 显示、控制和报警,实现了温度的实时显示及控制。其中炉内温度控制中,采用 AT89C51单片机、 DS18B20、和 LCD的硬件电路检测和显示实时水温, 采用 DS18B20 基于单片机的温度控制系统 与单片机相接再由硬件与软件电路组合来实现对加热电阻丝的控制和超出规定

11、的 上下限温度的报警。 渗釤呛俨匀谔鱉调硯錦。 1.3. 温度控制器的选择 温度控制器选择基于 51 单片机的温度控制器,图 2-1 是基于 51 单片机的温 度控制器框图。该控制器由温度采集模块、控制模块、显示模块、报警模块以及 电源模块等组成。 铙誅卧泻噦圣骋贶頂廡。 基于单片机的温度控制器框图如图 2-1 所示。 图 1-1 基于单片机温度控制器框图 51 单片机是控制器的控制核心,因此单片机的选择,对所设计系统的实现以 及功能的扩展有着很大的影响。单片机种类很多,在众多51 系列单片机中,较为 常用的是 ATMEL公 司的 AT89C51和 AT89S52单片机,AT89C51片内 4

12、KROM是 Flash 工艺的,使用专用的编程器自己就可以随时对单片机进行电擦除和改写,片内有 128 字节的 RAM。而 AT89S52含有在系统可编程的 Flash 存储器,片内有 8K闪存, RAM的容量也较 AT89C51大,为 256 字节。显然这种单片机优点更多,开发时间也 大为缩短 。 擁締凤袜备訊顎轮烂蔷。 基于单片机的温度控制系统 2. 温度控制器的硬件电路设计 2.1 温度传感器的选择 温度是表征物体冷热程度的物理量 , 它可以通过物体随温度变化的某些特性 (如电阻、电压变化等特性)来间接测量,利用这种物理特性制成的传感器称为 温度传感器。常用的温度传感器有热电偶、热敏电阻

13、、热电阻、集成温度传感器 及数字式温度传感器等多种温度传感器。 贓熱俣阃歲匱阊邺镓騷。 2.1.1 数字温度传感器 典型的数字温度传感器如 DS18B20,该传感器主要特性如下: 1. 数据线供电是寄生电源方式下的供电方式,电压适应的范围更宽,电压范 围:3.0 5.5V; 2. DS18B20在和微处理器的连接仅仅需一条总线即就可以实现 DS18B20和微处 理器双向的通信,它的单线接口方式十分特殊; 坛摶乡囂忏蒌鍥铃氈淚。 3. DS18B20可以支持多个点的组网功能, 多个 DS18B20可并联的在唯一的总线 上,能够实现组网的多点测温; 蜡變黲癟報伥铉锚鈰赘。 4. 转换的电路及全部传

14、感器元件就像一只三极管集成在的集成电路内, 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校验码,同时以 单总线 串行方式传送

15、给 CPU,有极强抗干扰和纠错能力; 猫虿驢绘燈鮒诛髅貺庑。 基于单片机的温度控制系统 9. 负压特性:接反电源的极性时,芯片不会因发热而烧毁,但不能正常工作。 2.1.2 热电阻温度传感器 热电阻的测量精度高 , 性能稳定, 使用方便 ,测量范围宽 ,在高精度、低温测量 中占有重要的地位。热电阻传感器主要用于中低温度 (-200 +650或 850) 范围的温度测量。常用的工业标准化热电阻有铂热电阻和铜热电阻。铂电阻传感 器是利用金属铂 (Pt) 的电阻值随温度变化而变化的物理特性而制成的温度传感 器。以铂电阻作为测温元件进行温度测量的关键是要能准确地测量出铂电阻传感 器的电阻值。铂电阻具有

16、适用范围广、测量范围大、稳定性高、重复性好、价格 低廉、使用方便等优点,成为目前工业和实验室中温度测量应用最广泛普遍的传 感元件之一,工业中应用较多的热电阻传感器如 Pt100。 锹籁饗迳琐筆襖鸥娅薔。 2.1.3 方案选择 对比上述两种方案,虽然 Pt100 的测量温度范围比较大,但是由于其测温原 理是电阻值随着温度的改变而改变,需要设计非常优良的温度采集电路,其中应 包括测温部分,线性化部分,放大部分, A/D 转换部分,这就会使外围的电路更加 复杂。 DS18B20是数字式温度传感器,只需一根总线就可以与单片机通信,是外围 的电路大大简化,测量的精度更准确。因此本控制器的设计中,温度传感

17、器拟选 择 DS18B20作为温度采集传感器。 構氽頑黉碩饨荠龈话骛。 2.2 温度采集模块电路的设计 2.2.1 DS18B20 介绍 DS18B20引脚图如图 2-1 所示 基于单片机的温度控制系统 U1 DS18B20 图 2-1 DS18B20 引脚图 DALLAS最 新的单线数字温度传感器 DS18B20是一种新型“一线器件”,它的 体积更小、更适用于多种场合、而且适用电压更宽、也更经济。 DALLAS 半导体公 司开发的数字化温度传感器 DS18B20也是世界上第一片支持“一线总线”接口的 数字温度传感器。温度的测量范围为 -55 +125 摄氏度,能编程为 9 位12 位转 换精

18、度, 0.0625 摄氏度的测温分辨率,分辨率的设定参数及用户设定的报警温度 会存储在 EEPROM中 ,掉电后依然能保存。用符号扩展的 16 位数字量方式串行的 输出被测温度;采用寄生电源方式产生,其工作的电源既可以远端引入; 3 根或 2 根线上可并联多个 DS18B20,CPU只需要一根端口线就能与诸多的 DS18B20 通信, 较少占用微处理器的端口,可以节省逻辑电路和大量的引线,因而用它来组成的 测温系统,具有线路简单,在一根通信线,可挂多个这样的数字温度计,非常的 方便。 輒峄陽檉簖疖網儂號泶。 2.2.2 温度传感器工作原理 DS18B20的读写时序及测温原理与 DS1820是相

19、同的,得到的温度值的位数却 会因为分辨率的不同而不同,而且进行温度转换时的延时时间从 2s 减为 750ms。 DS18B20的测温原理:低温度系数的晶振, 它是用以产生固定频率的脉冲信号给计 数器 1,它的振荡频率受到温度的影响非常的小。高温度系数的晶振,则它的振荡 率会随着温度的变化而明显的改变,产生的信号就作为计数器 2 的脉冲输入。温 度寄存器以及计数器 1 被预先设置在 55所对应的一个基数值。对从低温度系 数晶振产生的脉冲,将会通过计数器 1 来进行减法的计数,当计数器 1 预置的值 减到了 0的时候,计数器 1 的预置值将重新装入,这时候温度寄存器的值就加 1。 基于单片机的温度

20、控制系统 计数器 1 也就重新开始进行计数, 如此循环,停止温度寄存器值的累加时计数器 2 的计数值到 0,所测温度就为此时温度寄存器中的数值。 尧侧閆繭絳闕绚勵蜆贅。 DS18B20功能特点: 1. 采用了总线技术,与单片机的通信只需要一根 I/O 线,在一根线上可以挂 接多个的 DS18B20。 2. 每只 DS18B20它是根据序列号来访问相应的器件,具有一个独有的,不可 更改的 64 位的序列号。 3. 低压供电,电源范围为 3-5V ,可本地供电,也能直接通过数据线提供电源 (即寄生电源 2 方式)。 4. 在-10C至+85C 范围内的可以达到精度为 0.5 摄氏度,测温的范围为

21、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 位 ( 2

22、8H)是产品 类型的标号,接着 48位是该 DS18B20的自身序列号,最后的 8 位是前面的 56位 循环冗余校验码( CRC=X8+X5+X4)+1。光刻 ROM的作用是让每一个 DS18B20都不 相同,这样的话就能够一根总线上可挂接多个的 DS18B20。凍鈹鋨劳臘锴痫婦胫籴。 2. DS18B20 温度传感器能实现对温度的测量,以 12 位的转化为例:用 16 位 的符号扩展二进制补码读数的形式提供,以 0.0625 /LSB 的形式表达,其中 S是 基于单片机的温度控制系统 符号位。 恥諤銪灭萦欢煬鞏鹜錦。 3. DS18B20 温度传感器它的内部存储器包括一个高速暂存 RAM以及

23、一个非易 失性的、可电擦除的 EEPRAM后, 者存放高温度和低温度的触发器 TH、TL以及结构 寄存器。 鯊腎鑰诎褳鉀沩懼統庫。 4. 配置寄存器。 DS18B20内部结构及功能: DS18B20内部的结构如图 3-7 所示。主要包括以下部分:电源,温度传感器, 64 位的 ROM单总线接口,用于存放中间数据的高速暂存器 RAM,用于存储用户设 定温度上下限的 TH和 TL触发器,控制逻辑, 8 为循环冗余校验码( CRC)发生器 等 7 部分。 DS18B20内部结构如图 2-2 所示。 硕癘鄴颃诌攆檸攜驤蔹。 VDD M 64位RA和单总线接 存储器和控制逻辑 高 温度传感器 速 高温触

24、发器 TH 缓 低温触 发器 TL 存 配置触发器 8位CRC发生器 图 2-2 DS18B20 内部结构 2.2.3 DS18B20 工作原理介绍 温度的读取: DS18B20出厂时配置为 12位,读取温度时共读取 16 位,所以要把后 11 位的 2 进制转化为 10 进制后再乘以 0.0625 就是所测的温度, 还需判断正负。 前 5 个的 数字为符号位,若前 5位为 1时,读取的温度就为负数;若前 5位为 0时,读取 的温度就为正数。 阌擻輳嬪諫迁择楨秘騖。 DS18B20写操作: 基于单片机的温度控制系统 1. 数据线首先置低电平“ 0”。 2. 延时的时间为 15ms。 3. 再按

25、从低位到高位的顺序发送字节(一次只能发送一位)。 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 虽具有连接方便、测温系统简单、占用口线少、测温的精度高等优 点,

26、然而在实际的应用中也应该注意以下几方面问题: 氬嚕躑竄贸恳彈瀘颔澩。 1. DS18B20 从测温结束直到把温度值转换成为了数字量,需要一些转换时间, 这必须保证,不然会出现转换错误现象,从而使温度输出总是显示为85 度。釷鹆資 贏車贖孙滅獅赘。 基于单片机的温度控制系统 2. 在实际的使用中, 应该使电源电压保持在 5V 左右的大小,若是电源的电压 过低了,就会降低所测得的温度精度。 怂阐譜鯪迳導嘯畫長凉。 3. 较小的硬件开销就需要比较复杂的软件来进行补偿,因为 DS1820和微处理 器间数据是串行传送的,所以,对 DS1820进行读写编程,就必须严格保证读写时 序,否则就不能读取测得的温

27、度值。 谚辞調担鈧谄动禪泻類。 4. DS18B20 的有关资料由于未提及单总线上所挂 DS18B20 数量,就使人误认 为能够挂任意多个的 DS18B20,但在实际的应用中并不是这样的, 如果在单总线上 所挂载的 DS18B20超过了 8 个,就要解决微处理器的总线驱动问题,在进行多点 测温系统设计时必须注意这一点。 嘰觐詿缧铴嗫偽純铪锩。 5. 在 DS18B20测温程序的设计中,向 DS18B20 发出了温度转换命令后,程序 总是要等待 DS18B20的返回信号,若某个 DS18B20 接触不好或这断线,当程序读 该 DS18B20 时,将会没有返回的信号, 程序就进入了死循环, 这一点

28、在进行 DS18B20 硬件连接和软件设计的时候也要给予重视。 熒绐譏钲鏌觶鷹緇機库。 2.2.5 DS18B20 和 AT89C51单片机连接电路 DS18B20可以有两种供电的方式,一种用的是电源供电的方式,此时DS18B20 的 1 脚接地, 3 脚接电源, 2 脚是信号线。另一种是寄生电源供电的一种方式。如 图 2-3 所示单片机端口接的是单总线,为了在 DS18B20有效的时钟周期之内提供 的电流足够,对总线的上拉可用一个 MOSFE管T 来完成。 鶼渍螻偉阅劍鲰腎邏蘞。 当 DS18B20处于温度 A/D 转换操作和写存储器操作时,必须有强的上拉在总 线上,上拉的最大开启时间为 1

29、0 微秒。采用寄生电源供电的供电方式时 VDD端接 地,单线制由于只有一根线,因此发送接口必须是三态的。 纣忧蔣氳頑莶驅藥悯骛。 DS18B20与单片机的接口电路如图 2-3 所示。 基于单片机的温度控制系统 U2 VCC 3 27.0 DQ 2 R1 4.7k 1 GND DS18B20 U1 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 XTAL2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 RST P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 PSEN P2.3/A11 ALE P2.4/A12 EA P2.5/A13

30、 P2.6/A14 P2.7/A15 P1.0 P3.0/RXD P1.1 P3.1/TXD P1.2 P3.2/INT0 P1.3 P3.3/INT1 P1.4 P3.4/T0 P1.5 P1.6 P3.5/T1 P3.6/WR P1.7 P3.7/RD 19 18 9 28 AT89C51 25 26 21 22 23 24 29 30 31 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 36 35 34 33 32 图 2-3 DS18B20 与单片机的接口电路 2.3 显示模块设计 2.3.1 LCD 液晶显示器简介 显示器是人和机器交流信息的重要界面

31、, 早期的是以显像管 (CRT/Cathode Ray Tube)显示器为主,但是随着技术的不断发展,各种各样的显示技术不断诞生,而 液晶(LCD)显示器由于具有耗电量较低、 短小轻薄、无辐射的危险, 平面直角显示, 和稳定不闪烁的影像等优势,更是在近年来不断下跌的价格吸引下,逐渐取代了 主流的 CRT之地位。 颖刍莖蛺饽亿顿裊赔泷。 液晶是一种既有液体的流动性还具光学特性的有机化合物,它的透明程度和 呈现颜色受外加电场影响, 利用这个特点就可以做成字符显示器。 濫驂膽閉驟羥闈詔寢賻。 液晶显示器 (LCD)英文为 Liquid Crystal Display ,它是一种采用液晶控制透 光度的

32、技术来实现色彩的显示器。和 CRT显示器比, LCD的优点是十分明显的。因 为通过控制是否透光从而控制亮和暗,当色彩不变化时,液晶也就保持不变,这 样就不用考虑刷新率的问题。 銚銻縵哜鳗鸿锓謎諏涼。 显示接口用来显示系统的状态,命令和采集的电压数据。本系统的显示部分 基于单片机的温度控制系统 用的是 LCD液晶模块,采用的是一个 16 1 字符型液晶的显示模块。 挤貼綬电麥结鈺 贖哓类。 点阵图形式的液晶显示器是由 M 行N 列个显示单元组成的, 若LCD 显示屏 有 64 行,每行有 128 列,每 8 列对应 1 个字节的 8 个位,则每行有 16 字节, 共有 168=128个点所组成,

33、屏上 6416 个显示单元和显示 RAM 区 1024 个的 字节是相对应的,屏上相应位置的亮暗和每一个字节的内容是对应的。一个字符 是由 68 或者 8 8一个点阵所组成的,所以要找到和屏上某几个位置相对应显 示 RAM 区的 8 个字节,而且应该使每一个字节不的同位为 1状态,其它的则 为 0,为 1的点亮,为 0的点为暗,这样就组成了某一个字符。但是对 内部自带字符发生器的控制器来说,字符显示就会比较简单了,可以使控制器在 文本方式下工作,根据在每行的列数找出显示 RAM对应的地址和 LCD开始显示的 行列号,设立光标,在此送入该字符的对应代码就可以了。 赔荊紳谘侖驟辽輩袜錈。 2.3.

34、2 液晶模块简介 LM016L结构及功能: LM016L液晶模块采用了 HD44780的控制器, hd44780 是具有简单而功能较强 的指令集,能实现字符移动,闪烁等一些功能, LM016L与单片机 MCU通讯可以采 用 8 位或者 4 位并行传输的两种方式, hd44780控制器是由两个 8 位的寄存器,地 址计数器 RAM(AC,) 和字符发生器 ROM(A CGORO)M字符发生器 RAM(CGRA)M,显 示数 RAM( DDRA)M,及指令寄存器( IR)以及数据寄存器( DR)忙标志( BF)。 寄存指令码用 IR,只可以写入不可以读出, DR用以寄存数据, 数据是暂存从 DDR

35、AM 和 CGRAM读出,或内部操作自动的写入 DDRAM和 CGRAM的数据,当 BF为 1时,液 晶模块就会处于内部模式, 不响应接受数据和外部操作指令, DDTAM用以存储显示 字符,能够存储总共 80个字符码, CGRO是M由5*10点阵字符 32种和8位字符码 生成的 5*7 点阵字符 160 种.CGRAM是专门给用户编写特殊字符而留的,容量只有 64个字节,可以自定义 4个5*10点阵字符或 8个5*7点阵字符, AC可存储 CGRAM 和 DDRAM的地址,若是地址码随指令写入了 IR 的话,那么 IR 就自动把地址码装入 AC,与此同时,选择 DDRAM或者CGRAM5。 L

36、M016L晶模块的引脚图如图 2-4 所示。 10 塤礙籟馐决穩賽釙冊庫。 基于单片机的温度控制系统 LCD1 LM016L 7 6 5 4 3 2 1 0 W S EE DD SS 456 789 图 2-4 1601 引脚图 LM016L引脚介绍: Vss(1 脚):一般的会接地。 Vdd(2 脚):一般接电源。 Vee(3 脚):液晶显示器的对比度调整端,接电源时它的对比度是最弱的, 接地时它的对比度却是最高的(如果对比度过高则会产生“鬼影”,使用时可通 过一个 10K 电位器用来调整对比度)。 裊樣祕廬廂颤谚鍘羋蔺。 RS( 4 脚): RS是选择寄存器的引脚,低电平 0 时选择的是指

37、令寄存器、高 电平 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 位 11 基于单片机的温度控制系统 DB3(10 脚):底 4 位的三态、 双向数据总线的 3 位 DB4(11 脚): 高 4 位的三态、 双向数据总线 的 4 位。 DB5(

38、12 脚): 高 4 位的三态、 双向数据总线的 5 位。 DB6(13 脚): 高 4 位的三态、 双向数据总线的 6 位。 DB7(14 脚): 高 4 位的三态、 双向数据总线 的 7 位(最高位) (也是 busy flag )。 寄存器选择控制如表 2-5 表 2-5 寄存器选择控制 RS R/W 操作说明 0 0 写入指令寄存器(清除屏等) 0 1 读 busy flag ( DB7),及读取位址计数器( DB0DB6)值 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器中读取数据 2.3.3 液晶显示部分与 STC89C51单片机的接口 如图 3-5 所示。用 89C

39、51的 P0 口作数据线,用 P1.2、P1.1、P1.0 分别作 LCD 的 E、R/W、RS。其中, E 是下降沿触发片选信号, R/W是读写信号, RS是寄存器 选择信号,本模块有如下设计要点:显示模块的初始化:首先要清屏,然后再设 置 8 位接口数据位,显示的行数为 1 行,字型的为 5 7 点阵,然后再设置成整体 显示,取消光标以及字体的闪烁 , 最后再设置成正向增量的方式且为不移位。送字 符给 LCD显示缓冲区,程序采用的是一个显示的字符, 2 个字符数组,另一则显示 电压数据,相应数组中被送入要显示的字符或者数据, 完成之后再统一的显示 .LCD 显示的缓冲区送人一个要显示的字符

40、或者数据,通过软件延时 2.5 毫秒后, 再作个 数是否够显示的判断,若不足够则地址加一,取下一个要显示的字符或者数据。 仓 嫗盤紲嘱珑詁鍬齊驁。 12 基于单片机的温度控制系统 液晶与 80C51单片机连接电路如图 2-6 所示 LCD1 LM016L 19 18 29 30 31 U1 XTAL1 XTAL2 RST PSEN ALE EA 7D 6D 5D 4D 3D 2D 1D 0D E WR SR EEV DDV SSV 3 2 4 7 8 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/

41、AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 123456 222222 28 10 11 12 13 14 15 16 17 41 7 31 21 9 8 AT89C51 图 2-6 液晶与 89C51 单片机的连接电路 2.4 按键电路的设计 2.4.1 单片机检测按键的原理 单片

42、机的 I/O 口即可以作为输出也可以作为输入使用,当该检测按键使用的 是它的输入功能,我们把按键的其中一端接地,另一段与单片机的 I/O 口相连, 开始时先给 I/O 口赋一个高电平,然后让单片机一直不断循环检测该 I/O 口是已 经否变为了低电平,若是按键闭合,就相当于此 I/O 口通过按键接地了,变成低 电平,程序如果检测到 I/O 口变为了低电平就说明该按键已被按下,然后就执行 相应的指令和程序。 绽萬璉轆娛閬蛏鬮绾瀧。 13 基于单片机的温度控制系统 2.4.2 矩阵键盘的设计 键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常 用的输入设备。我们可以通过键盘输入数据或

43、命令来实现简单的人机通信。通过 4X4 的矩阵键盘来可以对温度方便的进行设定, 并通过液晶显示器实时显示温度设 置的情况。 4 4 的矩阵式键盘由 4 根列线和 4 根行线交叉构成,行列的交叉点 上就是按键, 这样就有 16个按键。其中交叉点的行线和列线不连接, 当按键按下, 位于交叉点处的列线和行线导通。行线由上拉电阻连接 VCC。若是无按键按下,行 线为高电平;若是有键按下,行、列线在交点导通,此时,行线电平状态是与此 行线相连列线的电平状态关联。这是判断按键是否按下的关键环节。但是,矩阵 键盘的每一条行线均和 4 条列线相连接,位于交点处的按键是否按下均会影响该 键所在列线和行线的电平状

44、态,各个按键之间将会相互的影响,按键分析时必须 把列线、行线的状态信号配合处理,才能确定闭合键的位置。在本设计中,按键 电路原理图如图 2-7 所示。 骁顾燁鶚巯瀆蕪領鲡赙。 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 XTAL2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 RST P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 PSEN P2.3/A11 ALE P2.4/A12 EA P2.5/A13 P2.6/A14 P2.7/A15 P1.0 P3.0/RXD P1.1 P3.1/TXD P1.2 P3.2/INT0

45、 P1.3 P3.3/INT1 P1.4 P3.4/T0 P1.5 P3.5/T1 P1.6 P3.6/WR P1.7 P3.7/RD AT89C51 39 38 37 36 35 34 33 32 901 233 12345678 17 图 2-7 按键电路原理图 14 基于单片机的温度控制系统 3. 系统软件设计 3.1 主程序的设计 整个设计系统功能由软件配合硬件电路来实现,若硬件已经定型,软件的功 能也就基本上确定了。 从软件的不同功能可为两大类: 一类是主程序 (监控软件), 是整个控制系统的核心,专门用于协调操作者和各执行模块的关系。二类是子程 序(执行软件),它用来实现各种实质性

46、的功能,比如测量、计算、显示、通讯 等。每一个小的执行软件就是一个小功能执行的模块。在这里一一的列出各执行 模块,并为每一个执行模块进行接口和功能的定义。规划好各个执行模块以后, 就可以进行监控程序的规划了。首先应根据系统的总体功能选择一种最合适的监 控程序的结构,然后再根据实时性的要求,合理地安排监控软件和各执行模块之 间地调度关系。主程序流程图如图 3-1 所示。 瑣钋濺暧惲锟缟馭篩凉 MC初U始化 DS18B2初0始化 LCD初始化 当检测温度 低于设定温 度时启动加 热继电器 当检测温度 低于设定温 度时启动降 温继电器 图 3-1 主程序流程图 循环 主程序的 C语言程序如下: 鎦诗

47、涇艳损楼紲鯗餳類。 主程序 15 基于单片机的温度控制系统 栉缏歐锄棗鈕种鵑瑶 开始设置 设置好后进入死循环 辔烨 初始化 LCD峴 键盘扫描 詩叁 检查是否出错 则鯤 读取温度值 胀 显示子函数 鳃 控制继电器 稟 延时陽簍埡鲑罷 锬。 main() set(); / while(1) / 棟剛殓攬瑤丽阄应。 lcd_init(); / 扬斕滾澗辐滠兴渙藺。 key(); / 撻訥烬忧毀厉鋨骜。 error(); / 愜韋瘓賈晖园栋泷。 readtemp(); / 鏝彈奥秘孫戶孪钇賻。 lcd(); / 躋峽祷紉诵帮废掃減。 relay(); / 虛嬪赈维哜妝扩踴粜。 delay(500);

48、 / 規呜旧岿錟。 16 基于单片机的温度控制系统 3.2 DS18B20 初始化程序 DS18B20初始化步骤如下: 1、高电平“ 1”状态必须先给数据线。 2、然后延时(该时间的要求不严格,但尽可能短一点) 3、把数据线拉低到电平“ 0”状态。 4、再延时 750 微秒(该时间的范围为 480-960ms) 5、把数据线拉高到电平“ 1”。 6、延时等待(初始化已成功,在 15-60ms 时间之内 DS18B20返回一个低电 平“ 0”。根据该状态来确定它是否存在,但不可无限进行等待,否则程序会进入 死循环状态,故要有超时控制的操作)。 沩氣嘮戇苌鑿鑿槠谔應。 7、CPU如果读到了数据线上

49、“ 0”状态的低电平,还要再做延时,延时时间由 发出高电平开始算起(第( 5)步的时间开始算),最少需 480ms。钡嵐縣緱虜荣产涛團 蔺。 8、再次把数据线拉高到高电平“ 1”后就结束 DS18B20初始化的 C 语言程序如下: 懨俠劑鈍触乐鹇烬觶騮。 DS18B20 初始化子程序 謾饱兗争詣繚鮐癞别 瀘。 void Init_DS18B20() 定义字符型局域变量 呙 总线拉高 莹谐龌 unsigned char x=0; / 铉們欤谦鸪饺竞荡赚。 DS = 1;/ 17 基于单片机的温度控制系统 蕲賞组靄绉嚴减。 tmpDelay(8); / 延时, 准备与 DS18B20通讯 麸 肃鹏

50、镟轿騍镣缚縟糶。 DS = 0; / 总线拉低 納畴鳗 吶鄖禎銣腻鰲锬。 tmpDelay(80); / 延时, 给 DS18B20复位信号 風 撵鲔貓铁频钙蓟纠庙。 DS = 1; / 总线拉高 灭嗳骇 諗鋅猎輛觏馊藹。 tmpDelay(14); / 延时,等待 DS18B20响应 铹 鸝饷飾镡閌赀诨癱骝。 x=DS; / 读 DS18B20响应状态 攙 閿频嵘陣澇諗谴隴泸。 tmpDelay(20); / 延时趕輾雏纨颗 锊讨跃满賺。 3.3 LCD 初始化程序的设计 LM016L的读操作时序如图 3-2 所示。 18 基于单片机的温度控制系统 LM016L的写操作时序如图 3-3 所示

51、 LM016L的初始化的 C 语言程序如下: 夹覡闾辁駁档驀迁锬減。 LCD 初始化子程序 视絀镘鸸鲚鐘脑钧欖 lcd_init() lcd_wcmd(0 x38); / 设置 8 位字符显示, 5*10 点阵字符 19 基于单片机的温度控制系统 delay(1); / 延时偽澀锟攢鴛 擋緬铹鈞錠。 lcd_wcmd(0 x0c); 膾龋轿级镗挢廟。 / 开显示、 光标和闪烁关闭 緦徑铫 delay(1); 张礫阵轸蔼。 / 延时騅憑钶銘侥 lcd_wcmd(0 x06); 骐錾农剎貯狱颢幗騮。 / 读、写操作后, AC增一、画面不动 疠 delay(1); 婭澗骆讕瀘。 / 延时镞锊过润启

52、lcd_wcmd(0 x01); 轲誊壟该槛鲻垲赛。 / 清除 LCD的显示内容 榿贰 delay(1); 呗擷鹪讼凑。 3.4 继电器控制的程序 / 延时邁茑赚陉宾 当测量的环境温度低于设定温度时,启动加热继电器,使系统自动加热,当测 量的温度高于设定的温度时,启动降温继电器,使系统自动降温,从而使系统的 温度维持在设定的温度。 嵝硖贪塒廩袞悯倉華糲。 系统继电器控制的 C 语言程序如下: 该栎谖碼戆沖巋鳧薩锭。 /* 继电器控制子程序 劇妆诨貰攖苹埘呂仑 * 庙。 20 基于单片机的温度控制系统 void relay() if(an=0)flagn=0; / if(as=0)flags=0

53、;/ if(flagn=0)/ if(flags=0) / if(anas) / down=0; / up=1; / 实际温度为 0 度,实际温度标志位置 0 设置温度为 0 度,设置温度标志位置 0 实际温度标志位为 0 时循环 设置温度标志位为 0 时循环 若实际温度小于设置温度循环 升温继电器闭合 降温继电器打开 若实际温度等于设置温度循环 升温继电器打开 降温继电器打开 若实际温度大于设置温度循环 降温继电器闭合 升温继电器打开 21 基于单片机的温度控制系统 if(flags=1) / up=1; / down=0; / if(flagn=1) / 讹驄桠业變墊罗蘄。 if(flag

54、s=1) / if(anas) / down=1; up=0; / if(flags=0) / up=0; / down=1; / 基于单片机的温度控制系统 若实际温度小于设置温度循环 / 降温继电器打开 升温继电器闭合 设置温度标志位为 0 时循环 升温继电器闭合 降温继电器打开 3.5 按键程序的设计 由于实际波形与理想波形之间有区别, 实际波形在按下和释放的瞬间会有抖动 的现象,按键的抖动时间和机械特性的长短有关,一般为5-10 毫秒。我们通常 手动按下按键, 然后就立即释放掉按键, 这个过程稳定闭合的时间超过了 20毫秒 因此,单片机检测按键是否按下必须要加上去掉抖动的操作,可以通过去

55、抖动的 电路去掉抖动,也可以通过专用的去抖动芯片去抖动,但我们常用的是软件延时, 能很容易解决抖动问题,而没有必要再添加多余的硬件电路。按键检测流程图如 图 3-4 所示。 鰻順褛悦漚縫冁屜鸭骞。 23 基于单片机的温度控制系统 图 3-4 按键检测流程图 按键扫描的 C 语言程序如下: 穑釓虚绺滟鳗絲懷紓泺。 賽。 uchar keyscan() 按键扫描子程序 隶誆荧鉴獫纲鴣攣駘 P2=0 xf0; 繢腻叢着駕骠構砀湊。 LJC=P2 燭罚櫝箋礱颼畢韫粝。 if(LJC!=0 xf0) 執缉蘿绅颀阳灣熗鍵。 / 行扫描为低电平, 列线为高电平 浹 /第一次读列检测状态 鈀 / 若有键盘被按

56、下 惬 24 键盘消抖 贞廈 第二次读取列检测状态 嚌 若有闭合键, 则逐行扫描 薊 扫描码为 若扫描码为 0 xef ,则结束扫描 输出行扫描码 读列检测: 如果有按键闭合 / 计算键盘值 测试按键是否松开 进入死循环直至按键松开 返回键值 行扫描左移 1 位 基于单片机的温度控制系统 delay(2); / 给鏌綞牵鎮獵鎦龐。 LJC=P2 / 鲭级厨胀鑲铟礦毁蕲。 if(LJC!=0 xf0) / 镔竖牍熒浹醬籬铃騫。 HSM=0 xfe; / 0 xfe 、0 xfd 、0 xfb 、0 xf7 齡践砚语蜗铸转絹攤濼。 while(HSM / LJC=P2 / 0 xe0、0 xd0、

57、0 xb0、0 x70 绅薮疮颧訝标販繯轅赛。 if(LJC!=0 xf0) / keyvalue=(HSM)+(LJC|0 x0f); P2=0 xf0; / while(P2!=0 xf0); / return(keyvalue); / else HSM=(HSM1)|0 x01; / 25 基于单片机的温度控制系统 P2=0 xf0; / 箩狞屬诺釙诬苧径凛。 while(P2!=0 xf0); / 毙潜籬賢擔視蠶贲粵。 return(0 x00); / 岂涛軌跃轮莳講嫗键。 测试按键是否松开 饪 进入死循环直至按键松开 烴 没有按键按下则返回 0 x00 鋝 4. 仿真结果及分析 4.

58、1 系统仿真 1仿真实验一: 设定的温度为 -21.00 摄氏度,实时检测的温度为 0.00 摄氏度, 启动降温继电器。仿真图如图 4-1 所示。 撷伪氢鱧轍幂聹諛詼庞。 1 3 4 LCD1 LM016L AT89C52 3Rk13R6k1 7 SW0 1 2 3 4 5 6 7 R R ED D D D D D D D D7 D8 3 6 678 XTAL1 XTAL2 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 RST P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 A

59、LE P2.4/A12 EA P2.5/A13 P1.0/T2 P2.6/A14 P2.7/A15 P3.0/RXD P1.1/T2EX P3.1/TXD P1.2 P3.2/INT0 P1.3 P3.3/INT1 P1.4 P3.4/T0 P1.5 P3.5/T1 P1.6 P3.6/WR P1.7 P3.7/RD 图 4-1 仿真图 2. 仿真实验二: 设定的温度为 22.00 摄氏度,实时检测的温度为 0.00 摄氏度, 26 基于单片机的温度控制系统 启动升温继电器。仿真图如图 4-2 所示。 踪飯梦掺钓貞绫賁发蘄。 LCD1 LM016L SVS VD VEESR RW E 0D 1

60、D 2D 3D 4D 5D 6D 7D Q2 PNP D1 LED-BIBY D6 4R7100 D7 D8 D2 LED-BIBY DIODE DIODE 9 293031 RL1 G2R-14-AC120 RL2 G2R-14-AC120 LED-BIBY D5 LED-BIBY R13 D4 LED-BIBY R14 D3 LED-BIBY XTAL1 XTAL2 RST PSEN ALE EA P1.0/T 2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.

温馨提示

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

评论

0/150

提交评论