基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc

上传人:来看看 文档编号:3922696 上传时间:2019-10-10 格式:DOC 页数:29 大小:436.02KB
返回 下载 相关 举报
基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc_第1页
第1页 / 共29页
基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc_第2页
第2页 / 共29页
基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc_第3页
第3页 / 共29页
基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc_第4页
第4页 / 共29页
基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc》由会员分享,可在线阅读,更多相关《基于单片机AT89C51的温度控制系统的设计与仿真 毕业设计(论文).doc(29页珍藏版)》请在三一文库上搜索。

1、目 录 摘 要 1 第 1 章 绪 论 .2 1.1 单片机的应用 2 1.2 电热炉控制中的问题 3 1.3 本设计主要内容 3 第 2 章编程软件 .4 2.1 编程软件 KEIL.4 第 3 章 系统硬件结构设计 5 3.1 系统硬件组成 5 3.2 PROTEUS原理图设计 5 3.3 硬件电路结构 7 3.3.1 主控制芯片 AT89C51 原理及其说明.9 3.3.2 外部时钟电路11 3.3.3 测温模块11 3.3.4 显示模块13 3.3.5 开关模块13 3.3.6 报警模块14 第 4 章 系统软件设计及调试 .15 4.1 系统程序设计 .15 4.1.1 DS18B2

2、0 测温程序设计 17 4.1.2 LM016L 显示程序设计.18 第 5 章 总结与展望 .19 5.1 总结 .19 5.2 展望 .19 参考文献 20 附 录 21 1 摘 要:电热炉可使用金属发热体或非金属发热体来产生热源,其构造简单,工业电 热炉的主要用途是供机械工业对原材料、毛坯、机械零件加热用。温度控制对于电热 炉是至关重要的。 为了更好地控制温度、提高控制质量,选用单总线芯片DS18B20作为温度传感器, 进行了基于单片机AT89C51的温度控制系统的设计与仿真。显示模块选用LCD显示器, 控制更为简单,显示更为清晰。配以键盘模块及由二极管、蜂鸣器组成的报警模块, 组合成较

3、为完整的温度控制系统硬件。选用Proteus软件绘制电路原理图,同时选用软 件Keil进行编程编译,并将Keil与Proteus联调,在Proteus中查看仿真结果,实现温度的 自动控制。 关键词:单片机、温度控制、Keil、Proteus 仿真 2 第 1 章 绪 论 1.1 单片机的应用 单片机具有体积小、可靠性高、功能强、使用方便、性能价格比高、容易产品化 等特点。国际上从 1970 年代开始,国内自 1980 年代以来,单片机已广泛应用于国民 经济的各个领域,对各个行业的技术改造和产品的更新换代起重要的推动作用。其应 用大致可分为如下几个范畴: 1、在智能仪器仪表上的应用 单片机具有功

4、耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应 用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温 度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。 2、在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。在工业过程控制、机床 控制、机器人控制、汽车控制以及飞行器制导系统等方面得到广泛应用。 3、在家用电器中的应用 这个领域的应用特点是量大面广并且具有价格低廉的特点,如电饭锅、电子游戏 机、电视机、录音机、组合音响、洗衣机、电冰箱以至电子玩具等,都广泛地使用单 片机进行控制。 4、在计算机网络和通信领域中的应用 现在的通信

5、设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交 换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话, 集群移动通信,无线电对讲机等。 5、单片机在医用设备领域中的应用 单片机在医用设备中的用途相当广泛,例如医用呼吸机,各种分析仪,监护仪, 超声诊断设备及病床呼叫系统等等。 6、在各种大型电器中的模块化应用 某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而 不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电 子芯片中(有别于磁带机的原理),需要复杂的类似于计算机的原理。又如音乐信号 以数字的形式存于存储器中(类似

6、于 ROM),由微控制器读出,转化为模拟音乐电信 号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路, 降低了损坏、错误率,也方便于更换。 7、单片机在汽车设备领域中的应用 单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于 CAN 总 线的汽车发动机智能电子控制器,GPS 导航系统,ABS 防抱死系统,制动系统等等。 1 1.2 电热炉控制中的问题 3 温度是工业生产和科学实验中一个非常重要的参数。许多生产过程都是在一定的 温度范围内进行的,甚至对温度的要求相当严格,因此生产现场需要测量温度和控制 温度。温度是电热炉需要控制的主要参数。在传统的电热炉温度

