数字温度计设计实训报告.doc

上传人:jian****018 文档编号:9059715 上传时间:2020-04-02 格式:DOC 页数:32 大小:718KB
返回 下载 相关 举报
数字温度计设计实训报告.doc_第1页
第1页 / 共32页
数字温度计设计实训报告.doc_第2页
第2页 / 共32页
数字温度计设计实训报告.doc_第3页
第3页 / 共32页
点击查看更多>>
资源描述
西安航空职业技术学院 小系统设计实训报告 论文题目 智能温度计 所属系部 电子工程系 指导教师 潘晶莹 学生姓名 谭晓辉 学 号 09202126 程 创 学 号 09202204 专 业 电子信息工程技术 西安航空职业技术学院制 西安航空职业技术学院 小系统设计实训任务书 题目 智能温度计 任务与要求 1 查阅数字温度计设计相关资料 熟悉数字温度计设计的原 理 查阅A D转换及传感器相关知识 画出数字温度计原理图 并编写相 应 的源程序 2 使用8051单片机作为处理器 设计数字温度计设计 设定温 度最高值和最低值 若采集到的温度超过设定值 发出不同声音的报警 位 数码管进行循环显示 显示实际温度值 3 使用传感器采集室内温度参数 并进行A D转换后 送给单 片 机进行处理 4 可用按键设定上下限 当设定时显示设 定状态 设定完成 即显示实时温度值 5 并用喇叭报警 时间 2010 年 12 月 19 日 至 2010 年 12 月 31 日 共 2 周 所属系部 电子工程系 学生姓名 谭晓辉 学 号 09202126 程 创 学 号 09202204 专业 电子信息工程技术 指导教师 潘晶莹 西安航空职业技术学院制 摘要 温度的检测与控制是工业生产过程中比较典型的应用之一 随着传感器在 生活中的更加广泛的应用 利用新型数字温度传感器实现对温度的测试与控制 得到更快的开发 本文设计了一种基于 80C51 的温度检测及报警系统 该系统 可以方便的实现温度采集和显示 并可根据需要任意设定上下限报警温度 它 使用起来相当方便 具有精度高 量程宽 灵敏度高 体积小 功耗低等优点 适合于我们日常生活和工 农业生产中的温度测量 也可以当作温度处理模块 嵌入其它系统中 作为其他主系统的辅助扩展 该系统设计和布线简单 结构 紧凑 抗干扰能力强 在大型仓库 工厂 智能化建筑等领域的温度检测中有 广泛的应用前景 关键字 单片机 数字滤波 80C51 辅助扩展 目录 摘要 关键字 1 前言 1 1 1 课程设计的目的和意义 1 1 2 任务及要求 1 2 系统总体方案及硬件设计 2 2 1 系统总体方案设计 2 2 1 1 原理论述 2 2 1 2 原理框图 2 2 1 3 功能模块连接简介 3 2 2 系统硬件电路设计 3 2 2 1 单片机的选择 3 2 2 2 时钟电路设计 5 2 2 3 复位电路设计 6 2 2 3 报警电路 7 2 2 4 温度显示电路 7 2 2 5 温度传感器 7 3 软件设计 10 3 1 系统总体方案设计 10 3 2 程序设计 11 3 2 1 主程序 11 3 2 2 读出温度子程序 12 3 2 3 二进制转换 BCD 码命令子程序 12 3 2 4 计算温度子程序 13 3 2 5 温度数据显示子程序 13 4 实验仿真 13 5 系统调试 14 5 1 软件调试 14 6 课程设计体会 14 参考文献 16 附 1 源程序代码 17 附 2 系统电路图 2 元器件清单 1 使用说明 1 1 前言 最早的温度计是在 1593 年由意大利科学家伽利略 1564 1642 发明的 他 的第一只温度计是一根一端敞口的玻璃管 另一端带有核桃大的玻璃泡 后来 法国人布利奥在 1659 年制造的温度计 他把玻璃泡的体积缩小 并把测温物质 改为水银 这样的温度计已具备了现在温度计的雏形 荷兰人华伦海特在 1709 年利用酒精 在 1714 年又利用水银作为测量物质 制造了更精确的温度计 随着科学技术的发展和现代工业技术的需要 测温技术也不断地改进和提 高 由于测温范围越来越广 精度要求越来越高 根据不同的要求 又制造出 满足不同需要的测温仪器 本设计采用的是温度传感器 DS18B20 能直接读出 被测温度 并且可根据实际要求通过简单的编程实现 9 12 位的数字值读数方 式 1 1 课程设计的目的和意义 通过课程设计使我进一步熟悉了单片机的内部结构和工作原理 掌握了单 片机应用系统设计的基本方法和步骤 通过利用 MCS 51 单片机 理解单片机在 自动化装置中的作用以及掌握单片机的编程调试方法 通过设计一个简单的实 际应用输入控制及显示系统 掌握 protues 和 keil 以及各种仿真软件的使用 目前温度计的发展很快 从原始的玻璃管温度计发展到了现在的热电阻温 度计 热电偶温度计 数字温度计 电子温度计等等 温度计中传感器是它的 重要组成部分 它的精度 灵敏度基本决定了温度计的精度 测量范围 控制 范围和用途等 传感器应用极其广泛 目前已经研制出多种新型传感器 但是 作为应用系统设计人员需要根据系统要求选用适宜的传感器 并与自己设计的 系统连接起来 从而构成性能优良的监控系统 1 2 任务及要求 1 设计一个简单数字温度计 能够测量通常环境下的温度 能够实现零 下温度的测量 能够测量小数 2 使用传感器采集室内温度参数 并进行A D转换后 送给单片机进行处 理 3 可用按键设定上下限 当设定时显示设定状态 设定完成 即显示实时 温度值 4 并用喇叭报警 2 系统总体方案及硬件设计 2 1 系统总体方案设计 2 1 1 原理论述 由于本设计是测温电路 可以使用一只温度传感器 DS18B20 此传感器 可以很容易直接读取被测温度值 进行 A D 转换 将数据传入 80C51 单片机中 单片机处理后 通过 LED 显示出当前实测温度 通过长按按键 K1 时 可显现温 度上限 通过按键 K2 K3 分别实现对上限温度的加减 再次长按按键 K1 时 可 显示下限温度 通过 K2 K3 实现对下限温度的调整 当实测温度超过上限温度 值时 亮红灯并报警 当实测温度低于下限温度值时 黄灯亮并报警 2 1 2 原理框图 温度计电路设计总体设计框图如图 2 1 所示 控制器采用单片机 80C51 温度传感器采用 DS18B20 用四位 LED 数码管以并口传送数据实现温度显示 图 2 1 原理框图 主 控 器 件 复位电路 温度采集 按键电路 驱动电路 LED 显示 报警电路 时钟电路 2 1 3 功能模块连接简介 温度传感器的接口 2 连接单片机 P3 4 用于传送数据 接口 3 连接电源 接口 1 接地 数码管的段码输入端连接单片机的 P1 端口 公共端接 P3 0 P3 1 单 片机的 P0 端口接上拉电阻 时钟电路连接 XTAL 复位电路连接 RST 2 2 系统硬件电路设计 2 2 1 单片机的选择 单片 80C51 具有低电压供电和体积小等特点 四个端口只需要两个口就能 满足电路系统的设计需要 很适合便携手持式产品的设计使用系统可用二节电 池供电 80C51主要特性 与 MCS 51 单片机产品兼容 4K 字节在系统可编程 Flash 存储器 1000 次擦写周期 全静态工作 0Hz 33MHz 32 个可编程 I O 口线 2 个 16 位定时器 计数器 6 个中断源 全双工 UART 串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 灵活的 ISP 编程 4 0 5 5V 电压工作范围 单片机 80C51 的内部结构总框图 它可以划分为 CPU 存储器 并行口 串行口 定时 计数器和中断逻辑几个部分 80C51 外部引脚功能如图 2 2 所示 图 2 2 80C51 引脚图 本次设计需要注意的几个端口 P0 口 39 32 是一组 8 位漏极开路行双向 I O 口 也既地址 数据总 线复用口 可作为输出口使用时 每位可吸收电流的方式驱动 8 个 TTL 逻辑电 路 对端口写 1 可作为高阻抗输入输入端用 在访问外部数据存储器时 这 组口线分时转换地址 低 8 位 和数据总线复用 在访问期间激活内部上拉电 阻 在 Flash 编程时 PO 口接收指令字节 而在程序校验时 输出指令字节 校验时 要求接上拉电阻 P3 口 10 17 是一组带有内部上拉电阻的 8 位双向 I O 口 P1 的输 入缓冲级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对 P3 口写入 1 时 它们被内部上拉电阻拉高并可作为输出端口 作输出端口时 被外部拉低 的 P3 口将用上拉电阻输出电流 P3 口除可作为一般的 I O 口线外 更重要的 用途是它的第二功能 如表 2 2 1 1 所示 表 2 2 1 1 引脚功能表 Vpp 31 内部和外部程序存储器选择线 0 时访问外部 ROM EAEA 0000H FFFFH 1 时 地址 0000H 0FFFH 空间访问内部 ROM 地址 1000H FFFFH 空间访问外部 ROM 本次设计 接高电平 XTAL1 19 和 XTAL2 18 使用内部振荡电路时 用来接石英晶体和电 容 使用外部时钟时 用来输入时钟脉冲 RST VPD 9 复位信号输入端 AT89S51 接能电源后 在时钟电路作用 下 该脚上出现两个机器周期以上的高电平 使内部复位 第二功能是 VPD 即 备用电源输入端 当主电源 Vcc 发生故障 降低到低电平规定值时 V PD将为 RAM 提供备用电源 发保证存储在 RAM 中的信号不丢失 2 2 2 时钟电路设计 80C51 时钟有两种方式产生 即内部方式和外部方式 如图 2 4 所示 80C51 中有一个构成内部震荡器的高增益反向放大器 引脚 XTAL1 和 XTAL2 分 别是该放大器的输入端和输出端 这个放大器与作为反馈元件的片外石英或陶 瓷震荡器一起构成自激震荡器震荡电路如图 外接石英晶体 或陶瓷震荡器 及电容 C1 C2 接在放大器的震荡回路中构成并联震荡电路 对外接电容 C1 C2 虽然没有非常严格的要求 但电容的大小会轻微影响震荡频率的高低 震荡工作的稳定性 起震的难易程序及温度稳定性 如果使用石英晶体 推荐 使用 30pF 10pF 而如果使用陶瓷谐振器建议选择 40pF 10pF 用户还可以采 用外部时钟 采用外部时钟如图所示 在这种情况下 外部时钟脉冲接到 XTAL1 端 既内部时钟发生器的输入端 XTAL2 悬空 由于外部时钟信号是通过 一个 2 分频的触发器后作为内部时钟信号的所以外部时钟的占空比没有特殊要 求 但最小高电平持续的时间和最大低电平持续的时间应符合产品技术条件的 要求 本次设计采用内部震荡电路 瓷片电容采用 30P 晶振采用 12MHZ 图 2 4 震荡电路 2 2 3 复位电路设计 容采用电容值为 10 的电解电容 具体连接电路如图 2 5 所示 单片机系 统的复位电路在这里采用的是上电 按钮复位电路形式 其中电阻 R 采用 10K 的阻值 电 图2 5复位电路 2 2 3 报警电路 如图 2 6 所示 图 2 6 报警电路 2 2 4 温度显示电路 图 2 7 显示电路 四位共阳极数码管 能够显示小数和负温度 零下时 1 显示负号 2 2 5 温度传感器 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能 温度传感器 与传统的热敏电阻等测温元件相比 它能直接读出被测温度 并 且可根据实际要求通过简单的编程实现 9 12 位的数字值读数方式 DS18B20 的性能特点如下 独特的单线接口仅需要一个端口引脚进行通信 多个 DS18B20 可以并联在惟一的三线上 实现多点组网功能 无须外部器件 可通过数据线供电 电压范围为 3 0 5 5V I O C 64 位 ROM 和 单 线 接 口 高 速 缓 存 存储器与控制逻辑 温度传感 器 高温触发器 TH 低温触发器 TL 配置寄存 器 8 位 CRC 发生 器 Vdd 零待机功耗 温度以 9 或 12 位数字 用户可定义报警设置 报警搜索命令识别并标志超过程序限定温度 温度报警条件 的器件 负电压特性 电源极性接反时 温度计不会因发热而烧毁 但不能正 常工作 DS18B20 采用 3 脚 PR 35 封装或 8 脚 SOIC 封装 其内部结构框图如图 2 6 所示 图 2 6 DS18B20 原理图 64 位 ROM 的结构开始 8 位是产品类型的编号 接着是每个器件的惟一的序 号 共有 48 位 最后 8 位是前面 56 位的 CRC 检验码 这也是多个 DS18B20 可 以采用一线进行通信的原因 温度报警触发器 TH 和 TL 可通过软件写入户报 警上下限 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失 性的可电擦除的 EERAM 高速暂存 RAM 的结构为 8 字节的存储器 结构如图 2 3 所示 头 2 个字节包含测得的温度信息 第 3 和第 4 字节 TH 和 TL 的拷贝 是 易失的 每次上电复位时被刷新 第 5 个字节 为配置寄存器 它的内容用于 确定温度值的数字转换分辨率 DS18B20 工作时寄存器中的分辨率转换为相应 精度的温度数值 该字节各位的定义 低 5 位一直为 1 TM 是工作模式位 用 于设置 DS18B20 在工作模式还是在测试模式 DS18B20 出厂时该位被设置为 0 用户要去改动 R1 和 R0 决定温度转换的精度位数 来设置分辨率 DS18B20 温度转换的时间比较长 而且分辨率越高 所需要的温度数据转换时 间越长 因此 在实际应用中要将分辨率和转换时间权衡考虑 温度传感器 18B20 汇编程序 采用器件默认的 12 位转化 最大转化时间 750 微秒 可以将 检测到的温度直接显示到 80C51 的两个数码管上 表 2 2 5 1 DS18B20 温度转换时间表 R1 R0 分辨率 位 温度最大转换时间 MS 0 0 9 93 75 0 1 10 187 5 1 0 11 375 1 1 12 750 高速暂存 RAM 的第 6 7 8 字节保留未用 表现为全逻辑 1 第 9 字节读 出前面所有 8 字节的 CRC 码 可用来检验数据 从而保证通信数据的正确性 当 DS18B20 接收到温度转换命令后 开始启动转换 转换完成后的温度值 就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1 2 字节 单片机可以通过单线接口读出该数据 读数据时低位在先 高位在后 数据格 式以 0 0625 LSB 式表示 当符号位 S 0 时 表示测得的温度值为正值 可以直接将二进制位转换为 十进制 当符号位 S 1 时 表示测得的温度值为负值 要先将补码变成原码 再计算十进制数值 表 2 是一部分温度值对应的二进制温度数据 DS18B20 完成温度转换后 就把测得的温度值与 RAM 中的 TH TL 字节内容 作比较 若 T TH 或 T TL 则将该器件内的报警标志位置位 并对主机发出 的报警搜索命令做出响应 因此 可用多只 DS18B20 同时测量温度并进行报警 搜索 在 64 位 ROM 的最高有效字节中存储有循环冗余检验码 CRC 主机 ROM 的 前 56 位来计算 CRC 值 并和存入 DS18B20 的 CRC 值作比较 以判断主机收到的 ROM 数据是否正确 另外 由于 DS18B20 单线通信功能是分时完成的 它有严格的时隙概念 因此读写时序很重要 系统对 DS18B20 的各种操作按协议进行 操作协议为 初使化 DS18B20 发复位脉冲 发 ROM 功能命令 发存储器操作命令 处理 数据 分别说明如下 1 初始化 单总线的所有处理均从初始化开始 初始化过程是主机通过向 作为从机的 DS18B20 芯片发一个有时间宽度要求的初始化脉冲实现的 初始化 后 才可进行读写操作 2 ROM 操作命令 总线主机检测到 DS18B20 的存在 便可以发出 ROM 操作 命令之一 这些命令表 2 2 5 2 表 2 2 5 2 ROM 操作命令 指 令 代 码 Read ROM 读 ROM 33H Match ROM 匹配 ROM 55H Skip ROM 跳过 ROM CCH Search ROM 搜索 ROM F0H Alarm search 告警搜索 ECH 3 存储器操作 命令如表 2 2 5 3 表 2 2 5 3 存储器操作命令 指令 代码 Write Scratchpad 写暂存存储器 4EH Read Scratchpad 读暂存存储器 BEH Copy Scratchpad 复制暂存存储器 48H Convert Temperature 温度变换 44H Recall EPROM 重新调出 B8H Read Power supply 读电源 B4H 3 软件设计 3 1 系统总体方案设计 本次课程设计采用的是 protues 软件仿真 用 Keil 软件进行编译 Protues 软 件 是 英 国 Labcenter electronics 公 司 出 版 的 EDA 工 具 软 件 它 不 仅 具 有 其 它 EDA 工 具 软 件 的 仿 真 功 能 还 能 仿 真 单 片 机 及 外 围 器 件 它 是 目 前 最 好 的 仿 真 单 片 机 及 外 围 器 件 的 工 具 软件部分由主程序 读出温度子程序 温度转换命令子程序 计算温度子程序 显示 数据刷新子程序等 3 2 程序设计 3 2 1 主程序 主程序的主要功能是负责温度的实时显示 读出并处理 DS18B20 的测量的 当前温度值 温度测量每 1s 进行一次 这样可以在一秒之内测量一次被测温度 其程序流程见图 3 1 所示 图 3 1 主程序流程 3 2 2 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节 在读出时需进行 CRC 校验 校 验有错时不进行温度数据的改写 其程序流程图如图 3 2 所示 图 3 2 读出温度子程序流程 3 2 3 二进制转换 BCD 码命令子程序 二进制转换 BCD 码命令子程序主要是发温度转换开始命令 当采用 12 位分 辨率时转换时间约为 750ms 在本程序设计中采用 1s 显示程序延时法等待转换 的完成 二进制转换 BCD 码命令子程序流程图 如图 3 3 图 3 3 二进制转换 BCD 码流程图 3 2 4 计算温度子程序 将 RAM 中读取值进行 BCD 码的转换运算 并进行温度值正负的判定 3 2 5 温度数据显示子程序 显示数据子程序主要是对显示缓冲器中的显示数据进行刷新操作 查表送段码至 LED 开位码显示 采用动态扫描方式 4 实验仿真 实验仿真在 Protuse 仿真软件中进行 电路总图详见附图 发 DS18B20 复位命令 发跳过 ROM 命令 发温度转换开始命令 结束 5 系统调试 5 1 软件调试 本系统的软件系统较大 全面采用汇编语言编写 除语法和逻辑差错外 当确认程序没问题时 直接下载到单片机仿真调试 采取自下而上的方法 单 独调好每一个模块 最后完成一个完整的系统调试 6 结束语 本系统的设计 是为了保证某特定环境温度维持在设定的范围内 以保证 工作系统在稳定的状态下工作 本系统的设计成本很低 如果采用大批量生产 的话 生产成本会更低 在市场上的温度自动控制系统的价格在百元人民币以 上 对于本系统的使用者来说 本系统能够很稳定的控制温度而且稳定性很高 只要配上适当的温度传感器 这个系统便还可以实现很多领域的温度自动控制 这对于提高系统的利用率 避免重复设计有很大的帮助的 在本系统的作用下 可以为工作系统提供一个良好的环境 使产品的数量和质量有很大的提高 使 得产品的生产成本降低 从而使系统的使用者获得的利润提高了 通过分析表明 本系统是一个性价比比较好的系统 不论对于生产者还是 使用者来说 它都可以带来好的经济效益 本次的课程设计使我们进一步巩固了书本上的知识 做到了学以致用 这 是我们第二次自己动手设计的电路 通过系统仿真软件 protues 和编译软件 keil 使我们进一步了解了单片机的设计制作过程 其中最为困难的是软件部分 即编程部分 我们上网找了好多资料 虽然经过自己的修改 但还是有很多功 能不能实现 如报警和温度上下限设置 由于 protues 并不是很熟练 在使用的 过程中有很多原件的名称不知道 从而花费了大量的时间在网上查找 今后应 该在这方面多多努力 最后一步的焊接硬件也遇到了不少麻烦 P0 端口没有加 上拉电阻 P1 端口没有加电阻导致数码管不亮或者亮度不够 总结经验的时候 我们得出这样的结论 学习应该学以致用 有目的的去学习 如果学了不用等 于没学 其次 要学以致用 理论联系实际 这样才会取得事半功倍的效果 这次设计基本的完成了任务书的要求 实现了温度的控制 通过测试表明系统的设计 是正确的 可行的 但是由于设计者的设计经验和知识水平有限 系统还存在许多不足和 缺陷 参考文献 1 康华光 陈大钦 张林 电子技术基础 模拟部分 第五版 高等教育出版社 2006 103 108 2 余发山 单片机原理及应用技术 中国矿业大学出版社 2003 31 32 3 51 单片机学习网 4 张 洪 润 张 亚 凡 编 著 单 片 机 原 理 及 应 用 清 华 大 学 出 版 社 2003 年 5 楼然苗 李光飞编著 单片机课程设计指导书 北京航空航天大学出版社 附 1 系统电路图 附图 1 1 电路总图 附 2 源程序代码 TIMEL EQU 0E0H TIMEH EQU 0B1H TEMPHEAD EQU 36H 工作内存定义 BITST DATA 20H TIME1SOK BIT BITST 1 TEMPONEOK BIT BITST 2 TEMPL DATA 26H TEMPH DATA 27H TEMPHC DATA 28H TEMPLC DATA 29H 引脚定义 TEMPDIN BIT P3 4 TH BIT P1 3 TL BIT P1 4 中断向量区 ORG 0000H LJMP START ORG 00BH LJMP T0IT 系统初始化 ORG 0100H START MOV SP 60H CLSMEM MOV R0 20H MOV R1 60H CLSMEM1 MOV R0 00H INC R0 DJNZ R1 CLSMEM1 MOV TMOD 00100001B MOV TH0 TIMEH MOV TL0 TIMEL SJMP INIT ERROR NOP LJMP START NOP INIT NOP SETB ET0 SETB TR0 SETB EA MOV PSW 00H CLR TEMPONEOK MOV 80H 00H MOV 79H 28H MOV 78H 0BH MOV 77H 01H MOV P1 00H LJMP MAIN 定时器 0 中断程序 T0IT PUSH PSW MOV PSW 10H MOV TH0 TIMEH MOV TL0 TIMEL INC R7 CJNE R7 32H TOIT1 MOV R7 00H SETB TIME1SOK TOIT1 POP PSW RETI 主程序 MAIN LCALL DISP1 JNB TIME1SOK MAIN CLR TIME1SOK JNB TEMPONEOK MAIN2 LCALL READTEMP1 LCALL CONVTEMP LCALL DISPBCD LCALL DISP1 MAIN2 LCALL READTEMP SETB TEMPONEOK LCALL KEY LCALL SHENGJIANG LCALL SHENGJIANG1 LCALL BAOJING LJMP MAIN 数值比较子程序 SHENGJIANG CLR C CLR TH MOV A 0AH CJNE A 73H MAN MOV A 0AH CJNE A 72H MAN4 LJMP MAN1 MAN4 JNC MAN2 LJMP SS MAN JNC MAN2 C 0 跳转 LJMP SS MAN3 CLR C MOV A 80H ANL A 0FH CJNE A 73H MAX MAN2 CLR C MOV A 79H SWAP A ANL A 0FH CJNE A 72H MAX MAN1 CLR C MOV A 79H ANL A 0FH CJNE A 71H MAX CLR TH JMP SS MAX JC BJ CLR TH JMP SS BJ SETB TH LCALL DELAY10 ret SS RET SHENGJIANG1 CLR C CLR TL MOV A 78H ANL A 0FH CJNE A 73H MAX1 CLR C MOV A 77H SWAP A ANL A 0FH CJNE A 72H MAX1 CLR C MOV A 77H ANL A 0FH SUBB A 71H CJNE A 71H MAX1 JC BJ CLR TL JMP SS MAX1 JC BJ1 CLR TL JMP SS1 BJ1 setb TL LCALL DELAY10 ret SS1 RET DELAY10 MOV R5 200 DEL MOV R6 123 NOP DJNZ R6 DJNZ R5 DEL RET 报警子程序 BAOJING JB TH TEMPERTURE JB TL TEMPERTURE0 RET TEMPERTURE SETB P1 7 TEMPERTURE0 LCALL DELAY10 CLR P1 7 LCALL DELAY10 RET DELAY10 MOV R5 200 DEL MOV R6 123 NOP DJNZ R6 DJNZ R5 DEL RET 按键 KEY MOV P1 0E7H KEY0 JB P1 0 KEE 设置 MOV 75H 01H CALL D10MS JNB P1 0 KKK MOV A 80H 上限 ANL A 0FH MOV 73H A MOV A 79H SWAP A ANL A 0FH MOV 72H A MOV A 79H ANL A 0FH MOV 71H A MOV A 00H ANL A 0FH MOV 70H A LCALL DISP1 LCALL KEY1 JB P1 0 KKK MOV 75H 01H CALL D10MS JNB P1 0 KYY MOV A 78H 下限 ANL A 0FH MOV 73H A MOV A 77H SWAP A ANL A 0FH MOV 72H A MOV A 77H ANL A 0FH MOV 71H A MOV A 00H ANL A 0FH MOV 70H A LCALL DISP1 LCALL KEEY1 JB P1 0 KYY MOV 75H 01H CALL D10MS JNB P1 0 KEE MOV P1 00H RET KEY1 JB P1 1 KEY2 加 CALL D10MS JNB P1 1 CLR C MOV 75H 01H MOV A 79H ADDC A 75H DA A MOV 79H A JNC LS MOV A 80H ADDC A 00H DA A MOV 80H A LS JMP KYKK KEY2 JB P1 2 KYKK 减 CALL D10MS JNB P1 2 CLR C MOV 75H 01H MOV A 79H SUBB A 75H MOV 76H A CJNE A 00H LSAS MOV A 09H ORL A 09H LSAS MOV 79H A JNC LSS MOV A 80H SUBB A 00H DA A MOV 80H A LSS JMP KYKK KYKK RET KEEY1 JB P1 2 KEEY2 加 CALL D10MS JNB P1 2 CLR C MOV 75H 01H MOV A 77H ADDC A 75H DA A MOV 77H A JNC LS1 MOV A 78H ADDC A 00H DA A MOV 78H A LS1 JMP KYKK KEEY2 JB P1 1 KYKKK 减 CALL D10MS JNB P1 1 MOV 75H 01H MOV A 76H SUBB A 75H MOV 76H A JMP KYKKK KYKKK RET 子程序区 RESET DS18B20 INITDS1820 SETB TEMPDIN NOP NOP CLR TEMPDIN MOV R6 0A0H DJNZ R6 MOV R6 0A0H DJNZ R6 SETB TEMPDIN MOV R6 32H DJNZ R6 MOV R6 3CH LOOP1820 MOV C TEMPDIN JC INITDS1820OUT DJNZ R6 LOOP1820 MOV R6 64H DJNZ R6 SJMP INITDS1820 RET INITDS1820OUT SETB TEMPDIN RET 读 DS18B20 的程序 从 DS18B20 中读出一 个字节的数据 READDS1820 MOV R7 08H SETB TEMPDIN NOP NOP READDS1820LOOP CLR TEMPDIN NOP NOP NOP SETB TEMPDIN MOV R6 07H DJNZ R6 MOV C TEMPDIN MOV R6 3CH DJNZ R6 RRC A SETB TEMPDIN DJNZ R7 READDS1820LOOP MOV R6 3CH DJNZ R6 RET 写 DS1820 的程序 从 DS18B20 中写一个字 节的数据 WRITEDS1820 MOV R7 08H SETB TEMPDIN NOP NOP WRITEDS1820LOP CLR TEMPDIN MOV R6 07H DJNZ R6 RRC A MOV TEMPDIN C MOV R6 34H DJNZ R6 SETB TEMPDIN DJNZ R7 WRITEDS1820LOP RET READ TEMP READTEMP LCALL INITDS1820 MOV A 0CCH LCALL WRITEDS1820 MOV R6 34H DJNZ R6 MOV A 44H LCALL WRITEDS1820 MOV R6 34H DJNZ R6 RET READTEMP1 LCALL INITDS1820 MOV A 0CCH LCALL WRITEDS1820 MOV R6 34H DJNZ R6 MOV A 0BEH LCALL WRITEDS1820 MOV R6 34H DJNZ R6 MOV R5 09H MOV R0 TEMPHEAD MOV B 00H READTEMP2 LCALL READDS1820 MOV R0 A INC R0 READTEMP21 LCALL CRC8CAL DJNZ R5 READTEMP2 MOV A B JNZ READTEMPOUT MOV A TEMPHEAD 0 MOV TEMPL A MOV A TEMPHEAD 1 MOV TEMPH A READTEMPOUT RET 处理温度 BCD 码子程序 CONVTEMP MOV A TEMPH ANL A 80H JZ TEMPC1 CLR C MOV A TEMPL CPL A ADD A 01H MOV TEMPL A MOV A TEMPH CPL A ADDC A 00H MOV TEMPH A MOV TEMPHC 0BH SJMP TEMPPC11 TEMPC1 MOV TEMPHC 0AH TEMPPC11 MOV A TEMPHC SWAP A MOV TEMPHC A MOV A TEMPL ANL A 0FH MOV DPTR TEMPDOTTAB MOVC A A DPTR MOV TEMPLC A MOV A TEMPL ANL A 0F0H SWAP A MOV TEMPL A MOV A TEMPH ANL A 0FH SWAP A ORL A TEMPL LCALL HEX2BCD1 MOV TEMPL A ANL A 0F0H SWAP A ORL A TEMPHC MOV TEMPHC A MOV A TEMPL ANL A 0FH SWAP A ORL A TEMPLC MOV TEMPLC A MOV A R7 JZ TEMPC12 ANL A 0FH SWAP A MOV R7 A MOV A TEMPHC ANL A 0FH ORL A R7 MOV TEMPHC A TEMPC12 RET 小数部分码表 TEMPDOTTAB DB 00H 01H 01H 02H 03H 03H 04H 04H 05H 06 H DB 06H 07H 08H 08H 09H 09H 显示区 BCD 码温度值刷新子程序 DISPBCD MOV A TEMPLC ANL A 0FH MOV 70H A MOV A TEMPLC SWAP A ANL A 0FH MOV 71H A MOV A TEMPHC ANL A 0FH MOV 72H A MOV A TEMPHC SWAP A ANL A 0FH MOV 73H A MOV A TEMPHC ANL A 0F0H CJNE A 010H DISPBCD0 SJMP DISPBCD2 DISPBCD0 MOV A TEMPHC ANL A 0FH JNZ DISPBCD2 MOV A TEMPHC SWAP A ANL A 0FH MOV 73H 0AH MOV 72H A DISPBCD2 RET 显示子程序 用 6 位 LED 共阳数码管显示 P1 口输出段 码数据 P3 口作扫描控制 每个 LED 数码管 亮 1ms 时间再逐位循环 DISP MOV A R0 ANL A 0FH MOV 71H A MOV A R0 SWAP A ANL A 0FH MOV 72H A DISP1 MOV R5 01H MOV R1 70H PLAY MOV A R5 MOV P2 A MOV A R1 MOV DPTR TAB MOVC A A DPTR MOV P0 A MOV A R5 JNB ACC 1 LOOP5 CLR P0 7 LOOP5 LCALL DL1MS MOV A R5 RL A MOV R5 A INC R1 JNB ACC 4 PLAY RET TAB DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 8 0H 90H 0FFH 0BFH 共阳段码表 0 1 2 3 4 5 6 7 8 9 不亮 一 DL1MS MOV R6 2 DL1 MOV R7 16 DL2 DJNZ R7 DL2 DJNZ R6 DL1 RET D10MS MOV R5 10H D1MS MOV R4 249 DL NOP NOP DJNZ R4 DL DJNZ R5 D1MS RET 单字节十六进制转 BCD HEX2BCD1 MOV B 064H DIV AB MOV R7 A MOV A 0AH XCH A B DIV AB SWAP A ORL A B RET CRC 校验 CRC8CAL PUSH ACC MOV R7 08H CRC8LOOP1 XRL A B RRC A MOV A B JNC CRC8LOOP2 XRL A 18H CRC8LOOP2 RRC A MOV B A POP ACC RR A PUSH ACC DJNZ R7 CRC8LOOP1 POP ACC RET END 元器件清单 序号 元件名称 型号 数量 备注 1 按键 4 2 LED RED 2 2V 10mA 1 3 或门 74SL02 1 4 LED GREEN 2 2V 10mA 1 5 电阻 4700 1 6 电阻 220 1 7 电阻 10k 1 8 电容 33p 2 9 电容 ELEC RAD10 10u 1 10 晶振 CRYSTAL 1 12MHz 11 数码管 LEDMPX 1 1ms 12 P0 口上拉电 阻 RESPACK 8 1 13 温度传感器 DS18B20 1 14 单片机 AT89C51 1 12MHz 15 蜂鸣器 1 16 电源 1 使用说明 将智能温度计放置于室内 长按按键 K1 然后通过按键 K2 K3 对智能温度 计的上限温度值进行自我调整 再次长按按键 k1 通过按键 K2 K3 对智能温度 计的下限温度值进行调整 当红灯亮并伴有报警声音时 表明实测温度值高于设定的温度值 这时需 要人为给舍内降温 当黄灯亮并伴有报警声音时 表明实测温度值低于设定的 温度值 这时需要人为给舍内升温 该智能温度计可以实测 55 128 摄氏温 度 灵敏度高 使用方便 但不可置于超出量程的环境中 否的只能能温度计 将不能正常工作
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!