已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 基于 51 单片机的温度测量控制系统设计 摘摘 要要 随着科技的不断进步 在工业生产中温度是常用的被控参数 而采用单片机来对这 些被控参数进行控制已成为当今的主流 温度传感器 DS18B20 具有性能稳定 灵敏度 高 抗干扰能力强 使用方便等优点 广泛应用于冰箱 空调器 粮仓等日常生活中 温度的测量和控制 本文采用 51 单片机来实现对温度的测量和控制 它的主要组成部 分有 AT89S52 单片机最小系统 DS18B20 测温电路 按键电路 LCD1602 显示电路 蜂鸣器报警电路 它可以实时地检测和显示温度 可以设定温度范围 实现对温度的 报警和自动控制 关键词关键词 温度 51 单片机 DS18B20 测量和控制 ii ABSTRACT Temperature sensor DS18B20 has a lot of advantages such as stable performance high sensitivity strong anti interference capability convenience of use etc And it was widely used for the measurement and control of temperature in refrigerators air conditioners barn and other daily life in the measurement and control of temperature In this article We used a single chip for realizing temperature measurement and alarm It was mainly component of AT89S52 chip DS18B20 keyboard and display circuit temperature alarm and control circuit It realize not only real time detection and display temperature but also setting the temperature range and the measurement and control of temperature Key words Temperature 51 MCU DS18B20 Measurement and control 基于 51 单片机的温度测量控制系统设计说明 目录目录 1 引言 1 1 1 温度测量控制系统设计的背景 发展历史及意义 1 1 2 温度测量控制系统的目的 1 1 3 温度测量控制系统完成的功能 1 2 总体设计方案 2 2 1 方案一 2 2 2 方案二 2 3 DS18B20 温度传感器简介 7 3 1 温度传感器的历史及简介 7 3 2 DS18B20 的工作原理 7 3 2 1 DS18B20 工作时序 7 3 2 2 ROM 操作命令 8 3 3 DS18B20 的测温原理 9 3 3 1 DS18B20 的测温原理 9 3 3 2 DS18B20 的测温流程 10 4 硬件电路设计 11 4 1 单片机最小系统设计 11 4 1 1 时钟电路 11 4 1 2 复位电路 12 4 1 3 电源电路 12 4 2 测温电路设计 13 4 3 显示电路设计 13 4 4 键盘输入电路 14 4 5 蜂鸣器报警电路 14 5 系统软件设计 15 5 1 主程序模块 15 5 2 读温度值模块 16 5 3 中断模块 19 5 4 温度设定 报警模块 20 5 5 液晶显示模块 22 6 系统调试与测试 24 6 1 硬件调试 24 6 2 软件调试 24 6 总结 25 参考文献 26 附录 1 原理图 28 附录 2 程序代码 29 基于 51 单片机的温度测量控制系统设计说明 1 1 引言 1 1 温度测量控制系统设计的背景 发展历史及意义 温度是生产过程和科学实验中普遍而且重要的物理参数 随着社会的发展 科技的 进步 以及测温仪器在各个领域的应用 智能化已是现代温度控制系统发展的主流方向 特别是近年来 温度控制系统已应用到人们生活的各个方面 但温度控制一直是一个未 开发的领域 却又是与人们息息相关的一个实际问题 针对这种实际情况 设计一个温 度控制系统 具有广泛的应用前景与实际意义 温度是一个重要的物理量 它反映了物体冷热的程度 与自然界中的各种物理和化 学过程相联系 在工 农业生产和日常生活中 各个环节都与温度紧密相联 温度的准 确监测及控制占据着极其重要地位 比如 发电厂锅炉的温度必须控制在一定的范围之 内 许多化学反应的工艺过程必须在适当的温度下才能正常进行等 没有合适的温度环 境 许多电子设备就不能正常工作 粮仓的储粮就会变质霉烂 酒类的品质就没有保障 可见 温度的测量和控制是非常重要的 随着电子技术和微型计算机的迅速发展 单片机在电子产品中的应用已经越来越广 泛 利用单片机对温度进行控制的技术也随之而生 并日益发展和完善 且越来越显示 出它的优越性 1 2 温度测量控制系统的目的 本设计的内容是温度测试控制系统 控制对象是温度 温度控制在日常生活及工业 领域应用相当广泛 比如温室 水池 发酵缸 电源等场所的温度控制 而以往温度控 制是由人工完成的而且不够重视 其实在很多场所温度都需要监控以防止发生意外 针 对此问题 本系统设计的目的是实现一种可连续高精度调温的温度控制系统 它应用广 泛 功能强大 小巧美观 便于携带 是一款既实用又廉价的控制系统 1 3 温度测量控制系统完成的功能 本设计是对温度进行实时监测与控制 设计的温度控制系统实现了基本的温度控制 功能 当温度低于设定下限温度时 蜂鸣器报警 同时红灯亮 模拟加热过程 使温度 上升 当温度高于设定上限温度时 蜂鸣器报警 同时绿灯亮 模拟制冷过程 使温度 下降 温度在上下限温度之间时 蜂鸣器和红绿灯不动作 LCD1602 实时时显示温度 精确到小数点一位 通过独立按键可以设置温度的控制范围 基于 51 单片机的温度测量控制系统设计说明 2 2 总体设计方案 2 1 方案一 测温电路的设计 可以使用热敏电阻之类的器件利用其感温效应 在将随被测温度 变化的电压或电流采集过来 进行 A D 转换后 就可以用单片机进行数据的处理 在显 示电路上 就可以将被测温度显示出来 这种设计需要用到 A D 转换电路 感温电路比 较麻烦 2 2 方案二 考虑使用温度传感器 结合单片机电路设计 采用一只 DS18B20 温度传感器 直接 读取被测温度值 之后进行转换 依次完成设计要求 比较以上两种方案 很容易看出 采用方案二 电路比较简单 软件设计容易实现 故实际设计中拟采用方案二 在本系统的电路设计方框图如图 2 1 所示 它由五部分组成 AT89S52 单 片 机 DS18b20 温度测量电路 用户按键 LCD1602 显示 蜂鸣器报警电路 图 2 1 温度计电路总体设计方案 1 控制部分 单片机 AT89S52 具有低电压供电和体积小等特点 它所具有的资源能足够满足此次 电路系统的设计需要 并且很适合便携手持式产品的设计使用 2 显示部分 显示电路采用 LCD1602 第一行显示当前温度 第二行显示控制温度范围 3 用户按键 用户按键采用 4 位独立按键 能够对温度上下限进行设置 4 蜂鸣器报警电路 基于 51 单片机的温度测量控制系统设计说明 3 当前温度超出设定的温度上下限时 蜂鸣器报警 5 温度测量电路 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感 器 与传统的热敏电阻等测温元件相比 它能直接读出被测温 这一部分主要完成对温 度信号的采集和转换工作 由 DS18B20 数字温度传感器及其与单片机的接口部分组成 数字温度传感器 DS18B20 把采集到的温度通过数据引脚传到单片机的 P1 4 口 此部分只 用到 DS18B20 和单片机 硬件很简单 1 DS18B20 的性能特点如下 9 1 独特的单线接口仅需要一个端口引脚进行通信 2 多个 DS18B20 可以并联在惟一的三线上 实现多点组网功能 3 无须外部器件 4 可通过数据线供电 电压范围为 3 0 5 5V 5 零待机功耗 6 温度以 3 位数字显示 7 用户可定义报警设置 8 报警搜索命令识别并标志超过程序限定温度 温度报警条件 的器件 9 负电压特性 电源极性接反时 温度计不会因发热而烧毁 但不能正常工作 2 DS18B20 的内部结构 DS18B20 采用 3 脚 PR 35 封装 如图1 2所示 DS18B20 的内部结构 如图 3 所 示 引脚说明 地 数据线 可选 图 2 2 DS18B20 封装 3 DS18B20 内部结构主要由四部分组成 5 1 64 位光刻 ROM 开始 8 位是产品类型的编号 接着是每个器件的惟一的序号 共 有 48 位 最后 8 位是前 56 位的 CRC 校验码 这也是多个 DS18B20 可以采用一线进行通 信的原因 10 64 位闪速 ROM 的结构如下 表 2 1 ROM 结构 8b 检验 CRC48b 序列号8b 工厂代码 10H 基于 51 单片机的温度测量控制系统设计说明 4 MSB LSB MSB LSB MSB LSB 内部 电源 探测 位 和 单线端口 位 产生器 暂存器 下限触发 上限触发 温度传感器 存储器和控制逻辑 图 2 3 DS18B20 内部结构 2 非挥发的温度报警触发器 TH 和 TL 可通过软件写入用户报警上下限值 3 高速暂存存储 可以设置 DS18B20 温度转换的精度 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的可电擦 除的 E2PRAM 高速暂存 RAM 的结构为 8 字节的存储器 结构如图1 3所示 头 2 个字节包 含测得的温度信息 第 3 和第 4 字节 TH 和 TL 的拷贝 是易失的 每次上电复位时被刷 新 第 5 个字节 为配置寄存器 它的内容用于确定温度值的数字转换分辨率 DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值 它的内部存储器结构和字节定义 如图1 3所示 低 5 位一直为 TM 是工作模式位 用于设置 DS18B20 在工作模式还是 在测试模式 表 2 2 DS18B20 内部存储器结构 Byte0温度测量值 LSB 50H Byte1温度测量值 MSB 50H E2PROM Byte2TH 高温寄存器 TH 高温寄存器 Byte3TL 低温寄存器 TL 低温寄存器 Byte4配位寄存器 配位寄存器 Byte5预留 FFH Byte6预留 0CH Byte7预留 IOH Byte8循环冗余码校验 CRC 基于 51 单片机的温度测量控制系统设计说明 5 2 非挥发的温度报警触发器 TH 和 TL 可通过软件写入用户报警上下限值 3 高速暂存存储 可以设置 DS18B20 温度转换的精度 DS18B20 出厂时该位被设置为 0 用户要去改动 R1 和 R0 决定温度转换的精度位数 来 设置分辨率 如图1 4 图 2 3 DS18B20 字节定义 TM R1R0 1 1 1 1 1 由表 1 1 可见 分辨率越高 所需要的温度数据转换时间越长 因此 在实际应用 中要将分辨率和转换时间权衡考虑 高速暂存 RAM 的第 6 7 8 字节保留未用 表现为全逻辑 1 第 9 字节读出前面所有 8 字节的 CRC 码 可用来检验数据 从而保证通信数据的正确性 当 DS18B20 接收到温度转换命令后 开始启动转换 转换完成后的温度值就以 16 位 带符号扩展的二进制补码形式存储在高速暂存存储器的第 1 2 字节 单片机可以通过单 线接口读出该数据 读数据时低位在先 高位在后 数据格式以 0 0625 LSB 形式表 示 当符号位 S 0 时 表示测得的温度值为正值 可以直接将二进制位转换为十进制 当符号位 S 1 时 表示测得的温度值为负值 要先将补码变成原码 再计算十进制数值 表 1 2 是一部分温度值对应的二进制温度数据 6 表 2 4 DS18B20 温度转换时间表 R1R0分辨率 位温度最大转向时间 ms 00993 75 0110187 5 1011375 1112750 表 2 5 一部分温度对应值表 温度 二进制表示十六进制表示 1250000 0111 1101 000007D0H 850000 0101 0101 00000550H 25 06250000 0001 1001 00000191H 10 1250000 0000 1010 000100A2H 0 50000 0000 0000 00100008H 00000 0000 0000 10000000H 基于 51 单片机的温度测量控制系统设计说明 6 0 51111 1111 1111 0000FFF8H 续表 2 5 10 1251111 1111 0101 1110FF5EH 25 06251111 1110 0110 1111FE6FH 551111 1100 1001 0000FC90H 4 CRC 的产生 在 64 b ROM 的最高有效字节中存储有循环冗余校验码 CRC 主机根据 ROM 的前 56 位来计算 CRC 值 并和存入 DS18B20 中的 CRC 值做比较 以判断主机收到的 ROM 数据是 否正确 另外 由于 DS18B20 单线通信功能是分时完成的 它有严格的时隙概念 因此 读写时序很重要 系统对 DS18B20 的各种操作按协议进行 操作协议为 初使化 DS18B20 发复位脉冲 发 ROM 功能命令 发存储器操作命令 处理数 基于 51 单片机的温度测量控制系统设计说明 7 3 DS18B20 温度传感器简介 3 1 温度传感器的历史及简介 温度的测量是从金属 物质 的热胀冷缩开始 水银温度计至今仍是各种温度测量的 计量标准 可是它的缺点是只能近距离观测 而且水银有毒 玻璃管易碎 代替水银的 有酒精温度计和金属簧片温度计 它们虽然没有毒性 但测量精度很低 只能作为一个 概略指示 不过在居民住宅中使用已可满足要求 在工业生产和实验研究中为了配合远 传仪表指示 出现了许多不同的温度检测方法 常用的有电阻式 热电偶式 PN 结型 辐射型 光纤式及石英谐振型等 它们都是基于温度变化引起其物理参数 如电阻值 热 电势等 的变化的原理 随着大规模集成电路工艺的提高 出现了多种集成的数字化温度 传感器 3 2 DS18B20的工作原理 3 2 1 DS18B20工作时序 根据 DS18B20 的通讯协议 主机控制 DS18B20 完成温度转换必须经过三个步骤 1 每一次读写之前都必须要对 DS18B20 进行复位 2 复位成功后发送一条 ROM 指令 3 最后发送 RAM 指令 这样才能对 DS18B20 进行预定的操作 复位要求主 CPU 将数据线下拉 500 微秒 然后释放 DS18B20 收到信号后等待 15 60 微秒左右后发出 60 240 微秒的存在低脉冲 主 CPU 收到此信号表示复位成功 其工作时序包括初始化时序 写时序和读时序 具体工作方法如图 2 1 2 2 2 3 所示 1 初始化时序 响应脉 冲60 240 等待15 60 主机最小480 主机复位脉冲 最小480US 图 3 1 初始化时序 总线上的所有传输过程都是以初始化开始的 主机响应应答脉冲 应答脉冲使主机 基于 51 单片机的温度测量控制系统设计说明 8 知道 总线上有从机设备 且准备就绪 主机输出低电平 保持低电平时间至少 480us 以产生复位脉冲 接着主机释放总线 4 7K 上拉电阻将总线拉高 延时 15 60us 并 进入接受模式 以产生低电平应答脉冲 若为低电平 再延时 480us 12 2 写时序 采 样15 45 采 样15 45 1 1 主机写 1 时序 主机写 0 时序 图 3 2 写时序 写时序包括写 0 时序和写 1 时序 所有写时序至少需要 60us 且在 2 次独立的写时 序之间至少需要 1us 的恢复时间 都是以总线拉低开始 写 1 时序 主机输出低电平 延时 2us 然后释放总线 延时 60us 写 0 时序 主机输出低电平 延时 60us 然后释 放总线 延时 2us 8 3 读时序 主机采样 主机采样 4545 1 1 主机写 1 时序 主机写 0 时序 图 3 3 读时序 总线器件仅在主机发出读时序是 才向主机传输数据 所以 在主机发出读数据命 令后 必须马上产生读时序 以便从机能够传输数据 所有读时序至少需要60us 且在2 次独立的读时序之间至少需要1us的恢复时间 每个读时序都由主机发起 至少拉低总线 1us 主机在读时序期间必须释放总线 并且在时序起始后的15us之内采样总线状态 主 机输出低电平延时2us 然后主机转入输入模式延时12us 然后读取总线当前电平 然后 基于 51 单片机的温度测量控制系统设计说明 9 延时50us 4 3 2 2 ROM操作命令 当主机收到DSl8B20 的响应信号后 便可以发出ROM 操作命令之一 这些命令如表 2 2 ROM操作命令 3 3 DS18B20 的测温原理 3 3 1 DS18B20的测温原理 每一片 DSl8B20 在其 ROM 中都存有其唯一的 48 位序列号 在出厂前已写入片内 ROM 中 主机在进入操作程序前必须用读 ROM 33H 命令将该 DSl8B20 的序列号读出 程序可以先跳过 ROM 启动所有 DSl8B20 进行温度变换 之后通过匹配 ROM 再逐一 地读回每个 DSl8B20 的温度数据 DS18B20 的测温原理如图 2 4 所示 图中低温度系数晶振的振荡频率受温度的影响很 小 用于产生固定频率的脉冲信号送给减法计数器 1 高温度系数晶振随温度变化其震荡 频率明显改变 所产生的信号作为减法计数器 2 的脉冲输入 图中还隐含着计数门 当 计数门打开时 DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数 进而完成温 度测量 计数门的开启时间由高温度系数振荡器来决定 每次测量前 首先将 55 所 对应的基数分别置入减法计数器 1 和温度寄存器中 减法计数器 1 和温度寄存器被预置 在 55 所对应的一个基数值 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减 法计数 当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1 减法计数器 1 的预置 将重新被装入 减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数 如 此循环直到减法计数器 2 计数到 0 时 停止温度寄存器值的累加 此时温度寄存器中的 数值即为所测温度 图 2 3 中的斜率累加器用于补偿和修正测温过程中的非线性 其输 出用于修正减法计数器的预置值 只要计数门仍未关闭就重复上述过程 直至温度寄存 器值达到被测温度值 表 3 1 ROM 操作命令 指令约定代码功 能 读 ROM33H读 DS18B20 ROM 中的编码 符合 ROM55H 发出此命令之后 接着发出 64 位 ROM 编码 访问单线 总线上与该编码相对应的 DS18B20 使之作出响应 为下 一步对该 DS18B20 的读写作准备 搜索 ROM0F0H用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址 为操作各器件作好准备 跳过 ROM0CCH忽略 64 位 ROM 地址 直接向 DS18B20 发温度变换命令 适用于单片工作 基于 51 单片机的温度测量控制系统设计说明 10 续表 3 1 告警搜索 命 令 0ECH执行后 只有温度超过设定值上限或者下限的片子才做 出响应 温度变换44H启动 DS18B20 进行温度转换 转换时间最长为 500MS 结果存入内部 9 字节 RAM 中 读暂存器0BEH读内部 RAM 中 9 字节的内容 写暂存器4EH发出向内部 RAM 的第 3 4 字节写上 下限温度数据命 令 紧跟读命令之后 是传送两字节的数据 复制暂存器48H将 E2PRAM 中第 3 4 字节内容复制到 E2PRAM 中 重调 E2PRAM0BBH将 E2PRAM 中内容恢复到 RAM 中的第 3 4 字节 读 供 电 方 式 0B4H读 DS18B20 的供电模式 寄生供电时 DS18B20 发送 0 外接电源供电 DS18B20 发送 1 另外 由于 DS18B20 单线通信功能是分时完成的 他有严格的时隙概念 因此读写 时序很重要 系统对 DS18B20 的各种操作必须按协议进行 操作协议为 初始化 DS18B20 发复位脉冲 发 ROM 功能命令 发存储器操作命令 处理数据 减法计数器 斜坡累加器 减到 0 减法计数器 预 置 低温度系数 振 荡 器 高温度系数 振 荡 器 计数比较器 预 置 温度寄存器 减到 0 图 3 4 测温原理内部装置 3 3 2 DS18B20的测温流程 初始化 DS18B20 跳过 ROM 匹配 温度变换延时 1S 跳过 ROM 匹配 读暂存器转换成显示码数码管显示 基于 51 单片机的温度测量控制系统设计说明 11 图 3 5 DS18B20 测温流程 基于 51 单片机的温度测量控制系统设计说明 12 4 硬件电路设计 4 1 单片机最小系统设计 单片机最小应用系统 是指用最少的原件组成的单片机可以工作的系统 对 51 系列 单片机来说 最小系统应包括单片机 晶振电路 复位电路 下面介绍 51 单片机的最小 系统电路图 P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 M OSI 6 P1 6 M ISO 7 P1 7 SC K 8 R ESET 9 P3 0 10 P3 1 11 P3 2 12 P3 3 13 P3 4 14 P3 5 15 P3 6 16 P3 7 17 XTAL2 18 XTAL1 19 VSS 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VC C 40 U6 89s52 VC C VC C 12 Y1 30pF C 5 30pFC 6 1uF C 4 100K R 7 VC C S1 SW PB F 100F Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 R S R W E 图 4 1 单片机最小系统 单片机的最小系统是由电源 复位 时钟 下面介绍一下每一个组成部分 4 1 1 时钟电路 XTAL1 是片内振荡器的反相放大器输入端 XTAL2 则是输出端 使用外部振荡器时 外部振荡信号应直接加到 XTAL1 而 XTAL2 悬空 内部方式时 时钟发生器对振荡脉冲二 分频 如晶振为 12MHz 时钟频率就为 6MHz 晶振的频率可以在 1MHz 24MHz 内选择 电 容取 30PF 左右 系统的时钟电路设计是采用的内部方式 即利用芯片内部的振荡电路 AT89 单片机内部有一个用于构成振荡器的高增益反相放大器 引脚 XTAL1 和 XTAL2 分别 是此放大器的输入端和输出端 这个放大器与作为反馈元件的片外晶体谐振器一起构成 基于 51 单片机的温度测量控制系统设计说明 13 一个自激振荡器 外接晶体谐振器以及电容 C1 和 C2 构成并联谐振电路 接在放大器的 反馈回路中 对外接电容的值虽然没有严格的要求 但电容的大小会影响震荡器频率的 高低 震荡器的稳定性 起振的快速性和温度的稳定性 因此 此系统电路的晶体振荡 器的值为 12MHz 电容应尽可能的选择陶瓷电容 电容值约为 22 F 在焊接刷电路板时 晶体振荡器和电容应尽可能安装得与单片机芯片靠近 以减少寄生电容 更好地保证震 荡器稳定和可靠地工作 单片机复位电路如下图 4 2 所示 12 Y1 12M 30pF C 1 30pF C 2 GND XTAL1 XTAL2 图 4 2 时钟电路 4 1 2 复位电路 在振荡器运行时 有两个机器周期 24 个振荡周期 以上的高电平出现在此引腿时 将使单片机复位 只要这个脚保持高电平 51 芯片便循环复位 复位后 P0 P3 口均置 1 引脚表现为高电平 程序计数器和特殊功能寄存器 SFR 全部清零 当复位脚由高电平变 为低电平时 芯片为 ROM 的 00H 处开始运行程序 复位是由外部的复位电路来实现的 片内复位电路是复位引脚 RST 通过一个斯密特触发器与复位电路相连 斯密特触发器用 来抑制噪声 它的输出在每个机器周期的 S5P2 由复位电路采样一次 复位电路通常采 用上电自动复位和按钮复位两种方式 此电路系统采用的是上电与按钮复位电路 当时 钟频率选用 6MHz 时 C 取 22 F Rs 约为 200 Rk 约为 1K 复位操作不会对内部 RAM 有所影响 常用的复位电路如下图所示 100K R 1 k ey1 1uF C 3 VC C GND R ST 图 4 3 复位电路图 4 1 3 电源电路 9v 电源经 LM7805 转化成 5V D1 为电源指示灯 C5 为电源滤波电容 基于 51 单片机的温度测量控制系统设计说明 14 D1 1K R 4 Vin 1 Gnd 2 5V 3 LM 7805 GND1uF C 5 GND VC C GND VC C 12 1 2 P2 DC 9V 图 4 4 电源电路 4 2 测温电路设计 对 DS18B20 的设计外部供电方式单点测温 在这种外部电源供电方式下 DS18B20 工作电源由 VDD 引脚接入 因为由 VDD 接入电源不存在电源电流不足的问题 可以保证转换精度 不过要注意 在这种外部供电的方式下 DS18B20 的 GND 脚不能悬空 否则不能转换温度 读取的温度总是 80 oC DS18B20 的测温电路连接如下图 4 5 所示 GND DQ VCC U218B20 GND P1 4 4 7K R5 VCC 图 4 5 测温电路 4 3 显示电路设计 字符型液晶显示模块是一种专门用于显示字母 数字 版本号等的点阵式液晶显示模 块 它是由若干个 5 7 或 5 11 等点阵符位组成的 第一个点阵字符位都可以显示一个 字符 点阵字符位之间有一定点距的间隔 这样就起到了字符间距和行距的作用 本系 统采用字符型液晶显示模块 1602 我设置单片机驱动 LCD1602 采用并行方式 RS RW EN 分别接主控单片机的 P24 P25 P26 脚 Q0 Q7 接到主控单片机的 P0 数据接口 LCD1602 的硬件连接原理图如图 4 6 所示 GND VCC VO RS RW E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BG VCC BG GND LC D 1602 VC CVC C GND GND Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 RS RW E R P1 图 4 6LCD1602 显示电路 基于 51 单片机的温度测量控制系统设计说明 15 4 4 键盘输入电路 四个键分别连接单片机 P3 4 P3 5 P3 6 P3 7 构成独立式键盘 分别实现温度报 警范围上下限的设定功能 如图 4 7 所示 k ey2 k ey3 P3 4 P3 5 k ey4 k ey5 GND P3 6 P3 7 图 4 7 键盘输入电路 4 5 蜂鸣器报警电路 当温度超过设定温度范围时 实现蜂鸣器鸣叫报警 并有 2 个发光二极管点亮指示是 高温报警还是低温报警 蜂鸣器由单片机 P1 3 口控制 用三极管驱动 VC C E B C LQ5 GND 1K R 3 P1 3 图 4 8 蜂鸣器报警电路 基于 51 单片机的温度测量控制系统设计说明 16 5 系统软件设计 5 1 主程序模块 主程序需要调用 3 个子程序 分别为 DS18B20 测温子程序 实时温度显示子程序 驱动 LCD1602 把实时温度值显示出来 温度设定 报警子程序 设定报警温度值 当温度超过该值时产生报警 即驱动 蜂鸣器鸣叫 2 个发光二极管发光 主程序流程图 基于 51 单片机的温度测量控制系统设计说明 17 开 始 初始化 DS18B20 显示当前温度 判断当前温度值 超过设定 温度上限 蜂鸣器 报警 红灯亮 设定温度上 下限 蜂鸣器 报警 是 否 低于设定 温度下限 是 绿灯亮 否 图 5 1 主程序流程图 5 2 读温度值模块 读温度值模块需要调用 4 个子程序 分别为 DS18B20 初始化子程序 让单片机知道 DS18B20 在总线上且已准备好操作 DS18B20 写字节子程序 对 DS18B20 发出命令 DS18B20 读字节子程序 读取 DS18B20 存储器的数据 延时子程序 对 DS18B20 操作时的时序控制 基于 51 单片机的温度测量控制系统设计说明 18 1 读温度值模块流程图 图 5 2 读温度值子程序流程图 2 DS18B20 初始化子程序流程图 DS18B20 初始化 跳过读序列号 启动温度转换 延时 DS18B20 初始化 跳过读序列号 读取温度值高低位 数据转换处理 返回 入口 基于 51 单片机的温度测量控制系统设计说明 19 N Y 图 5 3 DS18B20 初始化子程序流程图 3 DS18B20 写字节和读字节子程序流程图 DQ 置高电平 稍延时 DQ 复位 0 延时 480ms DQ 拉高电平 延时 15 60ms DQ 为低电平 返回 入口 基于 51 单片机的温度测量控制系统设计说明 20 图 5 4 DS18B20 写字节子程序流程图 图 5 5 DS18B20 读字节子程序流程图 5 3 中断模块 中断采用 T0 方式 1 初始值定时为 50ms 中断模块需调用两个子程序 读温度值子程序 定时读取温度值 实时更新温度值 记录温度值子程序 定时记录温度值 供查询使用 把这两个子程序放在中断的原因是 不会因为调整报警温度或查询历史温度值而停止 更新温度值和记录温度值 中断模块流程图 基于 51 单片机的温度测量控制系统设计说明 21 Y N 图 5 6 中断模块流程图 5 4 温度设定 报警模块 按加减键分别上调和下调设定报警温度值 当实时温度值超过设定值时驱动蜂鸣器发 声 并点亮发光二极管 实现声光报警 温度设定 报警模块流程图如下 中断入口 定时器重置初值 计数值加 1 1 秒 显示温度值 读温度值 中断返回 基于 51 单片机的温度测量控制系统设计说明 22 N Y N Y N Y Y N N Y Y N Y N N Y 图 5 7 温度设定 报警模块流程图 入口 功能键按下 延时消抖 确认按下 显示设定温度值 加键按下 延时消抖 确认按下 减键按下 延时消抖 确认按下 温度超出设定值 取消报警 判断退出界面 返回 上调设定值 下调设定值 声光报警 基于 51 单片机的温度测量控制系统设计说明 23 5 5 液晶显示模块 LCD使用之前须对它进行初始初始化 初始化过程如下 1 清屏 将显示缓冲区DDRAM的内容全部写入空格 ASCII20H 2 功能设置 3 开 关显示设置 控制显示的开关 当D 1时显示 D 0时不显示 控制光标开关 当C 1时光标显示 C 0时光标不显示 控制字符是否闪烁 当B 0时字符闪烁 B 0时字 符不闪烁 4 输入方式设置 初始化过程 1 延时15ms 2 写指令38H 不检测忙信号 3 延时5 ms 4 写指令38H 不检测忙信号 5 延时5ms 6 写指令38H 不检测忙信 号 7 以后每次写指令 读 写数据操作之前均需检测忙信号 8 写指令38H 显示模式设置 9 写指令08H 显示关闭 10 写指令01H 显示清屏 11 写指 令06H 显示光标移动设置 12 写指令0CH 显示开及光标设置 本系统中液晶显示器的初始化程序流程如图所示 开始 清除 LCD 显 示内容 模拟设置 移动光标 显示开关光 标 初始化完成 图 5 8 LCD 初始化程序流程图 基于 51 单片机的温度测量控制系统设计说明 24 6 系统调试与测试 6 1 硬件调试 在本温度控制电路的设计调试中遇到了很多的问题 回想这些问题只要认真多思考 都是可以避免的 以下为主要的问题 1 开始调试时发现温度芯片DS18B20发热很厉害 后来发现电路没有给它加上拉电 阻 加上上拉电阻后问题就解决了 2 单片机 31脚 应接高电平 是内外存储器选择引脚 当信号为 EAEAEA 低电平时 无论单片机是否有内部程序存储器在 只访问外部程序存储器 当信号为 EA 高电平时 先访问内部程序存储器 当程序计数器PC超过片内程序存储器容量时 将自 动转向外部程序存储器 本设计使用单片机的内部程序存储器 故应接高电平 EA 6 2 软件调试 在本次设计中 软件部分相对比较简单 软件调试过程中主要是解决好以下几个问 题 1 对软件总体设计流程有一个清晰的规划 2 合理分配单片机的引脚及内部寄存器 3 在编写液晶显示 DS18B20时要严格按照他们的时序操作 基于 51 单片机的温度测量控制系统设计说明 25 6 总结 本设计使用的温度控制器结构简单 测温准确 具有一定的实际应用价值 该智能 温度控制器只是DS18B20在温度控制领域的一个简单实例 还有许多需要完善的地方 例 如可以将测得的温度通过单片机与通讯模块相连接 以手机短消息的方式发送给用户 使用户能够随时对温度进行监控 此外 还能广泛地应用于其他一些工业生产领域 如 建筑 仓储等行业 本温度控制系统可以应用于多种场合 像的温度 育婴房的温度 水温的控制 用户可灵活选择本设计的用途 有很强的实用价值 基于 51 单片机的温度测量控制系统设计说明 26 参考文献 1 李朝青 单片机原理及接口技术 简明修订版 M 北京 北京航空航天大学出版 社 1998 2 李广弟 单片机基础 M 北京 北京航空航天大学出版社 1994 3 金伟正 单线数字温度传感器的原理与应用 J 电子技术与应用 2000 4 李 钢 1 Wire 总线数字温度传感器 DS18B20 原理及应用 现代电子技术 J 2005 5 苏麟祥 DS1820 数字温度传感器的功能特性及其应用 世界采矿快报 2000 9 6 沙占友等 智能化集成温度传感器原理与应用 北京 机械工业出版社 2002 7 阎石 数字电子技术基础 第三版 M 北京 高等教育出版社 1989 基于 51 单片机的温度测量控制系统设计说明 27 附录 1 原理图 12 Y1 12M 30pF C 1 30pF C 2 GND XTAL1 XTAL2 100K R 1 k ey1 1uF C 3 VC C GND R ST P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 R ST 9 R XD P3 0 10 TXD P3 1 11 INTO0 P3 2 12 INTO1 P3 3 13 T0 P3 4 14 T1 P3 5 15 W R P3 6 16 R D P3 7 17 XTAL2 18 XTAL1 19 GND 20 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE 30 EA 31 P0 7 32 P0 6 33 P0 5 34 P0 4 35 P0 3 36 P0 2 37 P0 1 38 P0 0 39 VCC 40 U1 M C U R ST XTAL1 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 GND VC C XTAL2 PSEN P3 7 P3 6 P3 5 P3 4 P3 3 P3 2 P3 1 P3 0 P2 7 P2 6 P2 5 P2 4 P2 3 P2 2 P2 1 P2 0 D1 1K R 4 Vin 1 Gnd 2 5V 3 LM 7805 GND1uF C 5 GND VC C GND GND VCC VO RS RW E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BG VCC BG GND LC D 1602 VC CVC C GND GND Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 RS RW E VC C E B C LQ5 GND 1K R 3 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 R S R W E ALE VC C 12 1 2 P2 DC 9V P1 3 GND DQ VCC U218B 20 GND P1 4 4 7K R 5 VC C k ey2 k ey3 P3 4 P3 5 k ey4 k ey5 GND P3 6 P3 7 R P1 1 2 3 4 5 6 7 8 9 P1 10k D3 1K R 12 D2 1K R 13 VC C 基于 51 单片机的温度测量控制系统设计说明 28 附录 2 程序代码 名称 18B20 温度测量报警 内容 在 LCD1602 第一行可以显示当前温度 第二行显示设定的温度区间 超过此温度区间 蜂鸣器报警 温度区间可以通过用户按键设置 include 包含头文件 一般情况不需要改动 头文件包含特殊功能寄存器的定义 include include define uchar unsigned char define uint unsigned int 定义端口 sbit led1 P1 0 温度超出范围指示灯 sbit led2 P1 1 sbit buzzer P1 3 蜂鸣器引脚 sbit DQ P1 4 ds18b20 端口 sbit RS P2 4 1602 数据 命令选择端 H 数据寄存器 L 指令寄存器 sbit RW P2 5 1602 读 写选择端 sbit E P2 6 1602 使能信号端 sbit key1 P3 4 用户按键 sbit key2 P3 5 sbit key3 P3 6 sbit key4 P3 7 全局变量 int temp 测得温度 char temp max 40 temp min 10 设定的温度 char TempH TempL uchar flag get num 0 uchar code tab 0 1 2 3 4 5 6 7 8 9 液晶显示 uchar tab1 min 010 max 040 液晶第二行显示内容 基于 51 单片机的温度测量控制系统设计说明 29 uchar str 8 延时函数 void delay1 uint i 短延时函数 while i void delay uint z 长延时函数 uint x y for x z x 0 x for y 110 y 0 y DS18B20 初始化 void Init DS18B20 void uchar x 0 DQ 0 单片机将 DQ 拉低 delay1 480 精确延时 大于 480us DQ 1 拉高总线 等待 delay1 10 x DQ 稍做延时后 如果 x 0 则初始化成功 x 1 则初始化失败 delay1 5 DS18B20 读一个字节 uchar ReadOneChar void DS18B20 读一个字节 uchar i 0 uchar dat 0 for i 8 i 0 i DQ 0 给脉冲信号 dat 1 DQ 1 给脉冲信号 主机在读时隙期间必须释放总线 if DQ dat 0 x80 delay1 5 基于 51 单片机的温度测量控制系统设计说明 30 return dat DS18B20 写一个字节 void WriteOneChar uchar dat DS18B20 写一个字节 uchar i 0 for i 8 i 0 i DQ 0 DQ dat 取最低位 delay1 5 DQ 1 dat 1 左移 delay1 5 DS18B20 读取温度 uint ReadTemperature void DS18B20 读取温度 uchar a 0 uint b 0 uint t 0 Init DS18B20 DS18B20 初始化 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneCh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2027学年随州市中考数学押题试卷(含答案解析)
- 2026-2027学年丹东市中考数学模拟预测题(含答案解析)
- 2026年阿坝县带编教师招聘考试备考题库及答案解析
- 2026年大关县带编教师招聘考试备考试题及答案解析
- 2026年饶平县带编教师招聘考试备考试题及答案解析
- 兰州大学《心理测量与评估》期末考试试卷(含答案)
- 2026年南岔县带编教师招聘考试备考题库及答案解析
- 2026年汝南县带编教师招聘考试参考题库及答案解析
- 2026福建国智瑞供应链管理有限公司招聘1人笔试备考题库及答案详解
- 2026年全椒县带编教师招聘考试模拟试题及答案解析
- TJSTJXH5-2022高延性混凝土加固技术规程
- DB31∕T 618-2022 电网电能计量装置配置技术规范
- GB/T 21387-2025供水系统用轴流式止回阀
- 设备除锈与刷漆标准规范手册
- 铁路工务安全教育课件
- 前列腺疾病课件
- 2025-2030年中国药食同源行业市场现状调查及未来趋势研判报告
- 装修电话营销培训
- 2025年澳洲amc9年级竞赛题库及答案
- 晋江大神合同
- 合同支付条款补充协议
评论
0/150
提交评论