7、控制系统中,炉温控 制采用温度仪表监视和人工调节相结合的方式,电热炉的电源通断大多采用交流接触 器来控制。这种控制方式结构简单,但控制精度差,控制速度慢,在资源方面耗费人 力且本身耗能多,控制器的噪音大,而且在控温过程中由于接触器频繁通断,经常发 生触点电弧放电现象,容易造成短路,使接触器损坏,对操作人员和设备带来不利影 响及安全隐患。传统的定值开关温度控制法存在温度滞后的问题,而多数传统基于常 规PD控制的控制装置,存在精度不高、效率低等问题。 1.3 本设计主要内容 本课题是基于单片机的电热炉温度控制系统的设计,要求实现温度自动控制,同 时显示实际温度值和设定温度值,并控制实际温度值与设定

8、温度值相差不超过 2 度, 超过 范围时自动报警并作出相应的动作。温度的控制图如图 1-1 所示。 CPU对象 测温 显示 设定值 输出值 - 图 1-1 温度控制反馈图 第二章中简单介绍了编程软件 Keil 及电路设计仿真软件 Proteus。第三章介绍本设 计硬件结构及所涉及的芯片、电路说明,主控制芯片采用 AT89C51;由于 DS1302 是 一种高性能的芯片,可自动计时计数,故时钟电路采用 DS1302;温度传感芯片 DS18B20 是单总线结构芯片,结构简单,接线少,且程序编写简单,故温度采集、转 换、传递采用 DS18B20;LCD 显示电路结构简单且软件设计也相对简单,具有低功

9、耗 特点,因此显示模块采用 LCD 显示。第四章简单讲述了程序的编写及 Keil 与 Proteus 联调显示的结果,具体程序见附录。 本课题基于编程软件 Keil 和硬件电路仿真软件 Proteus,在 Keil 软件中程序编译成 功后与 Proteus 软件的原理图联调,仿真实现课题要求。 4 第 2 章 设计编程软件 2.1 编程软件 Keil 目前流行的 51 系列单片机开发软件是德国 Keil 公司推出的 Keil C51 软件,它是 一个基于 32 位 Windows 环境的应用程序,支持 C 语言和汇编语言编程,其 6.0 以上的 版本将编译和仿真软件统一为 Vision(通常称

10、为 V2) 。Keil 提供 C 编译器、宏汇编、 连接器、库管理和一个功能强大的仿真调试器等的完整开发方案,界面如图 2-2 所示。 该软件由以下几部分组成:Vision IDE 集成开发环境、C51 编译器、A51 汇编器、 LIB51 库管理器、BL51 连接/定位器、OH51 目标文件生成器以及 Monitor-51、RTX51 实时操作系统。 图 2-2 Keil 界面 keil vision2 编写程序一般步骤如下: 1、新建工程 2、新建源程序文件,可以是 C 语言或汇编语言等 3、把源程序添加到工程中 4、编译并生成 Hex 文件 绘制原理图及编写程序过程见第三章、第四章,本章

11、不再叙述。 5 第 3 章 系统硬件结构设计 3.1 系统硬件组成 系统硬件设备由以下几部分组成: 单片机:本系统选用AT89C51, 它的片内有集成的存储器, 无需外接存储器, 使程序写入更加方便。 温度测量电路: 采用美国公司生产的单总线数字式温度传感器, 由于是单总线 结构,具有结构简单, 不需要外接电路,可用一根数据线既供电又传输数据, 并且具有体 积小,分辨率高,转换快等优点。 键盘设定电路:输入设定的温度, 必须依靠键盘, 这里利用单片机的P2口连接 矩阵式键盘, 采用扫描方式读键值,以实现温度设定。 温度显示电路:采用LCD显示器,电路比较简单,且在软件设计上也相对简单,具有低

