数字温度计大学论文设计.doc_第1页
数字温度计大学论文设计.doc_第2页
数字温度计大学论文设计.doc_第3页
数字温度计大学论文设计.doc_第4页
数字温度计大学论文设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

I 本科毕业设计 论文 学 院 四号黑体 专 业 四号黑体 学生姓名 四号黑体 班级学号 四号黑体 指导教师 四号黑体 二零壹零年六月 II 摘摘 要要 随着时代的进步和发展 单片机技术已经普及到我们生活 工作 科研各个领 域 已经成为一种比较成熟的技术 本文将介绍一种基于单片机控制的数字温度计 本温度计属于多功能温度计 可以设置上下报警温度 当温度不在设置范围内时 可以报警 随着人们生活水平的不断提高 单片机控制无疑是人们追求的目标之一 它所给 人带来的方便也是不可否定的 其中数字温度计就是一个典型的例子 但人们对它 的要求越来越高 要为现代人工作 科研 生活 提供更好的更方便的设施就需要 从数单片机技术入手 一切向着数字化控制 智能化控制方向发展 单片机在日用电子产品中的应用越来越广泛 温度则是人们日常生活中常常需 要测量和控制的一个量 科学技术的发展和检测技术的发展是密切相关的 现代化 的检测手段能达到的精度 灵敏度及测量范围等 在很大程度上决定了科学技术的 发展水平 本文作者采用AT89C2051单片机和温度传感器DS18B20从硬件和软件两方 面介绍了一款简易数字温度计的设计过程 并对硬件原理图和程序流程图作了简洁 的描述 数字温度计与传统的温度计相比 具有读数方便 测温范围广 测温准确 其输出温度采用数字显示 主要用于对测温比较准确的场所 关键词关键词 单片机 温度传感器 数字温度计 II ABSTRACT With the progress and development single chip technology has spread to our lives work research in various fields has become a relatively mature technology this article will introduce thesingle chip microcomputer based control of a digital thermometer the thermometer are multi purpose thermometer you can set upper and lower temperature alarm when the temperature range is not set it could be reported With the continuous improvement of people s living standard single chip control is undoubtedly one of the objectives pursued it gives people the convenience can not be negative in which digital thermometer is a typical example but it is what is required of it more and more people to work scientific research life and more convenient to provide better facilities will need to start from the number of single chip technology all toward the digital control intelligent control of direction Single chip electronic products in the daily application of more and more widely the temperature is often the need for daily life in a measurement and control volume Development of science and technology development and testing are closely related Modern methods to achieve the accuracy sensitivity and measurement range to a large extent determine the level of development of science and technology The author of this article using AT89C2051 MCU and temperature sensor DS18B20 from both hardware and software introduced a simple digital thermometer of the design process and schematic diagram of hardware and procedures were concise description of flow chart Digital thermometer with a traditional thermometer compared with a reading of convenience a wide range of temperature measurement temperature measurement accuracy the output of the temperature digital display mainly used for more accurate temperature measurement sites Key words single chip temperature sensor digital thermometer 1 目目 录录 摘摘 要要 I ABSTRACT II 1 1 绪绪 论论 1 1 1 功能要求与设计方案 1 1 1 1 功能要求 1 1 1 2 数字温度计设计方案 1 1 2 数字温度计的应用领域与所需器件 1 1 2 1 应用领域 1 1 2 2 设计中所需要的器件 2 2 2 数字温度计的结构原理器件介绍数字温度计的结构原理器件介绍 3 2 1系统功能原理及硬件组成 3 2 1 1 系统功能原理 3 2 1 2 系统硬件组成框图 3 2 1 3 原理图 如附录 A 所示 4 2 2 单片机 AT89C2051 功能介绍和应用 4 2 2 1 单片机 AT89C2051 简介 4 2 2 2 主要功能特性 4 2 2 3 单片机 AT89C2051 引脚功能说明 5 2 3 温度传感器 DS18B20 功能介绍 6 2 3 1DS18B20 的内部结构 6 2 3 2 DS18B20 主要特性与新性能 8 2 3 3 DS18B20 温度传感器的存储器与控制方法 8 2 4 74HC244 三态八缓冲器 驱动器的简介 10 3 3 数字温度计的程序流程图及程序设计数字温度计的程序流程图及程序设计 12 3 1 程序设计的一般步骤 12 3 2 程序流程图 12 3 2 1 DS18B20 温度计主程序流程图 12 3 2 2 读出温度子程序流程图 13 3 3 程序设计见附录 B 所示 16 总总 结结 17 参考文献参考文献 18 附录附录 A A 系统原理图系统原理图 19 附录附录 B B 系统程序系统程序 20 致致 谢谢 28 1 1 1 绪绪 论论 随着单片机技术的不断发展 单片机在日用电子产品中的应用越来越广泛 广泛应用于冰箱 空调器 粮仓等日常生活中温度的测量和控制 传统的温度计 有反应速度慢 读数麻烦 测量精度不高 误差大等缺点 本课程利用集成温度 传感器DS18B20设计并制作了一款基于AT89C51的4位数码管显示的数字温度计 其电路简单 软硬件结构模块化 易于实现 目前温度计的发展很快 从原始的玻璃管温度计发展到了现在的热电阻温度 计 热电偶温度计 数字温度计 电子温度计等等 目前的温度计中传感器是它 的重要组成部分 它的精度灵敏度基本决定了温度计的精度 测量范围 控制范 围和用途等 传感器应用极其广泛 目前已经研制出多种新型传感器 通过 数字温度计的设计 的设计过程 结合所学的课程 掌握目前自动化 仪表的一般设计要求 工程设计方法 开发及设计工具的使用方法 通过这一设 计实践过程 锻炼学生的动手能力和分析 解决问题的能力 积累经验 培养按 部就班 一丝不苟的工作和对所学知识的综合应用能力 1 1 1 1 功能要求与设计方案功能要求与设计方案 1 1 11 1 1 功能要求功能要求 数字式温度计要求测温范围在 50 到 110 度 精度误差在 0 1 度以内 4 位 LED 数码管直读显示 1 1 2 数字温度计设计方案 在单片机电路设计中 大多都是使用传感器 这是非常容易想到的 所以可 以采用一个温度传感器 DS18B20 本数字温度计设计采用美国 DALLAS 半导体公司 继 DS18B20 之后推出的一种改进型智能温度传感器 DS18B20 作为检测组件 温度 范围为 55 125 最大分辨率在 0 0625 DS18B20 可以直接读出温度被测温 度值 而且采用三线制与单片机相连 减少了外部的硬件电路 具有低成本和易 使用的特点 此传感器 可以很容易直接读取被测温度值 进行转换 就可以满 足设计要求 1 2 数字温度计的应用领域与所需器件 2 1 2 1 应用领域 随着人们生活水平的不断提高 单片机控制无疑是人们追求的目标之一 它 所给人带来的方便也是不可否定的 其中数字温度计就是一个典型的例子 但人 们对它的要求越来越高 要为现代人工作 科研 生活 提供更好的更方便的设 施就需要从数单片机技术入手 一切向着数字化控制 智能化控制方向发展 本设计所介绍的数字温度计与传统的温度计相比 具有读数方便 测温范围 广 测温准确 其输出温度采用数字显示 主要用于对测温比较准确的场所 或 科研实验室使用 该设计控制器使用单片机AT89S2051 测温传感器使用 DS18B20 用4位共阳极LED数码管以串口传送数据 实现温度显示 1 2 2 设计中所需要的器件 1 单片机 AT89C2051 一块 2 温度传感器 DS18B20 一块 3 驱动器 74HC244 一块 4 4位共阳极数码管 一块 5 30PF电容 2个 10uF 1个 6 9012三极管 四个 7 510欧电阻 八个 1K欧 四个 4 7K欧和6 8K欧各 一个 10K欧 二个 8 12MHZ晶振 一个 9 5V电源 一个 10 电路板 一块 3 2 数字温度计的结构原理器件介绍 本章主要是了解设计中的系统功能原理及硬件组成 熟悉单片机89C2051 传感器DS18B20等器件的引脚功能和工作状态 以及对硬件图的掌握 2 1系统功能原理及硬件组成 2 1 1 系统功能原理 该数字温度计利用DS18B20集成温度传感器及其接口电路完成温度的测量并对 该信号转换 然后送到单片机AT89C51中进行处理变换 最后将温度值显示在 D4 D3 D2 D1共 位七段码LED显示器上 2 1 2 系统硬件组成框图 系统以AT89C51单片机为控制核心 加上DS18B20测温电路 74HC244驱动 4 位温度数据显示电路以及外围电源 时钟电路等组成 系统组成框图如图2 1所 示 AT89C205 1 单 片 机 DS18B20 温度传感器 74HC244 驱动电路 显示电路 单片机复位 时钟振荡 图2 1 系统组成框图 4 在硬件上 DS18B20 与单片机的连接有两种方法 一种是 Vcc 接外部电源 GND 接地 I O 与单片机的 I O 线相连 另一种是用寄生电源供电 此时 UDD GND 接地 I O 接单片机 I O 无论是内部寄生电源还是外部供电 I O 口 线要接 5K 左右的上拉电阻 2 1 3 原理图 如附录A所示 2 2 单片机 AT89C2051 功能介绍和应用 2 2 1 单片机 AT89C2051 简介 Atmel公司的生产的AT89C2051是一个低电压 高性能CMOS 8位单片机 片内 含2k bytes的可反复擦写的只读Flash程序存储器和128 bytes的随机存取数据存 储器 RAM 器件采用ATMEL公司的高密度 非易失性存储技术生产 兼容标准 MCS 51指令系统 片内置通用8位中央处理器和Flash存储单元 功能强大 AT89C2051单片机可为您提供许多高性价比的应用场合 AT89C2051是一个功能强大的单片机 但它只有20个引脚 15个双向输入 输出 I O 端口 其中P1是一个完整的8位双向I O口 两个外中断口 两个16 位可编程定时计数器 两个全双向串行通信口 一个模拟比较放大器 同时AT89C2051的时钟频率可以为零 即具备可用软件设置的睡眠省电功能 系统的唤醒方式有RAM 定时 计数器 串行口和外中断口 系统唤醒后即进入继 续工作状态 省电模式中 片内RAM将被冻结 时钟停止振荡 所有功能停止工 作 直至系统被硬件复位方可继续运行 芯片示图2 2如下 5 图2 2 AT89C2051芯片示图 2 2 2 主要功能特性 1 兼容MCS51指令系统 2 2k可反复擦写 1000次 Flash ROM 3 15个双向I O口 4 6个中断源 5 两个16位可编程定时 计数器 6 2 7 6V的宽工作电压范围 7 时钟频率0 24MHz 8 128x8bit内部RAM 9 两个外部中断源 10 两个串行中断 11 可直接驱动LED 12 两级加密位 13 低功耗睡眠功能 14 内置一个模拟比较放大器 15 可编程UARL通道 16 软件设置睡眠和唤醒功能 2 2 3 单片机 AT89C2051 引脚功能说明 1 Vcc 电源 2 GND 接地 3 P1口 P1口是一组8位双向I O口 P1 2 P1 7提供内部上拉电阻 P1 0和 P1 1内部无上拉电阻 主要是考虑它们分别是内部精密比较器的同相输入端 AIN1 如果需要应在外部接上拉电阻 P1口输出缓冲器可吸收20mA电流并可直接驱动 LED 当P1口引脚写入 1 时可作输入端 当引脚P1 2 1 7用做输入并被外部拉 低时 它们将因内部的上拉电阻而输出电流 In 6 P1口还在Flash闪速编程及程序校验时接收代码数据 4 P3口 P3口的P3 0 P3 7是带有内部上拉电阻的7个双向I O口 P3 6没有 引出 它作为一个普通I O口但不可访问 但可作为固定输入片内比较器的输出 信号 P3口缓冲器可吸收20mA电流 当P3口写入 1 时 它们被内部上拉电阻 拉高并可作为输入端 作输入端时 被外部拉低的P3口将用上拉电阻输出电流 In P3口还用于实现AT89C2051特殊的功能 接收一些用于Flash闪速存储编 程及程序校验的控制信号 如下表2 1所示 表2 1 P3口特殊的功能 引脚口 功能特性 P3 0RXD 串行输入口 P3 1TXD 串行输出口 P3 2 INTO 外中断 0 P3 3 INT1 外中断 1 P3 4T0 定时 计数器 0 输入 P3 5T1 定时 计数器 1 输入 5 RST 复位输入 RST引脚一旦变成两个机器周期以上电平 所有的I O都 将复位到 1 高电平 状态 振荡器正在工作时 持续两个机器周期以上的 电平便可完全复位 每个机器周期为12个振荡时钟周期 6 XTAL1 振荡器反相放大器的及内部时钟发生器的输入端 7 XTAL2 振荡器反相放大器的输出端 2 3 温度传感器 DS18B20 功能介绍 现代化的检测手段能达到的精度 灵敏度及测量范围等 在很大程度上决定 了科学技术的发展水平 同时 科学技术的发展达到的水平越高 又为检测技术 传感器技术提供了新的前提手段 目前温度计的发展很快 从原始的玻璃管温度 计发展到了现在的热电阻温度计 热电偶温度计 数字温度计 电子温度计等等 目前的温度计中传感器是它的重要组成部分 它的精度灵敏度基本决定了温度计 的精度 测量范围 控制范围和用途等 传感器应用极其广泛 目前已经研制出 7 多种新型传感器 2 3 1 DS18B20的内部结构 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温 度传感器 与传统的热敏电阻等测温元件相比 它能直接读出被测温度 并且可 根据实际要求通过简单的编程实现9 12位的数字值读数方式 如内部结构图2 3 图2 3 内部结构图 DS18B20内部结构主要由四部分组成 64位光刻ROM 温度传感器 非挥发的 温度报警触发器TH和TL 配置寄存器 DS18B20的管脚排列如图2 4下 8 图2 4 DS18B20的管脚排列图 DQ为数字信号输入 输出端 GND为电源地 VDD为外接供电电源输入端 在寄 生电源接线方式时接地 2 3 2 DS18B20 主要特性与新性能 1 主要特性 1 一线通讯接口 2 电源范围 3 0V 5 5V 3 测温范围 10 125 4 精度 10 85 内为 0 5 5 可编程分辨率 9 12位 6 12位数据时转换时间750ms 最大值 7 负压特性 电源极性接反时 温度计不会因发热而烧毁 但不能正常工 作 2 3 3 DS18B20 温度传感器的存储器与控制方法 1 DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可 9 电擦除的E2RAM 后者存放高温度和低温度触发器TH TL和结构寄存器 暂存存储 器包含了8个连续字节 前两个字节是测得的温度信息 第一个字节的内容是温 度的低八位 第二个字节是温度的高八位 第三个和第四个字节是TH TL的易失 性拷贝 第五个字节是结构寄存器的易失性拷贝 这三个字节的内容在每一次上 电复位时被刷新 第六 七 八个字节用于内部计算 第九个字节是冗余检验字 节 分辨率设置表2 2 表2 2 DS18B20分辨率设置 R1 R0 分辨率 温度最大转换时间 00 9位 93 75ms 01 10位 187 5ms 10 11位 375ms 11 12位 750ms 根据DS18B20的通讯协议 主机控制DS18B20完成温度转换必须经过三个步骤 1 初始化 2 执行某个ROM指令 3 执行RAM内存指令 4 数据传输 2 DS18B20温度传感器的控制方法 在硬件上 DS18B20与单片机的连接有两种方法 一种是Vcc接外部电源 GND接地 I O与单片机的I O线相连 另一种是用寄生电源供电 此时UDD GND 接地 I O接单片机I O 无论是内部寄生电源还是外部供电 I O口线要接5K 左 右的上拉电阻 DS18B20有六条控制命令 如表2 3所示 表2 3 DS18B20六条控制命令 指 令 约定代码 操 作 说 明 温度转换 44H 启动DS18B20进行温度转换 10 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH TL字节 复制暂存器 48H 把暂存器的TH TL字节写到E2RAM中 重新调E2RAM B8H 把E2RAM中的TH TL字节写到暂存器TH TL字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU CPU对DS18B20的访问流程是 先对DS18B20初始化 再进行ROM操作命令 最 后才能对存储器操作 数据操作 DS18B20每一步操作都要遵循严格的工作时序 和通信协议 如主机控制DS18B20完成温度转换这一过程 根据DS18B20的通讯协 议 须经三个步骤 每一次读写之前都要对DS18B20进行复位 复位成功后发送 一条ROM指令 最后发送RAM指令 这样才能对DS18B20进行预定的操作 2 4 74HC244 三态八缓冲器 驱动器的简介 1 简要说明 244为三态输出的八组缓冲器和总线驱动器 其管脚图及功能表2 4如下示 表2 4 74HC244管脚图 引出端符号 1A1 1A4 2A1 2A4 输入端 11 1G 2G 三态允许端 低电平有效 1Y1 1Y4 2Y1 2Y4 输出端 2 逻辑图 如图2 5 图2 5 双列直插封装 3 极限值 电源电压 7V 输入电压 5 5V 输出高阻态时高电平电压 5 5V 工作环境温度 55 125 存储温度 65 150 12 3 数字温度计的程序流程图及程序设计数字温度计的程序流程图及程序设计 3 1 程序设计的一般步骤 程序设计就是指计算机完成某一具体工作任务时 必须按顺序执行一条条指 令 一般的程序设计过程大致可分3个步骤 1 确定计算方法 定出运算步骤和顺序 把运算过程画成框图 2 确定数据 包括工作单元的数量 分配存放单元 3 按所使用计算机的指令系统 把确定的运算顺序写成汇编语言程序 系统程序主要包括主程序 读出温度子程序 温度转换命令子程序 计算温 度子程序 显示数据刷新子程序等 3 2 程序流程图 3 2 1 DS18B20 温度计主程序流程图 主程序的主要功能是负责温度的实时显示 读出并处理 DS18B20 的测量温度 值 温度测量每 1s 进行一次 其程序流程图如图 3 1 所示 13 图 3 1 主程序流程图 3 2 2 读出温度子程序流程图 读出温度子程序的主要功能是读出 RAM 中的 9 字节 在读出时需要进行 CRC 校验 校验有错时不进行温度数据的改写 其程序流程图如图 3 2 所示 初始化 调用显示子程序 1S 到 初次上电 读出温度值温度计 算处理显示数据刷 新 发温度转换开始命令 N Y N Y 14 发 DS18B20 复位命 令 发跳过 ROM 命令 发温度转换开始命令 结束 图 3 2 读出温度子程序流程图 1 1 温度转换命令子程序流程图 温度转换命令子程序主要是发温度转换开始命令 当采用 12 位分辩率 时转换时间约为 750ms 在本程序设计中采用 1s 显示程序延时法等待转换的 完成 温度转换命令子程序流程图如图 3 3 所示 图 3 3 温度转换命令子程序流程图 Y 发 DS18B20 复位命令 发跳过 ROM 命令 发读取温度命令 读取操作 CRC 校验 9 字节完 CRC 校验正 确 移入温度暂存器 结束 N N Y 15 2 计算温度子程序流程图 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算 并进行温度值正负 的判定 其流程图如图 3 4 所示 图 3 4 计算温度子程序流程图 3 3 显示数据刷新子程序流程图 显示数据刷新子程序主要是对显示缓冲区中的显示数据进行刷新操作 当 最高显示位为 0 时将符号显示位移入下一位 程序流程图如图 3 5 所示 开始 温度零下 温度值取补码置 标 志 计算小数位温度 BCD 值 计算整数位温度 BCD 值 结束 置 标 志 N Y 16 图 3 5 显示数据刷新子程序流程图 3 3 程序设计见附录 B 所示 温度数据移入显示寄存器 十位数 0 百位数 0 十位数显示符号百 位数不显示 百位数显示数据 不显示符号 结束 N N Y Y 总结 17 总 结 经过将近四个月的单片机课程设计 终于完成数字温度计的设计 虽然没有 完全达到设计要求 但从心底里说 还是高兴的 因为这次设计真的让我长进了 很多 在本次设计的过程中 我发现很多的问题 单片机课程设计重点就在于软件 算法的设计 程序只有在经常的写与读的过程中才能提高 有好多的东西 只有 我们去试着做了 才能真正的掌握 只学习理论有些东西是很难理解的 更谈不 上掌握 从这次的课程设计中 使我意识到在以后的工作中 要理论联系实际 把所 学的理论知识用到实际当中 在这四周里我之所以能顺利的完成本次毕业论文的设计 是与很多人的帮助 和支持分不开的 本课程的设计是在张仁武老师的悉心指导下完成的 在此我非常感谢张仁武 老师在毕业设计过程中给予我的指导与帮助 感谢工程技术学院全体老师的教导 和培养 在此向各位老师致以最诚挚的谢意 同时也感谢同学给予我的帮助和支 持 由于时间和知识水平所限 论文中必然会有一些疏漏和不妥之处 恳请各位 老师和同学批评指正 学生 李大朋 攀枝花学院专科毕业论文 设计 参考文献 18 参考文献参考文献 1 张洪润 张亚凡 单片机原理及应用 北京 清华大学出版社 2 张百新 温度计的诞生和发展 濮阳教育学院学报 3 何立民 单片机应用技术选编 M 北京 北京航空航天大学出版社 2004 4 杨刚 周群 电子系统设计与实践 M 北京 电子工业出版社 2004 5 白泽生 用 MCS 51 单片机实现温度的检测 J 现代电子技术 2005 年第 10 期 1 3 页 6 张开生 郭国法 MCS 51 单片机温度控制系统的设计 J 微计算机信息 2005 第 21 期 68 69 页 7 张鹏 雄磊 姚东萍 分辨率可编程的一线总线数字温度计 DS18B20 及其应用 北京 交通大学现代通信研究所 8 王幸之 王雷 翟成等 单片机应用系统抗干扰技术 北京 航空航天大学出版社 9 康华光 电子技术基础 高等教育出版社 10 万福君 潘松峰等 单片机微机原理系统设计与应用 中国科学技术大学出版社 11 www e 12 13 14 15 16 17 攀枝花学院专科毕业论文 设计 附录 A 19 123456 A B C D 654321 D C B A Title NumberRevisionSize B Date 27 Mar 2007Sheet of File C Docum ents and Settings u My Documents 1 DdbDrawn By 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 20 RST P3 0 RXD P3 1 TXD XTAL2 XTAL1 P3 2 INT0 P3 3 INT1 P3 4 P3 5 GND P3 7 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 Vcc IA1 IA2 IA3 IA4 2A1 2A2 2A3 2A4 1Y1 1Y2 1Y3 1Y4 2Y1 2Y2 2Y3 2Y4 1 2 3 4 5 6 7 8 911 12 13 14 15 16 17 18 19 AT89C2051 74HC 244 DS1DS2 DS3DS4 VCC R2 47K R7 10K R8 10K R1 68K R3 1K R6 1K DS18B20 U1 Y1 12MH Z C1 30P C2 30P C3 VSS VCC VCC VCC 10U U2 U3 1 2 3 9012 a bf c g d e DPY 1 2 3 4 5 6 7 a b c d e f g 8 dp dp DS2 a bf c g d e DPY 1 2 3 4 5 6 7 a b c d e f g 8 dp dp DS3 a bf c g d e DPY 1 2 3 4 5 6 7 a b c d e f g 8 dp dp DS4 a bf c g d e DPY 1 2 3 4 5 6 7 a b c d e f g 8 dp dp DS1 9012 R 510 R4 1K 9012R5 1K 9012 a b c d e g f dp a b c d e g f dp a b c d e g f dp 附录附录 A A 系系 统原理图统原理图 20 附录附录 B B 系统程序系统程序 数字温度计程序清单 S1OK EQU 5FH TEMPUTER EQU 39H TEMPH EQU 5EH TEMPL EQU 5DH MS50 EQU 5CH SIGN EQU 5BH S1 BIT P1 0 S2 BIT P1 1 S3 BIT P1 2 S4 BIT P1 3 ORG 0000H LJMP MAIN 无条件转移 ORG 000BH LJMP TOIT ORG 0030H MAIN MOV SP 60H 主程序 栈顶地址 60H MOV TMOD 01H 定时器 T0 工作在方式 1 MOV TH0 3CH 定时时间 MOV TL0 0B0H SETB ET0 启动 T0 记数 SETB TR0 SETB EA 允许中断 MOV TEMPH 30 MOV TEMPL 9 MOV TEMPUTER 15 温度最始值 MOV S1OK 00H MOV SIGN 00H MOV 38H 0BH MOV 36H 0BH MOV 37H 0CH ACALL DISP 显示温度子程序 ACALL T1S 开机延时 主程序 START ACALL T12MS JB S1 NET1 位条件转移 JNB S1 位条件转移等待 INC SIGN 21 MOV A SIGN CJNE A 1 TIAO 比较之后转移 ACALL TIAOTL TIAO CJNE A 2 NET1 比较之后转移 MOV SIGN 0 ACALL TIAOTH NET1 MOV A S1OK CJNE A 1 START 比较之后转移 MOV A TEMPUTER SUBB A TEMPH 带借位相减 JNB ACC 7 ALEM 位条件转移 MOV A TEMPUTER SUBB A TEMPL 带借位相减 JB ACC 7 ALEM 位条件转移 SETB P2 1 P2 1 置 1 ACALL WENDU 调用 ACALL DISP 调用 MOV S1OK 00H AJMP START 无条件转移 ALEM MOV 36H 0CH MOV 37H 0CH MOV 38H 0CH CLR P2 1 清 0 ACALL DISP 调用 ACALL T1S LCALL WENDU 调用子程序 LCALL DISP 调用 MOV S1OK 00H SJMP START 无条件转移 TIAOTL MOV 50H TEMPUTER MOV 37H TEMPL ACALL BIN BCD 调用 ACALL DISP ACALL T12MS ACALL T12M ACALL T12MS ACALL T12MS MOV 36H 0AH MOV 37H 0AH MOV 38H 0AH ACALL DISP 调用 22 ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS JB S2 ADD1 位条件转移 ACALL T12MS JB S2 ADD1 位条件转移 JNB S2 位条件转移等待 INC TEMPL 加 1 MOV A TEMPL CJNE A 100 ADD1 比较之后转移 MOV TEMPL 0 ADD1 JB S3 ADD2 位条件转移 ACALL T12MS 调用 JB S3 ADD2 位条件转移 JNB S3 位条件转移等待 DEC TEMPL MOV A TEMPL CJNE A 00 ADD2 比较之后转移 MOV TEMPL 100 ADD2 JB S4 TIAOTL ACALL T12MS 调用 JB S4 TIAOTL 位条件转移 JNB S4 位条件转移等待 MOV TEMPUTER 50H LJMP START 无条件转移 秒定时中段 TOIT PUSH PSW 入栈指令 PUSH ACC MOV TH0 3CH MOV TL0 0B0H INC MS50 加 1 MOV A MS50 CJNE A 14H RETURN 比较之后转移 MOV S1OK 1 MOV MS50 00H RETURN POP ACC POP PSW 出栈指令 RETI 中断服务返回 温度总子程序 温度 ACALL INIT 1820 保护断点地址 ACALL RE CONFIG 调用 ACALL GET TEMPER 23 ACALL TEMPER COV RET 子程序返回 DS18B20 初始化程序 INIT 1820 SETB P2 0 P2 0 置 1 NOP 空操作指令 CLR P2 0 清 0 MOV R0 06BH MOV R1 03H TSR1 DJNZ R0 TSR1 延时 MOV R0 6BH DJNZ R1 TSR1 SETB P2 0 P2 0 置 1 NOP 空操作指令 NOP NOP MOV R0 25H TSR2 JNB P2 0 TSR3 位条件转移 DJNZ R0 TSR2 循环转移 LJMP TSR4 延时 TSR3 SETB 20H 1 置标志位 表示 DS1820 存在 LJMP TSR5 TSR4 CLR 20H 1 清标志位 表示 DS1820 不存在 LJMP TSR7 无条件转移 TSR5 MOV R0 06BH MOV R1 03H TSR6 DJNZ R0 TSR6 延时 MOV R0 6BH DJNZ R1 TSR6 TSR7 SETB P2 0 P2 0 置 1 RET 子程序返回 重新写 DS18B20 暂存存储器设定 值 RE CONFIG JB 20H 1 RE CONFIG1 若 DS18B20 存在 转 RE CONFIG1 RET 子程序返回 RE CONFIG1 MOV A 0CCH 发 SKIP ROM 命令 24 LCALL WRITE 1820 MOV A 4EH 发写暂存存储器命令 LCALL WRITE 1820 调用子程序 LCALL WRITE 1820 MOV A 1FH 选择 9 位温度分辨率 LCALL WRITE 1820 RET 子程序返回 读出转换后的温度值 GET TEMPER SETB P2 0 定时入口 LCALL INIT 1820 调用子程序 JB 20H 1 TSS2 位条件转移 RET 若 DS18B20 不存在则返回 TSS2 MOV A 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 调用子程序 MOV A 0BEH 发出读温度命令 LCALL WRITE 1820 调用子程序 LCALL READ 18200 调用子程序 MOV 37H A 将读出的温度数据保存 RET 子程序返回 写 DS18B20 的程序 WRITE 1820 MOV R2 8 CLR C 清 0 WR1 CLR P2 0 NOP 空操作指令 NOP NOP RRC A 将累加器 A 的内容连同进位位 C 一起循环 MOV P2 0 C MOV R3 35 DJNZ R3 循环转移等待 SETB P2 0 P2 0 置 1 NOP 空操作指令 DJNZ R2 WR1 循环转移 SETB P2 0 P2 0 置 1 RET 子程序返回 读 DS18B20 的程序 从 DS18B20 中读出两个字节的温度数据 READ 18200 MOV R4 2 将温度高位和低位 DS18B20 中读 RE00 MOV R2 8 25 RE01 CLR C 清 0 SETB P2 0 P2 0 置 1 NOP 空操作指令 NOP CLR P2 0 清 0 NOP NOP NOP SETB P2 0 P2 0 置 1 NOP 空操作指令 NOP MOV C P2 0 MOV R3 35 RE20 DJNZ R3 RE20 循环转移 RRC A 将累加器 A 的内容连同进位位 C 一起循环 DJNZ R2 RE01 循环转移 MOV R1 A DEC R1 寄存器 R1 内容减 1 结果乃送回原寄存器 DJNZ R4 RE00 循环转移 RET 子程序返回 将从 DS18B20 中读出的温度数据进行转换 TEMPER COV MOV A 0F0H ANL A 36H 舍去温度低位中小数点 SWAP A 将累加器 A 的高 低两半字节交换 MOV 37H A MOV 36H JNB ACC 3 TEMPER COV1

温馨提示

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

评论

0/150

提交评论