基于单片机的温度控制系统_第1页
基于单片机的温度控制系统_第2页
基于单片机的温度控制系统_第3页
基于单片机的温度控制系统_第4页
基于单片机的温度控制系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1 重庆三峡学院 单片机课程设计报告书单片机课程设计报告书 基于单片机的温度控制系统 基于单片机的温度控制系统 学院 系 学院 系 年级专业 年级专业 学学 号 号 学生姓名 学生姓名 指导教师 指导教师 教师职称 教师职称 成成 绩 绩 制作日期制作日期 2012年年 11月月 2 日日 2 目目 录录 摘要摘要 3 第一章第一章 4 引言 4 1 1 项目概述 4 1 2 设计任务和要求 4 第二章硬件系统的设计第二章硬件系统的设计 5 2 1 硬件设计概要 5 2 2 各部分及其实现的功能 5 2 2 1 中央控制芯片 5 2 2 2 温度传感器 5 2 2 3 液晶显示器 8 2 3 主要电路及功能 11 2 3 1 单片机电路 11 2 32 显示电路 12 2 3 3 温度传感器电路 12 2 3 4 升温和降温调节电路 13 2 3 5 温度上下限调节电路 13 2 3 6 报警电路 14 第三章软件系统的设计第三章软件系统的设计 15 3 1 主程序流程图 15 3 2 液晶显示流程图 16 3 3 温度传感器流程图 17 第四章第四章 仿真与调试仿真与调试 17 4 1 硬件调试 17 4 2 软件电路故障与解决办法 17 4 3 软件调试方法 17 4 4 仿真显示成果 18 第五章第五章实训总结实训总结 20 附录附录 21 3 基于单片机基于单片机 STC89C51STC89C51 的温度显示系统的设计的温度显示系统的设计 摘要 摘要 本设计是基于单片机的温度控制系统 采用 DS18B20 温度传感器采集所要测量的当前环境 温度 通过单片机进行处理并加以显示 该温度控制系统具有设定温度上下限的功能 通过控制继电器或电机来控制外部加热及 制冷装置 从而实现环境温度处于设定温度上下线范围内 当 DS18B20 所测量的环境温度低于 设定温度下限时 蜂鸣器和指示灯发出报警 控制外部加热装置的继电器动作 使外部加热器 工作 直到温度高于温度设定下限时 警报解除 加热装置停止加热 当环境温度高于温度上 限时 蜂鸣器发出报警 控制外部降温装置的电机动作 使外部降温装置工作 直到环境温度 低于温度上限 警报解除 降温装置停止工作 实现对温度在 0 99 控制的自动化 该温度控制器的显示部分采用液晶显示 具有显示当先温度 温度上限值 温度下限值 的功能 按键部分采用四个按键 每个按键的功能不同 用过各个按键的配合使用 可以实现 切换液晶显示 调节温度上下限的功能 关键字关键字 单片机 传感器 温控 DS18b20 4 第第 1 1 章章 引言引言 随着电子技术 特别是随大规模集成电路的产生而出现的微型计算机技术的飞速发展 人类生活发生了根本性的改变 如果说微型计算机的出现使现代科学研究得到了质的飞跃 那 么可以毫不夸张地说 单片机技术的出现则是给现代工业测控领域带来了一次新的技术革命 目前 单片机以其体积小 重量轻 抗干扰能力强 对环境要求不高 高可靠性 高性能价格 比 开发较为容易 在工业控制系统 数据采集系统 智能化仪器仪表 办公自动化等诸多领 域得到极为广泛的应用 并已走人家庭 从洗衣机 微波炉到音响 汽车 到处都可见到单片 机的踪影 因此 单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一 本课题研究的内容就是以单片机 AT89c51 为主要控制元件 通过温度传感器 DS18B20 实现对温 度的测量 并通过 LCD1602 直接显示所测温度 1 11 1 项目概项目概 温度控制系统无论是工业生产过程 还是日常生活都起着非常重要的作用 过低或过 高的温度环境不仅是一种资源的浪费 同时也会对机器和工作人员的寿命产生严重影响 极有 可能造成严重的经济财产损失 给生活生产带来许多利的因素 基于 AT89C51 的单片机温度控 制系统与传统的温度控制相比具有操作方便 价价格便宜 精确度高和开展容易等优点 因此 市场前景好 1 21 2 设计任务和要求 设计任务和要求 本温度控制器系统可以实现以下功能 1 采集温度 并通过液晶显示当前温度 2 通过按键调节温度上下限 并通过液晶显示设定的温度上下限值 3 控制继电器或电机 从而达到控制外部加热 制冷装置 使环境温度保持在设定温 度范围内 4 具有报警装置 当温度高于上限 或低于下限时 蜂鸣器发出报警声 通过指示灯 就可以分辨出是温度过高还是过低 5 第第 2 2 章章 硬件系统的设计硬件系统的设计 2 12 1 硬件设计概要硬件设计概要 根据需求 我们将系统分为五个模块 信息处理模块 温度采集模块 控制调节模块 报警电路模块 显示模块 图 1 结构图 2 22 2 各部分及其实现的功能各部分及其实现的功能 2 2 12 2 1 中央控制芯片中央控制芯片 STC89C51STC89C51 STC89C51 是一种低功耗 高性能的片内含有 4KB 快闪可编程 擦除只读存储器 FPEROM Flash Programmable and Eraseable Read Only Memory 的 8 位 CMOS 微控制器 使用高密度 非易失存储技术制造 并且与 80C51 引脚和指令系统完全兼容 主要性能 与 MCS 51 微控制器产品系列兼容 片内有 4KB 可在线重复编程的快闪擦写存储器 存 储数据保存时间为 10 年 宽工作电压范围 Vcc 可为 2 7V 到 6V 全静态工作 可从 0Hz 至 16MHz 程序存储器具有 3 级加密保护 128 8 位内部 RAM 32 条可编程 I O 线 两个 16 位定时器 计数器 中断结构具有 5 个中断源和 2 个优先级 可编程全双工串行通道 空闲状态维持低功耗和掉电状态保存存储内容 2 2 22 2 2 温度传感器温度传感器 DS18B20DS18B20 1 DS18B20 的性能特点 采用单总线专用技术 既可通过串行口线 也可通过其它 I O 口线与微机接口 无须经过其它 变换 直接输出被测温度值 9 位二进制数 含符号位 测温范围为 55 125 测量分辨率为 0 0625 6 内含 64 位经过激光修正的只读存储器 ROM 适配各种单片机或系统机 用户可分别设定各路温度的上 下限 内含寄生电源 口较少 可节省大量的引线和逻辑电路 2 DS18B20 的内部结构 DS18B20 内部结构如图 1 所示 主要由 4 部分组成 64 位 ROM 温度传感器 非挥发的温度报 警触发器 TH 和 TL 配置寄存器 DS18B20 的管脚排列如图 2 所示 DQ 为数字信号输入 输出 端 GND 为电源地 VDD 为外接供电电源输入端 在寄生电源接线方式时接地 见图 4 ROM 中的 64 位序列号是出厂前被光刻好的 它可以看作是该 DS18B20 的地址序列码 每个 DS18B20 的 64 位序列号均不相同 64 位 ROM 的排的循环冗余校验码 CRC X8 X5 X4 1 ROM 的作用是使每一个 DS18B20 都各不相同 这样就可以实现一根总线上挂接多个 DS18B20 的 目的 图 2 DS118B20 的内部结构 图 3 DS18B20 的管脚排列 7 3 DS18B20 的工作时序 DS18B20 的一线工作协议流程是 初始化 ROM 操作指令 存储器操作指令 数据传输 其工 作时序包括初始化时序 写时序和读时序 如图 3 a b c 所示 a 初始化时序 b 写时序 c 读时序 图 4 DS18B20 的工作时序图 4 DS18B20 高速暂存器共 9 个存储单元 如表所示 8 序号 寄存器名称 作 用 序号 寄存器名称 0 温度低字节 4 配置寄存器 1 温度高字节 以 16 位补码形式 存放 5 6 7 保留 2 TH 用户字节 1 存放温度上限 8 CRC 3 HL 用户字节 2 存放温度下限 4 1 以 12 位转化为例说明温度高低字节存放形式及计算 12 位转化后得到的 12 位数据 存储在 18B20 的两个高低两个 8 位的 RAM 中 二进制中的前面 5 位是符号位 如果测得的温度 大于 0 这 5 位为 0 只要将测到的数值乘于 0 0625 即可得到实际温度 如果温度小于 0 这 5 位为 1 测到的数值需要取反加 1 再乘于 0 0625 才能得到实际温度 高 8 位 S S S S S 26 25 24 低 8 位 23 22 21 20 2 1 2 2 2 3 2 4 4 2DS18B20 有六条控制命令 如表所示 指 令 约定代码 操 作 说 明 温度转换 44H 启动 DS18B20 进行温度转换 读暂存器 BEH 读暂存器 9 个字节内容 写暂存器 4EH 将数据写入暂存器的 TH TL 字节 复制暂存器 48H 把暂存器的 TH TL 字节写到 E2RAM 中 重新调 E2RAM B8H 把 E2RAM 中的 TH TL 字节写到暂存器 TH TL 字节 读电源供电方式 B4H 启动 DS18B20 发送电源供电方式的信号给主 CPU 2 2 32 2 3 液晶显示模块 液晶显示模块 LCD1602LCD1602 从液晶显示器的显示内容来分 可分为段式 字符式 点阵式 字符型 LCD1602 专门用于显示 数字 字母 符号及几个自定义符号 它可以显示 2 行 x16 个字符 1 1 接口定义接口定义 注 V0 为 LCD1602 的对比度调整端 接正电源时对比度最弱 接地时对比度最强 一般 接 10K 可调电阻的中端 该可调电阻一端接正电源另一端接地 在读状态下 E 为高电平时 LCD1602 将所需数据送到数据线上 在写状态下 E 为下降沿时 LCD1602 从数据线上读取 管脚号名称LEVEL功能 1VSS0V电源地 2VDD 5V电源正 3 0V 5 5V 9 3VEE对比调整电压 4RS0 10 输入指令 1 输入数据 5R W0 10 向 LED 写入指令或数据 1 从 LED 读取数据 6E1 1 0使能信号 1 时读取数据 1 0 执行指令 7D00 1数据总线 line0 最低位 8D10 1数据总线 line1 9D20 1数据总线 line2 10D30 1数据总线 line3 11D40 1数据总线 line4 12D50 1数据总线 line5 13D60 1数据总线 line6 14D70 1 数据总线 line7 最高位 2 控制指令控制指令 1 清屏 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 00 00 00 00 00 00 00 01 1 指令代码为 01H 向显示 DDRAM 中写入 ASCII 代码 20H 清除显示内容 同时光标移 到左上角 2 光标归位 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 00 00 00 00 00 00 01 1X X 指令代码为 02H 地址计数器 AC 被清 0 DDRAM 内的数据不变 光标移到左上角 X 表示可为 0 或 1 3 输入方式设置 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 00 00 00 00 00 01 1I DI DS S 该指令设置光标及字符移动的方式 具体设置入下表 状态位 I DS 指令代码功能功能 0004H 光标左移 1 格 AC 值减 1 字符不动 0105H 光标不动 AC 值减 1 字符全部右移 1 格 10 1006H 光标右移 1 格 AC 值加 1 字符不动 1107H 光标不动 AC 值加 1 字符全部左移 1 格 4 显示开关控制 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 00 00 00 00 01 1D DC CB B 指令代码为 08H 0FH 该指令控制字符 光标及闪烁的开与关 D 是字符显示状态位 D 1 时开显示 D 0 时关显示 但显示内容保持不变 C 是光标显示状态位 C 1 时光标显示 C 0 时光标消失 光标的位置由地址计数器 AC 确定 并随其变动而移动 当 AC 值超出了字符的显示范围 光标将随之消失 B 是光标闪烁显示状态位 B 1 时光标闪烁 B 0 时光标不闪烁 5 光标 字符移位 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 00 00 00 01 1S CS CR LR LX XX X 执行该指令将产生字符或光标向左或右滚动一个字符位 如果定时间隔地执行该指令 将 产生字符或光标的平滑滚动 具体设置如下 状态位 S CR L 指令代码功能功能 0010H 光标左滚动 0114H 光标右滚动 1018H 字符左滚动 111CH 字符右滚动 6 功能设置 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 00 00 01 1DLDLN NF F0 00 0 该指令用于设置 LCD1602 的控制方式 DL 用于设置与计算机的接口方式 DL 1 为 8 位数据总线方式 DL 0 为 4 位数据总线方 式 其高 4 位有效 在该方式下 8 位指令或数据将按先高 4 位后低 4 位的顺序分两次传送 N 用于设置显示的字符行数 N 1 为两行 N 0 为一行 F 用于设置显示字符的字体 F 1 为 5x10 点阵字体 F 0 为 5x7 点阵字体 7 CGRAM 地址设置 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 00 01 1A5A5A4A4A3A3A2A2A1A1A0A0 该指令将 6 位的 CGRAM 地址写入地址指针计数器 AC 内 随后 单片机对数据的操作是 11 对 CGRAM 的读 写操作 8 DDRAM 地址设置 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 00 01 1A6A6A5A5A4A4A3A3A2A2A1A1A0A0 该指令将 7 位 DDRAM 地址写入地址指针计数器 AC 内 随后 单片机对数据的操 作是对 DDRAM 的读 写操作 9 读 BF 及 AC 值 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 0 01 1BFBFAC6AC6AC5AC5AC4AC4AC3AC3AC2AC2AC1AC1AC0AC0 BF 为 LCD 的忙闲标志位 BF 1 时为忙 不能对其进行操作 BF 0 时为闲 可以对其进 行操作 而另外的 D6 D0 的值表示 CGRAM 或 DDRAM 中的地址 10 写数据到 CGRAM 或 DDRAM RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 1 10 0 先设定 CGRAM 或 DDRAM 地址 再将数据写入 D7 D0 中 以使 LCD 显示出字符 也 可将自创的字符写入 CGRAM 11 从 CGRAM 或 DDRAM 读取数据 RSRSR WR WDB7DB7DB6DB6DB5DB5DB4DB4DB3DB3DB2DB2DB1DB1DB0DB0 1 11 1 先设定 CGRAM 或 DDRAM 地址 再读取其中的数据 2 32 3 主要电路及功能主要电路及功能 2 3 1 2 3 1 单片机的复位电路及时钟电路单片机的复位电路及时钟电路 单片机的时钟电路有一个12M 的晶振和两个20PF 的小电容组成 它们决定了单片机的工 作时间精度为1 微秒 AT89C51单片机作为整个硬件系统的核心 它既是协调整机工作的控制 器 又是数据处理器 该单片机为51系列增强型8位单片机 它有32个I O口 片内含4K FLASH 工艺的程序存储器 便于用电的方式瞬间擦除和改写 而且价格便宜 其外部晶振为12MHz 一个指令周期为1 S 使用该单片机完全可以完成设计任务 其最小系统主要包括 复位电路 震荡电路 12 图 4 单片机模块 2 3 2 2 3 2 显示电路显示电路 字符型LCD 通常有14 条引脚线或16条引脚线的LCD 多出来的2条线是背光电源线VCC 15 脚 和地线GND 16脚 其控制原理与14脚的LCD完全一样 图 5 显示电路 2 3 3 2 3 3 温度传感器电路温度传感器电路 温度检测控制模拟电路图 DS18B20 原件及其连线如图温度此传感器上显示的温度同步显示 到液晶显示器上 并有加温 减温按钮 13 图 6 温度检测控制模拟电路 2 3 4 2 3 4 升温和降温调节电路升温和降温调节电路 通过控制外部加热装置的继电器动作 使外部加热器工作来达到升温效果 或控制外部降 温装置的电机动作 使外部降温装置工作来达到降温效果 图 7 加温和降温控制电路 2 3 5 2 3 5 温度上下限调节电路温度上下限调节电路 通过按键控制键选着调节对象 通过上升下降调节值大小 控制开关 升温开关 降温开关 复位开关分别为 k1 k2 k3 K4 开始显示的是当前温度 K1开关 用来控制进入温度上限 下限的调节界面 按k1 一次进入三个界面 按K2为加1开关 按一下 加1 k3减1开关 按 14 一下 减1 K4开关用来复位返回到当前温度 图 8 上下限调节电路 2 3 6 2 3 6 报警电路电路报警电路电路 通过 LED 指示灯的闪烁以及蜂鸣器的鸣叫实现报警 如果温度超过上限高温指示灯亮 蜂鸣器鸣叫 低于下限低温指示灯亮 蜂鸣器鸣叫 图 9 报警指示灯 图 10 报警扬声器 15 第三章第三章 软件系统的设计软件系统的设计 3 1 程序流程图程序流程图 开开始始 总总线线置置1并并延延时时 总总线线置置0并并延延时时480 s 总总线线置置1 返返回回 DS18B20初图 温度低于低温下限 低温报警 开始 S51寄存器初始化 18b20存在 温度转换命令 读取温度 温度数据处理 温度显示 温度比较 报警 N Y 在在 设设 定定 区区 间间 内内 在在设设定定区区间间内内 16 3 2液晶显示流程图液晶显示流程图 上上电电 初初始始化化 设设定定进进入入点点 显显示示数数据据 功功能能设设定定控控制制字字 显显示示开开关关控控制制字字 清清屏屏控控制制字字 进进入入设设定定点点控控制制字字 3 3 温度传感器流程图温度传感器流程图 上上电电 初初始始化化 忽忽略略ROM指指令令 读读暂暂存存器器指指令令 数数据据处处理理 送送LCD显显示示 数数据据口口复复位位 延延时时 单单片片机机拉拉低低总总线线 延延时时 释释放放总总线线 延延时时 传传感感器器 发发生生存存在在脉脉冲冲 17 第四章第四章 仿真与调试仿真与调试 4 1硬件调试硬件调试 首先调试液晶程序 单片机STC89C51的P2口接液晶数据口 根据液晶手册 将RS1和RE借 口接高电平 RS R W EN接口接单片机P0 3 P0 4 P0 5口 单独调试液晶程序 将hex文件 下载到单片机 看看是否在液晶第一排是否显示 温度 在第三排是否显示 液晶温度显示 然后根据DS18B20的手册书写程序 将液晶程序设为头文件 若DS18B20程序无误 则在 液晶的第一排首位开始会显示 温度 第二排的第三个字符开始会显示温度值XX 第三 排不显示 第四排首位开始显示 液晶温度显示 如果程序有误 则再看看芯片资料和程序 的书写是否有出入 如有错误则再更正 直至显示正确为止 4 2软件电路故障与解决办法软件电路故障与解决办法 1 以断点或连续方式运行时 目标测试系统没有按照规定的功能进行操作或什 么结果也没有 可能是由于程序转移到意外之处或在某处死循环所造成的 2 不响应中断 Cpu 不响应中断或者是不响应某一个中断这种错误的现象是连续运行时不执 行中断程序的操作 当断点在中断入口或者中断服务程序中时碰不到断点 错误可能由中断寄 存器 IE IP 的初值设置不当 使 CPU 没有开放中断或者不许某个中断源请求 或者对片 内的定时器 串行口等特殊功能的寄存器和 I O 接口程序有错误 造成中断没有被激活 又或 者某一中断程序不是 RET 指令作为返回主程序的指令 CPU 虽然已经返回到主程序但内部中 断状态寄存器没有被消除 从而不影响中断 或者外部中断源的硬件故障使得外部中断请求无 效 4 3 软件调试方法软件调试方法 软件调试所使用的方法有 计算程序的调试方法 I O 处理程序的调试法 综合调试法等 1 计算程序的调试方法 计算程序的错误是一种静态的固定的错误 因此主要用单拍或者断点运行方法来调试 根 据计算程序的功能 事先准备好一组测试数据 调试时 用仿真器写命令 将命令数据写入计 算程序的缓冲单元 然后从计算程序开始运行到结束 运行结果与计算的正确数据做比较 如 18 果对有的测试数据进行测试没有发现错误 则该计算程序调试成功 如果发现结果不正确 改 用单步运行的方法找出错误所在 如果是计算错误 则需要修改重新设计程序 如果是局部的 指令错误 修改局部程序就可以了 如果是用于测试的数据没有全部覆盖实际计算的原始数据 的类型 调试没有发现错误可能在系统运行中暴露出来 2 I O 接口处理程序的调试 对于 A D 转换器一类的 I O 接口处理程序是实时处理程序 因此一般用全速断点运行方式 或连续运行方法进行调试 3 综合调试 在完成了各个程序模块的调试工作之后 就可以进行系统的综合调试 综合调试采用全速 运行或断点运行方式 这个阶段的主要工作是检测系统里面遗留的错误以及提高系统的动态性 能和精度 在综合调试阶段 应该注意系统的晶振频率工作 使系统全速运行目标程序 实现 预定功能技术指标之后 就可以将软件固化 然后在运行固化的目标程序 成功后目标系统就 可以脱机运行 4 4 仿真后 显示成果 仿真后 显示成果 图 11 调节温度上下限 19 图 12 显示当前温度 图 13 温度高于温度上限 高温报警灯亮 蜂鸣器鸣叫 20 图 14 温度低于低温下限 低温报警灯亮 蜂鸣器鸣叫 第五章第五章 总结总结 基于 AT89C51 单片机的温度控制系统的设计 对整个硬件电路和软件程序设计做了分析 文中介绍了温度控制的现状及发展 介绍了仿真软件 proteus 及 keil 的基本知识 学习了 proteus 的仿真方法和步骤 介绍了温度控制器的设计方案选择及原理介绍 加深了 51 单片机 的知识了解 介绍 51 单片机的结构 特点等 并学习了温度传感器 DS18B20 设计软件仿真 更直观的反应设计的正确性 温度控制利用在很多领域 在一些人不能直接进入的场所 利用 单片机控制的温度控制 可以设置并控制其中的温度 温度控制还可以利用在温室中 这样就 可以控制温室中的温度 当温度超过所要求的温度时 可发生报警 单片机的功能都为我们实 现电路提供了非常有利的条件 同时也为开发环境带去了简单 易用 方便 大大加快本系统 设计开发 总之温度控制器用在很多领域 从本次实习中 发现自己还存在许多的不足 对汇 编程序不是很熟悉 不会灵活运用 导致代码读起来有点困难 还有对数据手册中的时序图理 解不是很透彻 以后我会通过实践和理论结合来弥补自己的不足之处 参考文献 参考文献 21 1 谢辉主编 单片机原理及应用 化学工业出版社 2010 年 8 月 第一版 2 曹巧媛主编 单片机原理及应用 第二版 北京电子工业出版社 2002 3 何力民编 单片机高级教程 北京航空大学出版社 2000 4 陈强等 传感器技术与应用 高等教育出版社 2010 5 王锦标 方崇智 过程计算机控制 清华大学出版社 1997 36 40 6 胡寿松 自动控制原理 北京 国防工业出版社 2000 103 124 7 刘伯春 智能 PID 调节器的设计及应用 电子自动化 1995 3 20 25 8 周景润 张丽娜 基于 proteus 的电路及单片机系统设计与仿真 M 北京 航空航天大学出 版社 2006 9 王忠飞 胥芳 MCS 51 单片机原理及嵌入式系统应用 M 西安 西安电子科技大学出版社 2007 10 赵娜 赵刚 于珍珠等 基于 51 单片机的温度测量系统 J 微计算机信息 2007 1 2 附录 附录 附录一附录一 系统整体电路图 系统整体电路图 22 附录二附录二 程序代码 程序代码 简单功能说明 一个显示实时温度的小系统 可以自行设 23 定高温报警和低温报警值 实现温度控制电机带动外围器 件功能 DQEQU P1 7 DS18B20 控制口 RS EQU P2 4 RW EQU P2 5 E EQU P2 6 LCD EQU P0 FLAGEQU 30H GEWEIEQU 29H SHI EQU 28H XIAOSHU EQU 27H TEMP TL EQU 20H 低温限值 TEMP TH EQU 21H 高温限值 TEMPHEQU 22H 温度高字节 TEMPLEQU 23H 温度低字节 TEMPEQU 24H K1EQU P3 0 K2EQU P3 1 K3EQU P3 2 K4EQU P3 3 MAIN MOV TEMP TH 25 MOV TEMP TL 01 ACALL INIT LCD 初始化液晶 ACALLWR THL 写入高温限值和低温限值寄存器 ACALLWR PROM ACALLRE PROM 从 EEPROM 中返回高温限值和低温限值 ACALLRESET 初始化 1820 JBFLAG LOOP ACALLERROR 报错 LOOP ACALLREAD T 1820 读取温度 ACALLDISP TEMP 液晶显示实时温度 ACALLKEYSCAN 键盘设定高温限值和低温限值 ACALLTEMP COMP JMP LOOP 启动 18b20 读取温度 READ T SETBDQ ACALLRESET JBFLAG READ T1 RET READ T1 24 MOV A 0CCH ACALLWR 1820 MOV A 44H ACALLWR 1820 ACALLRESET MOV A 0CCH ACALLWR 1820 MOV A 0BEH ACALLWR 1820 ACALLREAD 1820 RET 把高温和低温限值写入寄存器 WR THL JBFLAG WR HL RET WR HL ACALLRESET MOV A 0CCH ACALLWR 1820 MOV A 4EH ACALLWR 1820 MOV A TEMP TH ACALLWR 1820 MOV A TEMP TL ACALLWR 1820 RET 把高温和低温限值写入 EEPROM WR PROM ACALLRESET MOV A 0CCH ACALLWR 1820 MOV A 48H ACALLWR 1820 RET 把 EEPROM 的值返回到高温和低温限值寄存器 RE PROM ACALLRESET MOV A 0CCH ACALLWR 1820 MOV A 0B8H ACALLWR 1820 RET 初始化 1820 RESET SETB DQ 25 NOP CLR DQ MOV R5 250 DJNZR5 SETBDQ NOP MOV R5 25H RESET1 JNB DQ FLAG1 DJNZR5 RESET1 JMP NDQ FLAG1 SETBFLAG MOV R5 100 DJNZR5 SETBDQ MOV R5 100 DJNZR5 JMP RETU NDQ CLR FLAG ACALLERROR RETU SETBDQ RET 18b20 写字节 WR 1820 MOV R6 8 CLR C WR1 CLR DQ MOV R5 7 DJNZR5 RRC A MOV DQ C MOV R5 25 DJNZR5 SETBDQ NOP NOP DJNZR6 WR1 SETBDQ RET 读取 18b20 数据 26 READ 1820 MOV R2 4 MOV R1 TEMPL RE1 MOV R6 8 RE2 SETBDQ NOP CLR DQ CLR C NOP NOP SETBDQ MOV R5 9 DJNZR5 MOV C DQ MOV R5 24 DJNZR5 RRC A DJNZR6 RE2 MOV R1 A DEC R1 DJNZR2 RE1 RET 转换数据 TURN MOV XIAOSHU TEMPL 保存 TEMPL 值 后面用于取低 4 位转换小数部分 MOV A TEMPL MOV C 16 22H 的位寻址 RRC A MOV C 17 RRC A MOV C 18 RRC A MOV C 19 RRC A MOV TEMP A MOV A XIAOSHU ANL A B MOV XIAOSHU A RET 键盘扫描 27 KEYSCAN JBK1 RETUN 按下 K1 进入键盘扫描 ACALLDELAY20 JNB K1 ACALLCLR LCD 清屏 ACALLDISP THL 显示高温限值和低温限值 ACALLSET HL 设定限值 ACALLWR THL 把高温限值和低温限值写入 RAM ACALL WR PROM 限值复制到 EEPROM 中 RETUN RET 设定高低限值 SET HL JBK1 KEY4 ACALLDELAY20 JNB K1 CPL 20H 1 标志位 标志设定高温限值或低温限值 JB20H 1 SET H JMP SET L 调高温限值 SET H ACALLTH SHAN 光标闪 进入设定 KEY2H JNB K1 SET L 高温限值与低温限值间设定转换 JNB K4 EXIT JBK2 KEY3H 按下 K2 值加 1 ACALLDELAY20 JNB K2 INC TEMP TH MOV A TEMP TH CJNEA 99 A0 MOV TEMP TH 00 A0 ACALLDISP THL KEY3H JBK3 KEY2H 按下 K3 值减 1 ACALLDELAY20 JNB K3 DEC TEMP TH MOV A TEMP TH CJNEA 0 A1 MOV TEMP TH 99 A1 ACALLDISP THL JMP SET H 28 调低温限值 SET L ACALLTL SHAN KEY2L JNB K1 SET H 高温限值与低温限值间设定转换 JNB K4 EXIT JBK2 KEY3L 按下 K2 值加 1 ACALLDELAY20 JNB K2 INC TEMP TL MOV A TEMP TL CJNEA 99 A2 MOV TEMP TL 00 A2 ACALLDISP THL KEY3L JBK3 KEY2L 按下 K3 值减 1 ACALLDELAY20 JNB K3 DEC TEMP TL MOV A TEMP TL CJNEA 0 A3 MOV TEMP TL 99 A3 ACALLDISP THL JMP SET L KEY4 JNB K4 EXIT K4 用于退出设定 JMP SET HL EXIT ACALLDELAY20 JNB K4 MOV LCD B 设置液晶光标不显示 不闪烁 ACALL WR COMM ACALLCLR LCD ACALLDISP TEMP RET 温度比较 TEMP COMP CLR P1 0 对所用端口清零 CLR P1 1 CLR P1 2 CLR P1 3 CLR P1 4 CLR P1 5 MOV A TEMP TH SUBBA TEMP 与高温比较 ACALLDIANJI 29 MOV A TEMP SUBBA TEMP TL 与低温比较 ACALLDIANJI2 RET 启动电机 电机接口是 P1 低 4 位 因为 P1 7 是温度传感器的控制口 避免冲突 电机接口按位控制 DIANJI JCDIAN0 RET DIAN0 MOV R0 4 DIAN1 SETBP1 4 SETBP1 0 CLR P1 1 ACALLDELAY CLR P1 0 SETBP1 1 ACALLDELAY DJNZR0 DIAN1 CLR P1 0 CLR P1 1 CLR P1 4 RET DELAY MOV R5 5 DLY1 MOV R6 10 DLY2 MOV R7 50 DJNZR7 DJNZR6 DLY2 DJNZR5 DLY1 RET DIANJI2 JCDIAN2 RET DIAN2 MOV R0 4 DIAN3 SETBP1 5 SETBP1 0 CLR P1 3 ACALLDELAY1 CLR P1 0 SETBP1 3 ACALLDELAY1 DJNZR0 DIAN3 CLR P1 0 30 CLR P1 3 CLR P1 5 RET DELAY1 MOV R5 5 DLY3 MOV R6 10 DLY4 MOV R7 50 DJNZR7 DJNZR6 DLY4 DJNZR5 DLY3 RET 清屏 CLR LCD MOV LCD 80H ACALLWR COMM MOV R0 16 CLR1 MOV LCD ACALLWR DATA DJNZR0 CLR1 MOV LCD 0C0H ACALLWR COMM MOV R0 16 CLR2 MOV LCD ACALLWR DATA DJNZR0 CLR2 RET 报错 ERROR MOV LCD 80H ACALLWR COMM MOV DPTR ERORTAB ACALLDISP0 RET ERORTAB DB INIT ERROR 0H 温度标志 DISP C MOV LCD A ACALL WR COMM MOV LCD 0DFH ACALLWR DATA MOV LCD C ACALLWR DATA RET 31 数码显示 SHUMA MOV DPTR SHUTAB MOVCA A DPTR MOV LCD A ACALLWR DATA RET SHUTAB DB30H 31H 32H 33H 34H DB35H 36H 37H 38H 39H 显示实时温度 DISP TEMP ACALLTURN MOV LCD 80H ACALL WR COMM MOV DPTR CURRENT ACALL DISP0 MOV LCD 0CAH ACALL WR COMM MOV LCD 2EH 小数点 ACALL WR DATA MOV A 0CCH ACALLDISP C 温度标志 MOV A XIAOSHU MOV DPTR XIAO MOVC A A DPTR MOV XIAOSHU A MOV A TEMP MOV B 10 DIV AB MOV SHI A MOV

温馨提示

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

评论

0/150

提交评论