12、功耗功能,能够满足设计最优的要求。为使显示器能正常显示、稳定工作, 单片机的P0口作 为数据输出接口,P1口作为控制字输入端口。 报警电路: 在系统温度达到上下限报警温度时选择发光二极管和蜂鸣器来实 现这一功能。发光二极管工作时需要电流, 设计时考虑了相应的控制电路。 3.2 Proteus 原理图设计 本设计采用 AT89C51 作为控制系统,DS18B20 温度传感器采集、转换温度,显示 器 LM016L 显示温度,用 proteus 画的原理图如图 3-1 所示: 图 3-1 原理图 6 电路图的绘制过程如下: 1、将所需元器件添加到对象选择器窗口。 单击对象选择器按钮,如图 3-2 所

13、示。 图 3-2 选择元件 弹出“Pick Devices”页面,在“Keywords”输入 AT89C51,系统在对象库中进行搜索 查找,并将搜索结果显示在“Results”中,如图 3-3 所示。 图 3-3 查找元件 在“Results”栏中的列表项中,双击“AT89C51” ,则可将“AT89C51”添加至对象选 择器窗口。同理,添加 LM016L、DS18B20、LED、DS1302 等其他涉及的元器件至对 象选择器窗口。如图 3-4 所示。 图 3-4 对象选择器窗口 7 2、放置元器件至图形编辑窗口 在对象选择器窗口中,选中 AT89C51,将鼠标置于图形编辑窗口该对象的欲放位

14、置、单击鼠标左键,该对象放置完成。若对象位置需要移动,将鼠标移到该对象上, 单击鼠标右键,该对象的颜色变至红色,表明该对象已被选中,按下鼠标左键,拖动 鼠标,将对象移至新位置后,松开鼠标,完成移动操作。同理放置其他元器件,如图 3-5 所示。 图 3-5 放置元件 3、元器件之间的连线 Proteus 具有线路自动路径功能(简称 WAR),当选中两个连接点后,WAR 将选择 一个合适的路径连线。WAR 可通过使用标准工具栏里的“WAR”命令按钮来关闭 或打开,也可以在菜单栏的“Tools”下找到这个图标。例如,在 LCD 红色引脚处引出 起点,连接到单片机对应引脚。如图 3-6 所示。同理,可

15、以完成其它连线。在此过程的任何 时刻,都可以按 ESC 键或者单击鼠标的右键来放弃画线。 图 3-6 连线 8 4、给总线或应连接而不便连接的导线贴标签 单击绘图工具栏中的导线标签按钮,使之处于选中状态。将鼠标置于图形编辑 窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“”号,如图 3-7 所示。 表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口,如图 3-8 所示。 图 3-7 贴标签 图 3-8 编辑标号 在“string”栏中,输入标签名称(如 P10),单击“OK”按钮,结束对该导线的标签标 定。如图 3-9 所示。同理,可以标注其它导线的标签。 图 3-9 编辑好的标

16、签 5、加入电源、接地 单击工具栏中按钮,出现如图 3-10 后选择 POWER 或 GROND,将电源或接地 符号放置在相应引脚上。如图 3-11 所示。 图 3-10 选择电源或地 9 图 3-11 放置电源或地 在绘制过程中如需删除元器件或导线、标签等,用右键双击需要删除的对象即可。 至此,电路图基本绘制完成。根据实际要求可不断修改。 3.3 硬件电路结构 3.3.1 主控制芯片 AT89C51 原理及其说明 AT89C51 是美国 ATMEL 公司生产的低电压、高性能 CMOS 8 位单片机,片内含 4k bytes 的可反复擦写的只读程序存储器(PEROM)和 128 bytes 的

17、随机存取数据存 储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器(CPU)和 FLASH 存储单元,功能强 大,可灵活应用于各种控制领域。 主要性能参数: 与 MCS-51 产品指令系统完全兼容 4K 字节可重复擦写 FLASH 闪速存储器 1000 次擦写周期 全静态操作:0Hz24MHz 三级加密程序存储器 128*8 字节内部 RAM 32 个可编程 I/O 口线 2 个 16 位定时/计数器 6 个中断源 可编程串行 UART 通道 低功耗空闲和掉电模式 引脚功能: VCC(40):电源电压 GND

