基于DS18B20的温度采集显示系统的设计.doc_第1页
基于DS18B20的温度采集显示系统的设计.doc_第2页
基于DS18B20的温度采集显示系统的设计.doc_第3页
基于DS18B20的温度采集显示系统的设计.doc_第4页
基于DS18B20的温度采集显示系统的设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

目录 1 1 引言引言 1 1 1 11 1 绪论绪论 1 1 21 2 课程设计任务书课程设计任务书 1 2 2 设计方案设计方案 4 4 3 3 硬件设计方案硬件设计方案 4 4 3 13 1 最小系统的设计最小系统的设计 4 3 23 2 LEDLED 发光报警电路发光报警电路 6 3 33 3 DS18B20DS18B20 的简介及在本次设计中的应用的简介及在本次设计中的应用 6 3 3 1 DS18B20 的外部结构及管脚排列 6 3 3 2 DS18B20 的工作原理 7 3 3 3 DS18B20 的主要特性 8 3 3 4 DS18B20 的测温流程 9 3 3 5 DS18B20 与单片机的连接 9 3 43 4 报警温度的设置报警温度的设置 9 3 53 5 数码管显示数码管显示 10 3 5 1 数码管工作原理 10 3 5 2 数码管显示电路 12 3 63 6 硬件电路总体设计硬件电路总体设计 12 4 4 软件设计方案软件设计方案 1313 4 14 1 主程序介绍主程序介绍 13 4 1 1 主程序流程图 13 4 1 2 主流程的 C 语言程序 14 4 24 2 部分子程序部分子程序 18 4 2 1 DS18B20 复位子程序 18 4 2 2 写 DS18B20 命令子程序 19 4 2 3 读温度子程序 21 4 2 4 计算温度子程序 23 4 2 5 显示扫描过程子程序 24 5 5 基于基于 DS18B20DS18B20 的温度采集显示系统的调试的温度采集显示系统的调试 2626 6 6 收获和体会收获和体会 2828 7 7 参考文献参考文献 2929 课程设计用纸 第 1 页 1 引言 1 11 1 绪论绪论 随着科学技术的发展 温度的实时显示系统应用越来越广泛 比如空调遥控器上当 前室温的显示 热水器温度的显示等等 同时温度的控制在各个领域也都有积极的意义 采用单片机对温度进行控制不仅具有控制方便 简单 灵活性大等特点 而且还可以大 幅度提高被控温度的技术指标 本文介绍了基于 DS18B20 的温度实时采集与显示系统的设计与实现 设计中选取单 片机 AT89C51 作为系统控制中心 数字温度传感器 DS18B20 作为单片机外部信号源 实 现温度的实时采集 并且用精度较好的数码管作为温度的实时显示模块 利用单片机程 序来完成对 DS18B20 与 AT89C51 的控制 最终实现温度的实时采集与显示 采用单片机 对温度进行控制不仅具有控制方便 简单 灵活性大等特点 而且还可以大幅度提高被 控温度的技术指标 1 21 2 课程设计任务书课程设计任务书 微机原理与接口技术 课程设计任务书 二 题目 基于 DS18B20 的温度采集显示系统的设计 一 课程设计任务 传统的温度传感器 如热电偶温度传感器 具有精度高 测量范围大 响应快等优点 但由于其输 出的是模拟量 而现在的智能仪表需要使用数字量 有些时候还要将测量结果以数字量输入计算机 由于要将模拟量转换为数字量 其实现环节就变得非常复杂 硬件上需要模拟开关 恒流源 D A转换 器 放大器等 结构庞大 安装困难 造价昂贵 新兴的IC温度传感器如DS18B20 由于可以直接输出 温度转换后的数字量 可以在保证测量精度的情况下 大大简化系统软硬件设计 这种传感器的测温 范围有一定限制 大多在 50 120 多适用于环境温度的测量 DS18B20可以在一根数据线上挂 接多个传感器 只需要三根线就可以实现远距离多点温度测量 本课题要求设计一基于DS18B20的温度采集显示系统 该系统要求包含温度采集模块 温度显示模 块 可用数码管或液晶显示 和键盘输入模块及报警模块 所设计的系统可以从键盘输入设定温度值 当所采集的温度高于设定温度时 进行报警 同时能实时显示温度值 二 课程设计目的 通过本次课程设计使学生掌握 1 单总线温度传感器 DS18B20 与单片机的接口及 DS18B20 的 课程设计用纸 第 2 页 编程 2 矩阵式键盘的设计与编程 3 经单片机为核心的系统的实际调试技巧 从而提高学生对微 机实时控制系统的设计和调试能力 三 课程设计要求 1 要求可以从键盘上接收温度设定值 当所采集的温度高于设定值时 进行报警 可以是声音报 警 也可是光报警 2 能实时显示温度值 要求保留一位小数 四 课程设计内容 1 人机 界面 设计 2 单片机端口及外设的设计 3 硬件电路原理图 软件清单 五 课程设计报告要求 报告中提供如下内容 1 目录 2 正文 1 课程设计任务书 2 总体设计方案 3 针对人机对话 界面 要有操作使用说明 以便用户能够正确使用本产品 4 硬件原理图 以便厂家生成产 可手画也可用 protel 软件 5 程序流程图及清单 子程序不提供清单 但应列表反映每一个子程序的名称及其功能 6 调试 运行及其结果 3 收获 体会 4 参考文献 六 课程设计进度安排 周次工作日工作内容 1 布置课程设计任务 查找相关资料 2 熟悉相关芯片及使用方法 3 完成总体设计方案 4 画出硬件原理图及程序流程图 第 一 周 5 完成硬件接线 编写程序并调试 第 1 编写程序并调试 课程设计用纸 第 3 页 2 编写程序并调试 3 编写程序并调试及准备课程设计报告 4 完成课程设计报告并于下午两点之前上交 二 周 5 答辩 本课题共需两周时间 七 课程设计考核办法 本课程设计满分为 100 分 从课程设计平时表现 课程设计报告及课程设计答辩三个方面进行评 分 其所占比例分别为 20 40 40 课程设计用纸 第 4 页 2 设计方案 本次的课题设计要求是基于 DS18B20 的温度采集显示系统 该系统要求包含温度采 集模块 温度显示模块和键盘输入模块及报警模块 其中温度采集模块所选用的是 DS18B20 数字温度传感器进行温度采集 温度显示模块用的四位八段共阴极数码管进行温 度的实时显示 键盘输入模块采用的是按钮进行温度的设置 报警模块用的是 LED 灯光 报警 具体方案见图 2 1 AT89C51 P0 P2 P2 P1 P3 最小系统 蜂鸣器报警 段选 四位共阴极数码管 显示温度 报警温度的设定 DS18B20 温度传 感器 位选 图 2 1 总体设计方案 3 硬件设计方案 3 13 1 最小系统的设计最小系统的设计 本次设计单片机采用的是 AT89C51 系列的 它由一个 8 位中央处理器 CPU 4k 字 节 Flash 闪速存储器 128 字节内部 RAM 32 个 I O 口线 两个 16 位定时 计数器 一 个串行 I O 口及中断系统等部分组成 其结构如图 3 1 所示 课程设计用纸 第 5 页 图 3 1 AT89C51 系列单片机引脚排列 图 3 2 单片机最小系统接线图 图 3 2 为单片机最小系统的接线图 其中 C1 C2 均选用 20PF 的 晶振 X1 用的是 XTAL1 XTAL2 RST EA 课程设计用纸 第 6 页 11 0592MHZ 的 晶振电路中外接电容 C1 C2 的作用是对振荡器进行频率微调 使振荡 信号频率与晶振频率一致 同时起到稳定频率的作用 一般选用 10 30pF 的瓷片电容 并且电容离晶振越近越好 晶振离单片机越近越好 晶振的取值范围一般为 0 24MHz 常用的晶振频率有 6MHz 12 MHz 11 0592 MHz 24 MHz 等 晶振的振荡频率直接影 响单片机的处理速度 频率越大处理速度越快 图 3 2 中 C3 R1 及按键构成了最小系统中的复位电路 本次设计选择的是手动按钮 复位 手动按钮复位需要人为在复位输入端 RST 上加入高电平 一般采用的办法是在 RST 端和正电源 Vcc 之间接一个按钮 当人为按下按钮时 则 Vcc 的 5V 电平就会直接 加到 RST 端 由于人的动作再快也会使按钮保持接通达数十毫秒 所以 完全能够满足 复位的时间要求 在单片机最小系统中还要将 EA 的非接高电平 如图 3 2 也有体现出来 3 23 2 LEDLED 发光报警电路发光报警电路 图 3 3 LED 发光报警电路 图 3 3 为 LED 报警电路的接法 其中一根线接单片机的 8 号 P1 7 口 另外一根接地 当温度超过预设温度值时 LED 灯被接通发光报警 3 33 3 DS18B20DS18B20 的简介及在本次设计中的应用的简介及在本次设计中的应用 3 3 1 DS18B20 的外部结构及管脚排列 DS18B20 的管脚排列如图 3 4 所示 DS18B20 引脚定义 1 DQ 为数字信号输入 输出端 2 GND 为电源地 3 VDD 为外接供电电源输入端 在寄生电源接线方式时接地 P1 7 课程设计用纸 第 7 页 图 3 4 DS18B20 的引脚排列及封装 3 3 2 DS18B20 的工作原理 DS18B20 的读写时序和测温原理与 DS1820 相同 只是得到的温度值的位数因分辨率 不同而不同 且温度转换时的延时时间由 2s 减为 750ms DS18B20 测温原理如图 3 5 所 示 图中低温度系数晶振的振荡频率受温度影响很小 用于产生固定频率的脉冲信号送 给计数器 1 高温度系数晶振随温度变化其振荡率明显改变 所产生的信号作为计数器 2 的脉冲输入 计数器 1 和温度寄存器被预置在 55 所对应的一个基数值 计数器 1 对低 温度系数晶振产生的脉冲信号进行减法计数 当计数器 1 的预置值减到 0 时 温度寄存 器的值将加 1 计数器 1 的预置将重新被装入 计数器 1 重新开始对低温度系数晶振产生 的脉冲信号进行计数 如此循环直到计数器 2 计数到 0 时 停止温度寄存器值的累加 此时温度寄存器中的数值即为所测温度 图中的斜率累加器用于补偿和修正测温过程中 的非线性 其输出用于修正计数器 1 的预置值 课程设计用纸 第 8 页 斜率累加器 预置 比较 计数器 1低温度系数晶振 0温度寄存器 计数器 2高温度系数晶振 0 预置 加 1 LSB 置位 清除 停止 图 3 5 DS18B20 测温原理图 3 3 3 DS18B20 的主要特性 1 适应电压范围更宽 电压范围 3 0 5 5V 在寄生电源方式下可由数据线供电 2 独特的单线接口方式 DS18B20 在与微处理器连接时仅需要一条口线即可实现 微处理器与 DS18B20 的双向通讯 3 DS18B20 支持多点组网功能 多个 DS18B20 可以并联在唯一的三线上 实现 组网多点测温 4 DS18B20 在使用中不需要任何外围元件 全部传感元件及转换电路集成在形如 一只三极管的集成电路内 5 温范围 55 125 在 10 85 时精度为 0 5 6 可编程的分辨率为 9 12 位 对应的可分辨温度分别为 0 5 0 25 0 125 和 0 0625 可实现高精度测温 7 在 9 位分辨率时最多在 93 75ms 内把温度转换为数字 12 位分辨率时最多在 750ms 内把温度值转换为数字 速度更快 8 测量结果直接输出数字温度信号 以 一线总线 串行传送给 CPU 同时可传送 CRC 校验码 具有极强的抗干扰纠错能力 课程设计用纸 第 9 页 9 负压特性 电源极性接反时 芯片不会因发热而烧毁 但不能正常工作 3 3 4 DS18B20 的测温流程 初始化 DS18B20 跳过 ROM 匹配 温度变换延时 1S 跳过 ROM 匹配 读暂存器转换成显示码数码管显示 图 3 6 DS18B20 的测温流程图 3 3 5 DS18B20 与单片机的连接 图 3 7 DS18B20 与单片机的连接电路图 如上图为 DS18B20 温度传感器与单片机之间的接法 其中 2 号接单片机的 17 号 P3 7 接口 DS18B20 通过 P3 7 口将采集到的温度实时送入单片机中 3 43 4 报警温度的设置报警温度的设置 P3 7 课程设计用纸 第 10 页 图 3 8 报警温度的设置电路 图 3 8 为报警温度的设置电路 其中 K1 K2 K3 分别接到单片机的 P2 5 P2 6 P2 7 口 其中 K1 用于报警温度设定开关 K2 用于报警温度的设置时候的加温度 每次加一 K3 用于报警温度的设置时的减温度 每次减一 实现了报警温度的手动设置 3 53 5 数码管显示数码管显示 3 5 1 数码管工作原理 图 3 9 数码管的引脚排列及结构 图 3 9 为数码管的外形及引脚排列和两种接法 共阴极和共阳极 的结构图 共阳 极数码管的 8 个发光二极管的阳极 二极管正端 连接在一起 通常 公共阳极接高电 平 一般接电源 其它管脚接段驱动电路输出端 当某段驱动电路的输出端为低电平时 则该端所连接的字段导通并点亮 根据发光字段的不同组合可显示出各种数字或字符 P2 5 P2 6 P2 7 课程设计用纸 第 11 页 此时 要求段驱动电路能吸收额定的段导通电流 还需根据外接电源及额定段导通电流 来确定相应的限流电阻 共阴极数码管的 8 个发光二极管的阴极 二极管负端 连接在一起 通常 公共阴 极接低电平 一般接地 其它管脚接段驱动电路输出端 当某段驱动电路的输出端为高 电平时 则该端所连接的字段导通并点亮 根据发光字段的不同组合可显示出各种数字 或字符 此时 要求段驱动电路能提供额定的段导通电流 还需根据外接电源及额定段 导通电流来确定相应的限流电阻 要使数码管显示出相应的数字或字符 必须使段数据口输出相应的字形编码 字型 码各位定义为 数据线 D0 与 a 字段对应 D1 与 b 字段对应 依此类推 如使用共阳 极数码管 数据为 0 表示对应字段亮 数据为 1 表示对应字段暗 如使用共阴极数码管 数据为 0 表示对应字段暗 数据为 1 表示对应字段亮 如要显示 0 共阳极数码管的 字型编码应为 11000000B 即 C0H 共阴极数码管的字型编码应为 00111111B 即 3FH 依此类推 可求得数码管字形编码如表 3 5 所示 表 3 5 数码管字符表 共阴顺序小数点暗共阴逆序小数点暗 显示数字 Dp g f e d c b a 16 进制 a b c d e f g Dp 16 进制 共阳顺序小 数点亮 共阳顺序小 数点暗 00 0 1 1 1 1 1 13FH 1 1 1 1 1 1 0 0 FCH40HC0H 10 0 0 0 0 1 1 006H 0 1 1 0 0 0 0 0 60H79HF9H 20 1 0 1 1 0 1 15BH 1 1 0 1 1 0 1 0 DAH24HA4H 30 1 0 0 1 1 1 14FH 1 1 1 1 0 0 1 0 F2H30HB0H 40 1 1 0 0 1 1 066H 0 1 1 0 0 1 1 0 66H19H99H 50 1 1 0 1 1 0 16DH 1 0 1 1 0 1 1 0 B6H12H92H 60 1 1 1 1 1 0 17DH1 0 1 1 1 1 1 BEH02H82H 课程设计用纸 第 12 页 0 70 0 0 0 0 1 1 107H 1 1 1 0 0 0 0 0 E0H78HF8H 80 1 1 1 1 1 1 17FH 1 1 1 1 1 1 1 0 FEH00H80H 90 1 1 0 1 1 1 16FH 1 1 1 1 0 1 1 0 F6H10H90H 显示的具体实施是通过编程将需要显示的字型码存放在程序存储器的固定区域中 构成显示字型码表 当要显示某字符时 通过查表指令获取该字符所对应的字型码 3 5 2 数码管显示电路 课程设计用纸 第 13 页 图 3 10 四位八段数码管动态显示电路 图 3 10 为本次设计所用到的四位八段数码管动态显示 其中段选接到单片机的 P0 口 位选接到单片机的 P2 口的低四位 其中 P0 口也接的有上拉电阻 图中未标示出来 会 在下面的总体电路中标示出来 采用的是动态显示方式 3 63 6 硬件电路总体设计硬件电路总体设计 图 3 11 为本次设计的硬件总体设计图 其中利用 K1 K2 K3 处进行报警温度的设置 然后有 DS18B20 进行实时温度采集 并在数码管上同步显示 若采集到的温度达到或者 超过预设的报警温度 则 LED 灯会发光报警 若低于该报警温度 则不会报警 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 P2 0 P2 1 P2 2 P2 3 课程设计用纸 第 14 页 图 3 11 硬件电路总体设计图 4 软件设计方案 4 14 1 主程序介绍主程序介绍 4 1 1 主程序流程图 本次设计首先对程序进行初始化 然后打开报警温度设定开关 对报警温度进行设 定 确认设定值后 DS18B20 温度传感器进行温度采集并送入单片机中 单片机将传感 器所检测到的温度同步显示在数码管上 并且与设置的报警温度进行比较 若达到或者 超过报警温度时 LED 灯发光报警 如果没有达到 则继续进行温度采集 课程设计用纸 第 15 页 开始 初始化程序 进行报警温度设定 并确认 传感器采集温度 并实时显示判断 达到报警温度 灯光报警 Y 继续温 度采集 N 图 4 1 主程序流程图 4 1 2 主流程的 C 语言程序 main ALERT 0 LED 0 flag 0 sheding 30 disdata 0 xff 初始化端口 discan 0 xff for h 0 h 4 h 开机显示 8888 scan display h 8 课程设计用纸 第 16 页 ow reset 开机先转换一次 write byte 0 xcc skip ROM write byte 0 x44 发转换命令 for h 0 h1 温度显示界面 LED1 0 if display 1 display 2 10 sheding 比较 ALERT 1 报警 else ALERT 0 if flag 0 读出温度数据 work temp 处理温度数据 ge display 3 shi display 2 课程设计用纸 第 17 页 if K1 0 flag2 flag2 0 时为初始界面 flag2 1 时为设定 if flag2 1 flag2 2 if flag 0 flag 0 时 温度显示 flag 1 设定显示 flag 1 else if flag 1 flag 0 LED LED key delay 20 if flag 1 sheding 30 ge 0 shi 3 display 0 ge 个位设定好的温度用于显示 display 2 shi 十位 if flag 1 LED1 1 if K2 0 课程设计用纸 第 18 页 ge if ge 9 ge 0 shi if shi 9 shi 0 sheding ge shi 10 key delay 20 if K3 0 ge if ge 0 ge 9 shi if shi 0 shi 9 sheding ge shi 10 key delay 20 display 1 ge 个位设定好的温度用于显示 display 2 shi 十位 课程设计用纸 第 19 页 for h 0 h0 i DQ 1 nop nop DQ 0 nop nop nop nop nop 课程设计用纸 第 22 页 DQ val 最低位移出 delay 6 val val 2 右移 1 位 DQ 1 delay 1 4 2 3 读温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节 在读出时需进行 CRC 校验 验有错时 不进行温度数据的改写 其程序流程图如图 4 4 所示 DS18B20 的各个命令对时序的要求特别严格 所以必须按照所要求的时序才能达到预 期的目的 同时 要注意读进来的是高位在后低位在前 共有 12 位数 小数 4 位 整 数 7 位 还有一位符号位 课程设计用纸 第 23 页 DS18B20 复位 应答子程序 跳过 ROM 匹配命令 写入子程序 温度转换命令 写入子程序 显示子程序 延时 DS18B20 复位 应答子程序 跳过 ROM 匹配命令 写入子程序 读温度命令子程序 结束 图 4 4 读温度子程序 读温度的 C 语言程序如下 read temp ow reset write byte 0 xcc write byte 0 xbe 课程设计用纸 第 24 页 temp data 0 read byte temp data 1 read byte ow reset write byte 0 xcc write byte 0 x44 4 2 4 计算温度子程序 流程图如图 4 5 所示 开始 温度零下 温度值取补码置 标志 计算小数位温度 BCD 值 计算整数位温度 BCD 值 结束 N Y 图 4 5 计算温度子程序 计算温度的 C 语言程序如下 课程设计用纸 第 25 页 work temp uchar n 0 if temp data 1 127 temp data 1 255 temp data 1 temp data 0 255 temp data 0 n 1 负温度求补码 display 4 temp data 0 display 0 ditab display 4 display 4 temp data 0 display 3 display 4 100 display 1 display 4 100 display 2 display 1 10 display 1 display 1 10 if display 3 display 3 0 x0a if display 2 display 2 0 x0a 最高位为 0 时不显示 if n display 3 0 x0b 负温度是最高为显示 4 2 5 显示扫描过程子程序 流程图如图 4 6 所示 课程设计用纸 第 26 页 开始 送位选码 送段选码 延时 图 4 6 显示扫描过程子程序 显示扫描的 C 语言程序如下 scan char k for k 0 k 4 k 4 位 LED 扫描控制 disdata dis 7 display k if k 1 DIN 0 当 K 1 时 P0 7 为低电平显示小数点 discan scan con k 列扫描 delay 30 discan 0 xFF 课程设计用纸 第 27 页 5 基于 DS18B20 的温度采集显示系统的调试 运行后 按下 K1 键 开始进入报警温度设置过程 按下 K2 则温度增加一度 按下 K3 则温度减少一度 刚开始调试时 由于接的 LED 报警灯是高电平点亮 程序一运行时 AT89C51 给各个引脚都是高电平 所以 LED 灯一运行就会发光 违背了超过报警温度才发 光的要求 所以在子程序中加上了一条开始时将 LED 所连引脚置 0 的程序 之后运行过 程中又发现按下报警温度的设置键 K1 K2 K3 都不是很灵敏 有时按下的时间太短甚至会 没有反应 经过与小组成员讨论 发现是由于按键没有进行消抖 在显示扫描子程序中 加入了延时函数进行按键的消抖 这一问题也得到了解决 图 5 1 温度实时显示且未超过报警温度 25 摄氏度时 LED 没有发光报警 课程设计用纸 第 28 页 图 5 2 温度实时显示且超过实时报警温度 25 摄氏度 LED 发光报警 图 5 3 实时显示负温度 课程设计用纸 第 29 页 6 收获和

温馨提示

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

评论

0/150

提交评论