18、(20):接地 P0 口(32-39):P0 口是一个 8 位双向 I/O 接口,也即地址/数据总线复用口。作为输 出口用时,每位以吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口 P0 写“1”时, 可作为高阻抗输入端用。在访问外部数据存储器时,这组口线分时转换地址(低 8 位)和 10 数据总线复用。 P1 口(1-8):P1 是一个带内部上拉电阻的 8 位双向 I/O 口,P1 的输出缓冲级可驱动 (吸收或输出电流)4 个 TTL 逻辑门电路,对端口写“1”通过内部的上拉电阻把端口 拉到高电平时,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个 引脚被外部信号拉低时会输

19、出一个电流。P1.0 和 P1.1 还可以分别作为定时/计数器 2 的 外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。 P2 口(21-28):P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可 驱动(吸收或输出电流)4 个 TTL 逻辑门电路,对端口 P2 写“1” ,通过内部的上拉电 阻把端口拉到高电平时,此时可作输入口。作为输入口使用时,因为内部存在上拉电 阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或 16 位地址 的外部数据存储器时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器 时,P2 口输出 P2

20、锁存器的内容。 P3 口(10-17):P3 是一组带有内部上拉电阻的 8 位双向 I/O 口,P3 口输出缓冲级可 驱动(吸收或输出电流)4 个 TTL 逻辑门电路,对端口 P3 写“1”时,它们被内部上 拉电阻拉高并可作为输入端口,此时,被外部拉低的 P3 口将用上拉电阻输出电流。P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能,如表 3-1 所示: 表 3-1 P3 口的第二功能 端口引脚第二功能 P3.0RXD(串行输入口) P3.1TXD(串行输出口) P3.2INT0(外中断 0) P3.3INT1(外中断 1) P3.4T0(定时/计数器 0) P3.5T1(定

21、时/计数器 1) P3.6WR(外部数据存储器写通道) P3.7RD(外部数据存储器读通道) RST(9):复位信号输入端。当振荡器工作时,RST 引脚出现两个机器周期以上高 电平将使单片机复位。复位电路如图 3-12 所示。 图 3-12 复位电路 XTAL1(19):振荡器反相放大器的输入端及内部时钟发生器的输入端。 11 XTAL1(18):振荡器反相放大器的输出端。通过 XTAL1、XTAL2 外接晶振后,即 可构成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。震荡电路如图 3-13 所 示。 图 3-13 震荡电路 3.3.2 外部时钟电路 在时间控制中,如果用系统的定时器设计时

22、钟,当偶然掉电或晶振的误差都会造成 时间的错乱,因此本设计采用 DS1302 构成时钟电路。如图 3-14 所示: 图 3-14 时钟电路 DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟 电路芯片,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电 压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,这里与单片机的 P1.5、P1.6、P1.7 口连接,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数 据。DS1302 内部有一个 318 的用于临时性存放数据的 RAM 寄存器。 DS1302 可以用于数据记录,特别是对

23、某些具有特殊意义的数据点的记录,可以同 时记录数据与出现该数据的时间。这种记录对长时间的连续测控系统结果的分析及对 异常数据出现的原因的查找具有重要意义。传统的数据记录方式是定时采样,不能记 录时间,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一 方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,耗费单片机 的资源。但是,如果在系统中采用时钟芯片 DS1302,就能很好地解决这个问题。 本设计将 DS1302 芯片作为一个扩展。 3.3.3 测温模块 温度传感器是各种传感器中最常用的一种,早期使用模拟温度传感器如热电阻。 现代的温度传感器已经走向数字化、微型化

24、、集成化。本设计采用 DS18B20。 在 Proteus 中温度传感器 DS18B20 的元件图形及实物图如图 3-15 所示。 12 图 3-15 DS18B20 元件图及实物图 DS18B20 是 DALLAS 公司生产的 1Wire,即单总线器件,具有微型化、低功耗、 高性能、抗干扰能力强、易配微处理器等优点,与单片机接口仅需占用一个 I/O 端口, 无须任何外部元件,直接将环境温度转化成串行数字信号供处理器处理。其特性如下: (1)只要求一个端口即可实现通信。 (2)在 DS18B20 中的每个器件上都有独一无二的序列号。 (3)实际应用中不需要外部任何元器件即可实现测温。 (4)测

25、量温度范围在55到125之间。 (5)数字温度计的分辨率用户可以从 9 位到 12 位选择。 (6)内部有温度上、下限报警设置。 (7)支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组网多点 测温。 (8)电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 如果需要控制多个 DS18B20 进行温度采集,只需将 DS18B20 的 I/O 口都连到一起。 如图 3-16 所示。 DS 18B 20DS 18B 20DS 18B 20 4.7 K GNDGNDGND VCC VCC单 片 机 . . . . 图 3-16 DS18B20 多点测温 DS18B20 的引脚

26、功能为:DQ 为数字信号输入/输出端;GND 为电源地;VCC 为 外接供电电源输入端。本设计使用单片机 AT89C51 的 P1.0 口与 DS18B20 的单总线端 口 DQ 相连。如图 3-15 所示。 DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温 度报警触发器 TH 和 TL、配置寄存器。 DS18B20在出厂时默认设置为12位,最高位为符号位,温度值共11位。单片机在 读取数据时一次读取2个字节共16位,前5位为符号位,当前5位为1时,读取的温度为 负值,读到的数值要取反加1再乘以0.0625才是实际温度值。而当前5位为0时,读取的 13 温

27、度为正值,读到的数值直接乘以0.0625便是实际温度值。 根据 DS18B20 的通讯协议,主机控制 DS18B20 完成温度转换必须经过三个步骤: 每一次读写之前都要对 DS18B20 进行复位,复位成功后发送一条 ROM 指令,最后发 送 RAM 指令,这样才能对 DS18B20 进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后释放,DS18B20 收到信号后等待 1660 微秒左右,后发出 60240 微 秒的存在低脉冲,主 CPU 收到此信号表示复位成功。 在实际使用中,DS18B20 有以下事项需要注意: 在对 DS18B20 进行读写编程时,必须严格的保证读写时

28、序,否则将无法读取测 温结果。 在用 DS18B20 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹 配问题。因为连接 DS18B20 的总线电缆是有长度限制的。 向 DS18B20 发出温度转换命令后,程序要等待 DS18B20 的返回信号,假如某 个 DS18B20 接触不好,当程序读该 DS18B20 时,将没有返回信号,程序会进入死循 环。 DS18B20 的初始化、工作时序见第四章。 3.3.4 显示模块 LED 显示器接口电路 常用的 LED 显示器有 LED 状态显示器(俗称发光二极管)LED 七段显示器(俗称数 码管和 LED 十六段显示器,发光二极管可显示两种状态,用

29、于系统显示;数码管用于 数字显示;LED 十六段显示器,用于字符显示) 1数码管结构 数码管由 8 个发光二极管(以下简称字段)构成,通过不同组合可用来显示数字 0-9.字符 A-F 及小数点“.”。数码管又分为共阴极和共阳极两种结构。 2. 数码管工作原理 共阳极数码管的 8 个发光二级管的阳极(二极管正端)连接在一起。通常会共阳 极接高电平 1.一般接电源 1.当某个阴极接低电平时,则该数码管导通并点亮。共阴极 数码管的 8 个发光二极管的阴极(二极管负端)连接在一起。公共阴极接低电平(一 般接地)当某个阳极接高电平,则该数码管并点亮。 14 3.3.5 开关模块 本课题温度设定由矩阵式键

30、盘设定,键盘是一组按键的组合,共有 12 个按键,分 别是 0、1、2、3、4、5、6、7、8、9、+、-,电路如图 3-18 所示。 。通常用到的开关 都是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开。单片机 AT89C51 的 P2 口作为检测按键时用的 I/O 口与矩阵键盘两端都相连,在检测是否有键 按下时需人为通过 P2 口送出低电平。即采用扫描式读键值。检测时,先送一列为低电 平,其余几列全为高电平,然后轮流检测一次各行是否有低电平,若某一行有低电平, 则可确认当前按下的键的行列数。 键在按下和释放的瞬间会产生抖动现象,因此在检测键盘时要加上去抖动电路, 本设计使用延时

31、程序来去抖动。 图 3-18 键盘模块 3.3.6 报警模块 本设计采用发光二极管和蜂鸣器作为报警装置。当实际温度达到上限或下限时, 相关二极管发光、蜂鸣器报警;实际温度低于设定温度时,发光二极管点亮报警。二 极管分别与 P3.0、P3.1、P3.2、P3.3 相连,蜂鸣器与 P3.4 连接。电路如图 3-19 所示。 图 3-19 报警模块及相应管脚连接 15 第 4 章 系统软件设计及调试 4.1 系统程序设计 Keil 使用“工程” (Project)的概念,对工程(而不能对单一的源程序)进行编译/ 汇编、连接等操作。首先新建工程(Project-new project) ,如图 4-1

32、 所示。 图 4-1 新建工程 文件保存类型为.uv2,如图 4-2 所示。 图 4-2 保存工程 点击保存后在跳出来的对话框中选择 Ateml 下面的 89c51 单片机。如图 4-3 所示。 16 图 4-3 选择单片机类型 这时工程管理窗口的文件页(Files)会出现“Target1” ,将其前面+号展开,接着 选择 Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group Source Group1 ” ,如图 4-4 所示。出现一个对话框,要求寻找并加入源文件,源文件后缀为.c 或.asm,如图 4-5 所示。打开空白 c 文件就可以开始编写程序了。

33、 图 4-4 添加源文件 17 图 4-5 源文件 4.1.1 DS18B20 测温程序设计 1、DS18B20 的控制指令如下: CCH跳过 ROM。忽略 64 位 ROM 地址,直接向 DS18B20 发送温度变换命令。 55H匹配 ROM,发出此命令后发出 64 位 ROM 编码,访问单总线上与该编码 相对应的 DS18B20 并使之做出响应。 33H读 ROM 中的编码。 如果主机只对一个 DS18B20 进行操作(即本设计这样的情况) ,只需用跳过 ROM(CCH)命令就可进行温度转换和读取操作。如下: 44H温度转换。启动 DS18B20 进行温度转换,结果存入内部 9 字节的 R

34、AM 中。 BEH读暂存器。读内部 RAM 中 9 字节的温度数据。 4EH写暂存器。发出向内部 RAM 的第 2、3 字节写上下限温度数据命令,随 后传送两字节的数据。 2、工作时序及相应程序: 初始化: 先将数据线置高电平 1; 延时; 数据线拉到低电平 0; 延时; 数据线拉到高电平 1; 延时等待; 数据线再次拉到高电平 1。 具体的程序应用如下: void dsreset(void) uint i; ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)i-; 写数据: 数据线置低电平 0; 延时 15us; 按从低位到高位的顺序发送数据; 18

35、 延时 45 us; 将数据线拉到高电平 1; 重复步骤,直到发送完整个字节; 再次将数据线拉高到 1。 读数据: 将数据线拉高到 1; 延时 2us; 将数据线拉低到 0; 延时 6us; 将数据线拉高到 1; 延时 4us; 读数据线的状态得到一个状态位,并进行数据处理; 延时 30us; 重复步骤,直到读取完一个字节。 在编写具体的程序时,首先要对 DS18B20 进行复位初始化,其次编写读一位数据 函数、读一个字节数据函数、写一个字节数据函数、温度的获取转换程序、读温度程 序等子程序。详细程序见附录。 4.1.2 LM016L 显示程序设计 1、基本工作时序: 读状态 输入:RS=0,

36、RW=1,E=1 输出:D0D7=状态字 读数据 输入:RS=1,RW=1,E=1 输出:无 写指令 输入:RS=0,RW=0,D0D7=指令码,E=高脉冲 输出:D0D7=数据 写数据 输入:RS=1,RW=0,D0D7=数据,E=高脉冲 输出:无 2、初始化设置: 原则上每次进行读/写之前都必须进行读/写检测,但由于单片机的操作速度慢于液 晶控制器的反应速度,因此可以用简单延时代替读/写检测。本设计所用初始化指令如 下: write_com(0X01); 显示清 0,数据指针清 0 write_com(0X38); 设置 16*2 显示,5*7 点阵,8 位数据接口 write_com(0

37、X0C); 设置开显示,不显示光标 write_com(0X06); 写一个字符后地址指针自动加 1 write_com(0x80); 在第一排开始显示 write_com(0xC0); 显示第二排 3、写操作时序: 通过 RS 确定是写数据还是写命令。写命令包括使液晶的光标显示/不显示,需/ 不需要移屏,在液晶的什么位置显示等等,写数据是写要显示的内容。 读/写控制端设置为写模式,即低电平。 将数据或命令送达数据线上。 给 E 使能端一个高脉冲将数据送入液晶控制器,完成写操作。 例如,写控制字程序如下: 19 void write_com(unsigned char c) /写入控制命令的子

38、程序 int i; for(i=80;i0;i-); /用延时代替忙检测 RS=0; /选择写命令模式 RW=0; /选择写模式 E=0; P0=c; /要写的数据 E=1; /给使能端一个高脉冲 E=0; 本设计显示程序包括 LCD 清屏程序、写入控制命令子程序、写入数据子程序、初 始化程序等,具体程序见附录。 第 5 章 总结与展望 5.1 总结 经过半个多学期的学习,基本完成了本次毕业设计的预期要求,熟练掌握了基于 单片机的温度控制系统的设计原理,并运用了相关自动控制原理。Keil 的功能都非常 强大,是现在单片机仿真使用的主流软件,通过本次设计能熟练使用这两个软件,并 制作出自己相关的

39、成果。同时接触到了新的硬件并熟悉了这些硬件的资料及使用方法。 到目前为止,对本设计涉及的硬件的使用已基本掌握,如 DS18B20、显示器 LM016L 的使用及相关程序的编写,实现了温度显示,未能很好的实现温度的自动控 制。由于时间的原因,没有制作硬件电路板。 通过设计,学习到了新的元器件知识,加强了 C 程序编写能力和单片机的控制知 识,锻炼了文献搜索、资料整理能力,自学能力,调试、查错能力。 5.2 展望 电热炉在工业温度控制中具有重要作用,结构简单,用途十分广泛。随着单片 机的不断发展,用单片机控制电热炉的温度已被广泛采用,控制精度、可靠性等都 不断提高。现在的单片机逐渐向嵌入式系统靠拢

40、,使得控制功能更强大。温度传感 器 DS18B20 代替了传统模拟传感器,使得温度控制外围电路简单,程序功能相对集 中。这种传感器虽然是单总线结构,但是可以将多个DS18B20 连接在一根总线上, 实现温度的多点检测。只需通过程序控制各个DS18B20 的使用情况。显示器 LM016L 是 1602 显示器的一种,用显示器显示不仅界面清晰明了,控制也更简单。 其他类型的显示器如 12232、12864 等可以显示更多的内容,与数码管相比节省了 很多外围元件,并且程序也比较简单。 本设计的课题任务是显示实际温度值、设定温度值,并对这两个温度进行比较 控制,使实际温度始终保持在一定范围内。在实际工

41、业生产中,设定温度的范围会 比较广泛,相应的实际温度范围可能也比较宽泛, DS18B20 温度范围窄有可能不 20 适合,需要选用其他适合的温度传感器。生产中的温度控制精度会比较高,需要使 用先进控制算法,比如模糊 PID 控制。本设计中报警系统采用了发光二极管,还可 以加上蜂鸣器报警。显示器也有使用温度的限制,总之,对不同的要求要选用合适 的元器件。 本设计初步实现了温度的控制功能,在此基础上可以提高控制精度及显示精度, 扩大温度控制范围,实现更多的控制报警功能,并可根据本设计制作出硬件电路板。 用单片机控制电热炉的温度是一种主流趋势,并有可能在今后用嵌入式系统来进行 温度控制,采用先进控制

42、算法来进行设计。 21 参考文献 1. 张慰兮、王颖. 微型计算机(MCS-51 系列)原理、接口及应用. 南京:南京大学出版社, 2001:43-55。 2. 李俊、张晓东. 基于单片机的温湿度检测与控制系统研究. 微计算机信息, 2008,17(3):116-118。 3. 郭天祥. 51 单片机 C 语言教程. 北京:电子工业出版社,2009: 124-258。 4. 郑金辉、张齐、李登红、帅仁俊. 基于单片机的数字温度测控系统设计. 单片机开发与应用, 2009,2(23):93-95。 5. 赵鸿图. 基于单片机的温度控制系统的设计与实现. 单片机开发与应用, 2008,9(2):5

43、4-56。 6. 安宏、姚彩虹、蒋兴加. 用于电热炉的智能温控仪的设计.自动化仪表, 2008,29(10):64-69。 7. 刘淑荣、丁录军. 基于单片机的温度智能控制系统. 微计算机信息, 2003,7(2):56-57。 8. 徐凤霞、赵成安. AT89C51 单片机温度控制系统. 齐齐哈尔大学学报, 2004,20(1):64-66。 9. 郑惟晖. 单片机智能温度控制系统的设计. 黄山学院学报, 2008,10(5):23-25。 10.李浩波. 集散控制系统在黄磷电热炉生产中的应用. 四川有色金属, 2001,4(4):57-59。 11.张俊芳、张忠民、刘利民. 智能单片机温度

44、控制系统. 辽宁工程技术大学学报, 2004,6(23):69- 71。 12.赵巧妮. Proteus 在单片机仿真中的应用. 自动化技术与应用, 2009,28(6):113-115。 13.李东勋、沈文浩、陈小泉. 基于 Proteus 的液晶模块的仿真. 华南理工大学制浆造纸工程国家重 点实验室。 14.郭廷杰. 日本新型电热炉情况综述. 工业炉,1994,2(72):55-59。 15.深圳中源单片机发展有限公司.AT89C51 中文资料.深圳中源单片机发展有限公司。 16.谭浩强. C 程序设计. 北京:清华大学出版社,1999(2):45-364。 17.陈忠华. 基于单片机的温

45、度智能控制系统的设计与实现. 大连理工大学硕士学位论文,2006。 18.徐建林. 热处理电阻炉炉温控制系统的分析与仿真. 金属热处理,2002, 27(11):33-38。 19.王海宁. 基于单片机的温度控制系统的研究. 合肥工业大学硕士学位论文,2008。 20.许丽川. 过程控制调节规律的研究-单片机温度控制系统的设计制作. 电子科技大学硕士学位论 文,2000。 22 附 录 根据第三章系统硬件的设计,程序编写如下: #include #include #define uchar unsigned char #define uint unsigned int sbit ds=P10;

46、 /温度传感器信号线 sbit RS=P11; sbit RW=P12; sbit E=P13; sbit led1=P30; sbit led2=P31; sbit led3=P32; sbit led4=P33; sbit hot=P37; sbit beep=P34; uint warn_l=10; /温度下限值 uint warn_h=90; /温度上限值 uint settemp; uint temp; uint count=0; uchar f_temp; data unsigned char SET15=“settemp: “; data unsigned char REAL15

47、=“realtemp: “; char code tab34=1,2,3,4, 5,6,7,8, 9,0, , ; /0 到 F 的 16 个键植 void delay(uint z) /延时函数 uint x,y; for (x=z;x0;x-) for (y=110;y0;y-); /以下是 DS18B20 的相关程序 void dsreset(void) /DS18B20 复位,初始化函数 uint i; ds=0; i=103; 23 while(i0)i-; ds=1; i=4; while(i0)i-; bit tempreadbit(void) /读一位数据函数 uint i;

48、bit dat; ds=0; i+; /i+起延时作用 ds=1; i+; i+; dat=ds; i=8; while(i0)i-; return(dat); uchar tempread(void) /读 1 个字节数据函数 uchar i,j,dat; dat=0; for(i=1;i1); return(dat); void tempwritebyte(uchar dat) /向 DS18B20 写一个字节数据函数 uint i; uchar j; bit testb; for (j=1;j1; if (testb) /写 1 ds=0; i+; i+; ds=1; i=8; while(i0)i-; 24 else ds=0; /写 0 i=8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1