




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文设计 第 1 页 共 48 页 基于单片机温度控制系统的设计 中文摘要 随着微机测量和控制技术的迅猛发展与广泛应用 以单片机为核心的温度采集与控 制系统的研发与应用在很大程度上提高了生产生活中对于温度的控制水平 本设计论述 了一种以 STC89C52 单片机为主控制单元 以 DS18B20 为温度传感器的温度控制系统 该 控制系统可以实时存储相关的温度数据并记录当前的时间 系统设计了相关硬件电路和 相关应用程序 硬件电路包括 STC89C52 单片机最小系统 测温电路 实时时钟电路 LCD 液晶显示电路以及通讯模块电路等 系统程序包括主程序 读出温度子程序 计算温 度子程序 按键处理程序和 LCD 显示程序以及数据存储程序等 关键词关键词 STC89C52 单片机 DS18B20 显示电路 毕业论文设计 第 2 页 共 48 页 Based on single chip microcomputer temperature control system design Abstract Along with the computer measurement and control technology of the rapid development and wide application based on singlechip temperature gathering and control system development and application greatly improve the production of temperature in life level of control This design STC89C52 describes a kind of mainly by MCU control unit for temperature sensor DS18B20 temperature control system The control system can real time storage temperature data and record related to the current time System design related hardware circuit and related applications STC89C52 microcontroller hardware circuit include temperature detection circuit smallest system and real time clock circuit LCD display circuit communication module circuit etc System programming mainly include main program read temperature subroutine the calculation of temperature subroutines key processing procedures LCD display procedures and data storage procedures etc Keywords Keywords STC89C52 microcontroller DS18B20 display circuit 毕业论文设计 第 3 页 共 48 页 目 录 一 引言 4 一 设计研究的背景 4 二 设计研究的目的和意义 5 二 硬件电路的设计 5 一 系统设计的框架 5 二 单片机最小系统电路 6 三 单片机的选型 6 1 STC89C52 单片机简介 6 2 STC89C52 单片机时序 7 3 STC89C52 单片机引脚介绍 7 四 温度传感器电路 9 五 系统电源电路的设计 10 六 LCD 显示电路 11 七 串口通讯电路 12 八 按键接口电路 13 九 DS1302 时钟电路 13 十 存储器接口电路 13 三 系统软件设计 14 一 计算温度子程序 15 二 按键处理子程序 15 三 计算温度子程序 16 四 显示数据刷新子程序 17 四 结束语 18 参考文献 19 致谢 20 附件 1 系统原理图 21 附件 2 系统相关程序 22 一 DS18B20 底层驱动程序 22 二 DS1302 时钟底层驱动程序 27 三 数据存储底层驱动程序 33 毕业论文设计 第 4 页 共 48 页 一 引言 一 设计研究的背景 工业控制作为计算机的一个重要应用领域 而计算机控制系统正是为了适应这一领 域的需要而发展起来的一门专业技术 它主要研究如何将计算机技术 通过信息技术和 自动控制理论应用于工业生产过程 并且设计出所需要的计算机控制系统 随着微机测 量和控制技术的迅速发展与广泛应用 以单片机为核心的温度采集与控制系统的研发与 应用在很大程度上提高了生产生活中对温度的控制水平 本设计就是基于单片机 STC89C52 温度控制系统的设计 通过本次设计实践 我们更加的明确了单片机的广泛用 途和使用方法 以及其工作的原理 二 设计研究的目的和意义 伴随着社会的发展 温度的测量及控制的重要性更加凸显 本文采用单片机 STC89C52 设计了温度实时测量及控制系统 单片机 STC89C52 能够根据温度传感器 DS18B20 所采集的温度在液晶屏上实时显示 通过控制从而把温度控制在设定的范围之 内 所有温度数据均通过液晶显示器 LCD 显示出来 系统可以根据时钟存储相关的数据 通过该设计的学习使我们对计算机控制系统有一个全面的了解 掌握常规控制算法 的使用方法 掌握简单微型计算机应用系统软硬的设计方法 进一步锻炼我们在微型计 算机应用方面的实际工作能力 二 硬件电路的设计 一 系统设计的框架 本设计的是一种以 STC89C52 单片机为主控制单元 DS18B20 为温度传感器的温度控 制系统 该控制系统可以实时存储相关的温度数据并记录当前的时间 其主要包括 电 源模块 温度采集模块 按键处理模块 实时时钟模块 数据存储模块 LCD 显示模块 通讯模块以及单片机最小系统 毕业论文设计 第 5 页 共 48 页 图 1 系统设计框架 二 单片机最小系统电路 在设计温度控制系统设计中 控制核心是 STC89C52 单片机 该单片机为 51 系列增 强型 8 位单片机 它拥有 32 个 I O 口 片内含有 4K FLASH 工艺的程序存储器 更方便 用电的方式瞬间擦除和改写 而且价格便宜 其外部晶振为 12MHz 一个指令周期为 1 S 使用该单片机完全可以完成设计任务 其最小的系统主要包括 复位电路 震荡 电路以及存储器选择模式 EA 脚的高低电平选择 电路如下图 2 所示 毕业论文设计 第 6 页 共 48 页 图 2 单片机最小系统 三 单片机的选型 本设计的温度控制系统主控制芯片选型为 STC89C52 单片机 其特点如下 1 STC89C52 单片机简介 目前 51 系列单片机在工业检测领域中得到了广泛应用 所以我们可以在许多单片 机应用领域中 配接各种类型语音接口 构成具有合成语音输出能力的综合应用系统 用来增强人机对话的功能 STC89C52 单片机是深圳宏晶科技有限公司生产的单片机 在 一小块芯片上集成了一个微型计算机各个组成部分 每一个单片机包括 一个 8 位微型 处理器 CPU 一个 512K 片内数据存储器 RAM 4K 片内程序存储器 四个 8 位并行 I O 接 口 P0 P3 每个接口既可以输入 也可以输出 两个定时器 记数器 有五个中断源的中 断控制系统 一个全双工 UART 的串行 I O 口 片内振荡器和时钟产生电路 但石英晶体 和微调电容需要外接 最高允许振荡频率是 12MHZ 以上各个部分通过内部总线相连接 2 STC89C52 单片机时序 STC89C52 单片机的一个执器周期由 6 个状态 s1 s6 组成 每个状态又持续 2 个震 荡周期 分为 P1 和 P2 两个节拍 这样 一个机器周期由 12 个振荡周期组成 若采用 12MHz 的晶体振荡器 则每个机器周期为 1us 每个状态周期为 1 6us 在一数情况下 算术和逻辑操作发生在 N 期间 而内部寄存器到寄存器的传输发生在 P2 期间 而对于单 周期指令 当指令操作码读人指令寄存器时 从 S1P2 开始执行指令 假如是双字节指令 就在同一机器周期的 s4 读人第二字节 若为单字节指令 则在 51 期间仍进行读 但所 读入的字节操作码则会被忽略 并且且程序计数据也不加 1 在加结束时完成指令操作 多数 STC89C52 指令周期为 1 2 个机器周期 只有乘法和除法指令需要两个以上机器周 期的指令 它们需要 4 个机器周期 对于双字节单机器指令 通常在一个机器周期内从 程序存储器中读人两个字节 但是 Movx 指令例外 Movx 指令是访问外部数据存储器单字 节双机器周期指令 在执行 Movx 指令期间 外部数据存储器被访问并且被选通时跳过两 次取指操作 毕业论文设计 第 7 页 共 48 页 3 STC89C52 单片机引脚介绍 STC89C52 单片机 40 个引脚中有 2 个专用于主电源引脚 2 个外接晶振的引脚 4 个 控制或与其它电源复用的引脚 以及 32 条输入输出 I O 引脚 下面按引脚功能分为 4 个部分叙述个引脚的功能 1 电源引脚 Vcc 和 Vss Vcc 40 脚 接 5V 电源正端 Vss 20 脚 接 5V 电源正端 2 外接晶振引脚 XTAL1 和 XTAL2 XTAL1 19 脚 接外部石英晶体的一端 在单片机内部 它是一个反相放大器的输 入端 这个放大器构成采用外部时钟时 对于 HMOS 单片机 该引脚接地 对于 CHOMS 单 片机 该引脚作为外部振荡信号的输入端 XTAL2 18 脚 接外部晶体的另一端 在单片机内部 接至片内振荡器的反相放大 器的输出端 当采用外部时钟时 对于 HMOS 单片机 该引脚作为外部振荡信号的输入端 对于 CHMOS 芯片 该引脚悬空不接 3 控制信号或与其它电源复用引脚 控制信号或与其它电源复用引脚有 RST VPD ALE P PSEN 和 EA VPP 等 4 种形式 A RST VPD 9 脚 RST 即为 RESET VPD 为备用电源 所以该引脚为单片机的 上电复位或掉电保护端 当单片机振荡器工作时 该引脚上出现持续两个机器周期的高 电平 就可实现复位操作 使单片机复位到初始状态 当 VCC 发生故障 降低到低电平规定值或掉电时 该引脚可接上备用电源 VPD 5V 为内部 RAM 供电 以保证 RAM 中的数据不丢失 B ALE P 30 脚 当访问外部存储器时 ALE 允许地址锁存信号 以每机器 周期两次的信号输出 用于锁存出现在 P0 口的低 C PSEN 29 脚 片外程序存储器读选通输出端 低电平有效 当从外部程序存储器读取 指令或常数期间 每个机器周期 PESN 两次有效 以通过数据总线口读回指令或常数 当访问 外部数据存储器期间 PESN 信号将不出现 D EA Vpp 31 脚 EA 为访问外部程序储器控制信号 低电平有效 当 EA 端保 持高电平时 单片机访问片内程序存储器 4KB MS 52 子系列为 8KB 若超出该范围时 自动转去执行外部程序存储器的程序 当 EA 端保持低电平时 无论片内有无程序存储器 均只访问外部程序存储器 对于片内含有 EPROM 的单片机 在 EPROM 编程期间 该引脚 毕业论文设计 第 8 页 共 48 页 用于接 21V 的编程电源 Vpp 4 输入 输出 I O 引脚 P0 口 P1 口 P2 口及 P3 口 A P0 口 39 脚 22 脚 P0 0 P0 7 统称为 P0 口 当不接外部存储器与不扩展 I O 接口时 它可作为准双向 8 位输入 输出接口 当接有外部程序存储器或扩展 I O 口 时 P0 口为地址 数据分时复用口 它分时提供 8 位双向数据总线 对于片内含有 EPROM 的单片机 当 EPROM 编程时 从 P0 口输入指令字节 而当检验程序 时 则输出指令字节 B P1 口 1 脚 8 脚 P1 0 P1 7 统称为 P1 口 可作为准双向 I O 接口使用 对于 MCS 52 子系列单片机 P1 0 和 P1 1 还有第 2 功能 P1 0 口用作定时器 计数器 2 的计数脉冲输入端 T2 P1 1 用作定时器 计数器 2 的外部控制端 T2EX 对于 EPROM 编程 和进行程序校验时 P0 口接收输入的低 8 位地址 C P2 口 21 脚 28 脚 P2 0 P2 7 统称为 P2 口 一般可作为准双向 I O 接口 当接有外部程序存储器或扩展 I O 接口且寻址范围超过 256 个字节时 P2 口用于高 8 位 地址总线送出高 8 位地址 对于 EPROM 编程和进行程序校验时 P2 口接收输入的 8 位地 址 D P3 口 10 脚 17 脚 P3 0 P3 7 统称为 P3 口 它为双功能口 既可以作为 一般的准双向 I O 接口 也可以将每 1 位用于第 2 功能 而且 P3 口的每一条引脚均可独 立定义为第 1 功能的输入输出或第 2 功能 P3 口的第 2 功能见下表 表 1 单片机 P3 0 管脚含义 综上 所述 MCS 51 系列单 片机的 引脚作 用可归 纳为以 下两点 引脚第 2 功能 P3 0 RXD 串行口输入端 0 P3 1 TXD 串行口输出端 P3 2 INT0 部中断 0 请求输入端 低电平有效 P3 3 INT1 中断 1 请求输入端 低电平有效 P3 4 T0 时器 计数器 0 计数脉冲端 P3 5 T1 时器 计数器 1 数脉冲端 P3 6 WR 部数据存储器写选通信号输出端 低电平有效 P3 7 RD 部数据存储器读选通信号输出端 低电平有效 毕业论文设计 第 9 页 共 48 页 1 单片机功能多 引脚数少 因而许多引脚具有第 2 功能 2 单片机对外呈 3 总线形式 由 P2 P0 口组成 16 位地址总线 由 P0 口分时复用 作为数据总线 四 温度传感器电路 使用一线制数字温度传感器 DS18B20 作为本设计的温度传感器 传感器输出信号进 4 7K 的上拉电阻可以直接接到单片机的 P1 0 引脚上 DS18B20 温度传感器是美国达拉斯 DALLAS 半导体公司推出应用单总线技术的数字温 度传感器 该器件将半导体温敏器件 A D 转换器和存储器等做在一个很小的集成电路芯 片上 本设计中温度传感器之所以选择单线数字器件 DS18B20 是在经过多方面比较和考 虑后决定的 主要有以下几方面的原因 1 系统的特性 测温范围为 55 125 测温精度为士 0 5 温度转换精 度 9 12 位可变 能够直接将温度转换值以 16 位二进制数码的方式串行输出 12 位精度 转换的最大时间为 750ms 可以通过数据线供电 拥有超低功耗工作方式 2 系统成本 由于计算机技术和微电子技术的发展 新型大规模集成电路功能越 来越强大 体积越来越小 而价格也越来越低 一支 DS18B20 的体积与普通三极管相差 无几 价位大概只有十元人民币左右 3 系统复杂度 因为 DS18B20 是单总线器件 微处理器与其接口时仅需占用 1 个 I O 端口且一条总线上可以挂接几十个 DS18B20 测温时无需任何外部元件 因此 与模 拟传感器相比 可以大大减少接线的数量 降低系统的复杂度 减少工程的施工量 4 系统的调试和维护 由于引线减少 从而使系统接口大为简化 给系统的调试 带来方便 而且 DS18B20 是全数字元器件 故障率很低 抗干扰性也强 所以 也减少 了系统的日常维护工作 DS18B20 温度传感器只有三根外引线 单线数据传输总线端口 DQ 外供电源线 VDD 共用地线 GND DS18B20 有两种供电方式 一种为数据线供电方式 此时 VDD 接地 它是通过内部电容在空闲时从数据线获取能量 来完成温度转换 相应的完成温度转换 的时间较长 这种情况下 用单片机的一个 I O 口来完成对 DS18B20 总线的上拉 另一 种是外部供电方式 VDD 接 5V 相应的完成温度测量的时间较短 在本设计中采用外部供电方式实现 DS18B20 传感器与单片机的连接 其接口电路如 图 4 所示 毕业论文设计 第 10 页 共 48 页 图 4 温度传感器接口 五 系统电源电路的设计 本系统采用电源稳压芯片是LM2596 该开关电压调节器是降压型电源管理单片集成电 路 能够输出3A的驱动电流 输入电压是 5v 输入电压是 24v 也具有很好的线性和负载 调节特性 该器件内部集成频率补偿和固定频率发生器 开关频率为150KHz 与低频开关调节器相 比较 可以使用更小规格的滤波元件 该器件还有其他特点 比如说在特定的输入电压和输出负载的条件下 输出电压的 误差可以保证在 4 的范围内 振荡频率误差在 15 的范围内 可以用仅 80 A 的待机 电流 实现外部断电 具有自我保护电路 一个两级降频限流保护和一个在异常情况下 断电的过温完全保护电路 等等 该温度控制系统中 其电源电路设计如下图 10 所示 毕业论文设计 第 11 页 共 48 页 图 5 系统电源模块 六 LCD 显示电路 本设计的温度控制系统是采用液晶屏 128 64 作为显示模块 其接口原理图如下图 6 所示 图 6 液晶显示接口电路 七 串口通讯电路 本设计设计的通讯采用的是常见的串口通讯 协议转换芯片是采用 MAX232A 其接口 原理图如下图 7 所示 毕业论文设计 第 12 页 共 48 页 图 6 串口通讯接口电路 八 按键接口电路 本设计设计采用的键盘模块 其接口原理图如下图 8 所示 图 8 键盘模块电路 毕业论文设计 第 13 页 共 48 页 九 DS1302 时钟电路 本设计设计的时钟是采用时钟芯片 DS1302 其接口原理图如下图 9 所示 图 9 时钟接口电路 十 存储器接口电路 本设计设计的存储器采用的是 AT24C256 其接口原理图如下图十所示 图 10 存储器电路 三 系统软件设计 系统的软件主要是采用 C 语言 从而对单片机进行变成实现各项功能 主程序对模 块进行初始化 然后调用读温度 处理温度 显示 键盘等模块 使用循环查询方式显 示和控制温度 主程序的主要负责温度的实时显示 读出并处理 DS18B20 的测量的当前 温度值并负责调用各子程序 其程序流程如图 10 系统程序流程图 毕业论文设计 第 14 页 共 48 页 启动DB18B20 读温度 计算温度 LCD显示 图 10 系统程序流程图 一 计算温度子程序 读出温度子程序的主要功能包括初始化 判断 DS18B20 是否存在 若存在则进行一系列 的读操 作若不存在则返回 其程序流程图如图 11 所示 开始 初始化 毕业论文设计 第 15 页 共 48 页 图 11 读温度流程图 二 按键处理子程序 按键处理子程序主要是负责参数的设置 主程序每循环一次都要对按键进行扫描 判 断是否有输入键按下则进行一系列的按键输入操作 其程序流程框图如图 12 所示 毕业论文设计 第 16 页 共 48 页 图 12 温度转换流程图 三 计算温度子程序 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算 并进行温度值正负的判定 其程序流程图如图 13 所示 毕业论文设计 第 17 页 共 48 页 图 13 计算温度子程序 四 显示数据刷新子程序 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作 当最高显示 位为 0 时将符号显示位移入下一位 程序流程图如图 14 开始 温度零下 温度值取补码置 标志 计算小数位温度 BCD 值 计算整数位温度 BCD 值 结束 置 标志 N Y 毕业论文设计 第 18 页 共 48 页 图 14 数据刷新子程序 四 结束语 通过此次毕业论文的设计设计 我们学会了怎样把所学的书本知识应用于实践中去 并学会了如何去思考整个控制系统的软硬件设计 实践过程中我们遇到了一些困难 但 在解决问题的过程中 我们学会了团队合作精神和怎样发现问题 分析问题 进而解决 问题 此次设计设计不仅增强了我们学习专业课的兴趣 而且给了我们勇气和信心 更 重要的是它为我们以后的学习指明了方向 温度数据移入显示寄存器 十位数 0 百位数 0 十位数显示符号百位 数不显示 百位数显示数据 不显示符号 结束 N N Y Y 毕业论文设计 第 19 页 共 48 页 参考文献 1 李广弟 朱月秀 王秀山 单片机基础 北京航空航天大学出版社 2001 07 2 蔡美琴 张为民等 MCS 51 系列单片机系统及其应用 高等教育出版社 2004 06 3 张毅刚 等 MCS 51 单片机应用设计 M 哈尔滨工业大学出版社 1997 4 刘瑞星 胡健等 Protel DXP 实用教程 机械工业出版社 2003 04 5 于海生 计算机控制技术 机械工业出版社 2007 05 6 谭浩强 C 程序设计 清华大学出版社 7 康华光 电子技术基础 模拟部分 高等教育出版社 1998 08 8 余锡存 单片机原理与接口技术 西安电子科技大学出版社 2003 毕业论文设计 第 20 页 共 48 页 致谢致谢 本论文是在我的指导老师密切关心和悉心指导下完成的 老师在设计开题期间和论 文写作的过程中给予了我许多指导 导师总是以认真负责 一丝不苟的工作态度阅读并 修改文章中不足的地方 他优良的作风和严谨治学的态度深深影响着我 至此 向恩师致 以最真挚的感谢和最崇高的敬意 同时我要感谢我的同学 特别是我的室友们 正是他们在这几年里陪我一起成长 一起学习 才让我有了今天的成绩 他们在平时的学习和生活中他们给予了我无私的关 怀和帮助 在此表示我最诚挚的谢意 毕业论文设计 第 21 页 共 48 页 附件 1 系统原理图 毕业论文设计 第 22 页 共 48 页 附件 2 系统相关程序 一 DS18B20 底层驱动程序 延时 N ms DS1820 引脚定义 sbit TMDAT P1 0 void DS1820 DelayCount unsigned char Coun data unsigned char Count Count Coun while Count 0 Count Count Coun while Count 0 Count 复位 DS18B20 void DS1820 Reset void TMDAT 0 DS1820 DelayCount 412 TMDAT 1 DS1820 DelayCount 16 等待 DS18B20 应答 unsigned char DS1820 Answer void data unsigned int i data unsigned char j 毕业论文设计 第 23 页 共 48 页 i 0 xc000 while TMDAT i if i 0 return aban return i 0 xffff j 3 while TMDAT i if i 0 if j 0 return aban return else j i 0 xffff DS1820 DelayCount 16 return done return 等待 DS18B20 应答 读取位 bit DS1820 Readbit void data int i 0 毕业论文设计 第 24 页 共 48 页 bit dat TMDAT 0 i i i i TMDAT 1 i i i i i i i i dat TMDAT DS1820 DelayCount 8 DS1820 DelayCount 32 return dat 读取字节 unsigned char DS1820 Readbyte void data unsigned char i j dat 0 for i 1 i 8 i j DS1820 Readbit dat j 1 return dat 写一个字节 void DS1820 Writebyte unsigned char dat data signed char i 0 data unsigned char j bit testb for j 1 j 1 if testb TMDAT 0 i i i i i i i i TMDAT 1 DS1820 DelayCount 8 DS1820 DelayCount 32 else TMDAT 0 DS1820 DelayCount 8 DS1820 DelayCount 32 TMDAT 1 i i i i i i i i 读操作开始 unsigned char DS1820 StartTem void EA 0 DS1820 Reset if DS1820 Answer aban return EA Ea return aban return 毕业论文设计 第 26 页 共 48 页 DS1820 Delayms 1 DS1820 Delayms 4 DS1820 Writebyte 0 xcc DS1820 Writebyte 0 x55 for i 0 i 8 i DS1820 Writebyte DS1820 temp i DS1820 Writebyte 0 x44 EA Ea return done return 读所有传感器 int DS1820 ReadTem void data unsigned char a b data int y3 data float y4 data unsigned char i EA 0 DS1820 Reset if DS1820 Answer aban return EA Ea return 0 xffff DS1820 Delayms 4 DS1820 Writebyte 0 xcc 跳过匹配传感器 DS1820 Writebyte 0 x55 匹配传感器 毕业论文设计 第 27 页 共 48 页 for i 0 i 8 i DS1820 Writebyte run inf system index DS1820 temp i DS1820 Writebyte 0 xbe 读取温度 for i 0 i 9 i run inf system index DS1820 temp i DS1820 Readbyte if CRC 9 0 EA 1 return 0 xffff 计算 CRC a run inf system index DS1820 temp 0 b run inf system index DS1820 temp 1 DS1820 Reset y3 b 0 i rtc io temp 0 相当于汇编中的 RRC rtc sc 1 rtc sc 0 temp temp 1 功能 从 DS1302 读取 1Byte 数据 unsigned char uc RTOutputByte void unsigned char i rtc io 1 for i 8 i 0 i 毕业论文设计 第 29 页 共 48 页 temp temp 1 相当于汇编中的 RRC temp 7 rtc io rtc sc 1 rtc sc 0 return temp 功能 往 DS1302 写入数据 void write1302 unsigned char ucAddr unsigned char ucDa bit ea ea EA EA 0 rtc rs port rtc sc 0 rtc rs port rtc rs bit v RTInputByte ucAddr 地址 命令 v RTInputByte ucDa 写 1Byte 数据 rtc sc 1 rtc rs port EA ea 功能 读取 DS1302 某地址的数据 unsigned char read1302 unsigned char ucAddr unsigned char ucDa bit ea ea EA 毕业论文设计 第 30 页 共 48 页 EA 0 rtc rs port rtc sc 0 rtc rs port rtc rs bit v RTInputByte ucAddr 地址 命令 ucDa uc RTOutputByte 读 1Byte 数据 rtc sc 1 rtc rs port EA ea return ucDa 功能 设置初始时间 void Set1302 pTime S time temp unsigned char i 0 x80 write1302 0 x8e 0 x00 控制命令 WP 0 写操作 write1302 i time temp sec i 2 write1302 i time temp min i 2 write1302 i time temp hou i 2 write1302 i time temp day i 2 write1302 i time temp mon i 2 write1302 i 0 x02 i 2 write1302 i time temp yea 毕业论文设计 第 31 页 共 48 页 i 2 write1302 0 x8e 0 x80 控制命令 WP 1 写保护 功能 读取 DS1302 当前时间 void get1302 void unsigned char i time bcd temp 6 unsigned char ucAddr 0 x81 for i 0 i 7 i time bcd temp i read1302 ucAddr 格式为 秒 分 时 日 月 星期 年 ucAddr 2 sec time bcd temp 0 min time bcd temp 1 hou time bcd temp 2 day time bcd temp 3 mon time bcd temp 4 yea time bcd temp 6 连续 6 字节读出程序 void ds1302 read unsigned char ptr unsigned char addr unsigned char i 毕业论文设计 第 32 页 共 48 页 addr addr 2 0 x0c1 for i 0 i 6 i ptr i read1302 addr addr 2 连续 6 字节写入程序 void ds1302 write unsigned char ptr unsigned char addr unsigned char i addr addr 2 0 x0c0 write1302 0 x8e 0 x00 写保护置低 关闭 for i 0 i 6 i write1302 addr ptr i addr 2 write1302 0 x8e 0 x80 写保护置高 打开 void Start1302 void unsigned char temp bit ea ea EA EA 0 毕业论文设计 第 33 页 共 48 页 temp read1302 0 x81 temp write1302 0 x8e 0 x00 控制命令 WP 0 写操作 write1302 0 x80 temp write1302 0 x90 0 write1302 0 x8e 0 x80 控制命令 WP 1 写保护 EA ea DS1302 驱动程序结束 三 数据存储底层驱动程序 ATC256 引脚定义 sbit epr sd P3 3 sbit epr sc P3 2 bdata unsigned char temp1 sbit temp1 0 temp1 0 sbit temp1 7 temp1 7 存储器驱动程序开始 void noack void epr sd 1 epr sc 1 epr sc 1 epr sc 1 epr sc 0 void ask 毕业论文设计 第 34 页 共 48 页 unsigned char i 0 xff epr sd 1 epr sc 1 epr sc 1 epr sc 1 do i if epr sd 0 epr sc 0 i 0 while i 0 epr sd 1 epr sd 1 epr sd 1 void stop epr sd 0 epr sd 0 epr sd 0 epr sc 1 epr sc 1 epr sc 1 epr sd 1 epr sd 1 epr sd 1 epr sd 1 毕业论文设计 第 35 页 共 48 页 24c256 start void start epr sc 1 epr sd 1 epr sd 1 epr sd 0 epr sd 0 epr sc 0 void wrby unsigned char x unsigned char i epr sc 0 temp1 x for i 0 i 8 i 从高位开始传送数据 epr sd temp1 7 temp1 temp1 1 左移一位 epr sc 1 epr sc 1 epr sc 1 epr sc 1 epr sc 0 24c256 rdby unsigned char rdby 从高位开始读出数据 毕业论文设计 第 36 页 共 48 页 unsigned char i epr sd 1 epr sd 1 epr sd 1 for i 0 i 8 i epr sc 1 epr sc 1 temp1 temp1 1 temp1 0 epr sd epr sc 0 epr sc 0 epr sc 0 return temp1 24c256 waddr void waddr start wrby 0 xa0 ask 24c256 raddr unsigned char raddr start 毕业论文设计 第 37 页 共 48 页 wrby 0 xa1 ask temp1 rdby noack stop return temp1 void w16addr unsigned int x union unsigned int int type unsigned char char type 1 u int char unsigned m n u int char int type x 将 x 的高位赋给 m 低位赋给 n m u int char char type 0 n u int char char type 1 wrby m ask wrby n ask 延时 void d5ms unsigned char a b 毕业论文设计 第 38 页 共 48 页 for a 0 a 15 a for b 0 b00H 0 0625 2 0 125 01H 0 0625 3 0 1875 01H 0 0625 4 0 25 02H 0 0625 5 0 3125 03H 以此类推 程序名称 HtoB 功能 十六进制转 BCD 入口参数 A 出口参数 R7 HtoB MOV B 064H 100 DIV AB a 100 MOV R7 A MOV A 0AH XCH A B DIV AB SWAP A ORL A B 毕业论文设计 第 42 页 共 48 页 RET 程序名称 INIT TEMP 功能 初始化 DS18B20 确定 DS18B20 是否是存在的 入口参数 无 出口参数 FLAG INIT TEMP SETB P DS18B20 NOP CLR P DS18B20 主机发出延时 537 微秒的复位低脉冲 MOV R0 6BH MOV R1 04H TSR1 DJNZ R0 MOV 40 6BH DJNZ R1 TSR1 SETB P DS18B20 然后拉高数据线 释放总线进入接受状态 NOP NOP NOP MOV R0 32H TSR2 JNB P DS18B20 TSR3 等待 DS18B20 回应 DJNZ R0 TSR2 LJMP TSR4 延时 TSR3 SETB FLAG 置标志位 表示 DS1820 存在 LJMP TSR5 TSR4 CLR FLAG 清标志位 表示 DS1820 不存在 LJMP TSR7 TSR5 MOV R0 06BH TSR6 DJNZ R0 TSR6 时序要求延时一段时间 TSR7 SETB P DS18B20 RET 程序名称 READ TEMP 功能 读取 DS18B20 的数据 入口参数 TEMPERATURE L TEMPERATURE H 出口参数 无 READ TEMP SETB P DS18B20 LCALL INIT TEMP 先复位 DS18B20 JB FLAG TSS2 RET 判断 DS1820 是否存在 若 DS18B20 不存在则返回 TSS2 MOV A 0CCH 跳过 ROM 匹配 LCALL WRITE 18B20 MOV A 44H 发出温度转换命令 LCALL WRITE 18B20 LCALL DISPLAY 等待 AD 转换结束 12 位的话 750 微秒 毕业论文设计 第 43 页 共 48 页 LCALL INIT TEMP 准备读温度前先复位 MOV A 0CCH 跳过 ROM 匹配 LCALL WRITE 18B20 MOV A 0BEH 发出读温度命令 LCALL WRITE 18B20 LCALL READ 18B20 将读出的温度数据保存到 35H 36H RET 程序名称 WRITE 18B20 功能 将 A 保存的数值写入 DS1820 中 入口参数 A 寄存器 出口参数 无 WRITE 18B20 MOV R2 8 一共 8 位数据 串行通信 CLR C WR1 CLR P DS18B20 MOV R3 07 DJNZ R3 RRC A 循环右移 MOV P DS18B20 C MOV R3 3CH DJNZ R3 23 2 46 微妙 SETB P DS18B20 NOP DJNZ R2 WR1 A 里面一共是 8 位 所以要送 8 次 SETB P DS18B20 释放总线 RET 程序名称 READ 18B20 功能 读取 18B20 中的数据 由于是串行通信 每次读取一个 循环 8 次读取 入口参数 TEMPRATURE L 出口参数 无 READ 18B20 MOV R4 4 将温度高位和低位从 DS18B20 中读出 MOV R1 TEMPERATURE L RE00 MOV R2 8 数据一共有 8 位 RE01 CLR C SETB P DS18B20 NOP NOP CLR P DS18B20 NOP NOP NOP SETB P DS18B20 MOV R3 09 RE10 DJNZ R3 RE10 MOV C P DS18B20 毕业论文设计 第 44 页 共 48 页 MOV R3 3CH RE20 DJNZ R3 RE20 RRC A DJNZ R2 RE01 MOV R1 A DEC R1 DJNZ R4 RE00 RET 程序名称 SCAN KEY 功能 扫描键盘 入口参数 DIS BUF G DIS BUF S DIS BUF B 出口参数 KEY BUF G KEY BUF S kEY BUF B SCAN KEY JB K ENTER QUIT 如果又 Enter 键入 则开始键盘输入 LCALL K DELAY JB K ENTER QUIT CLR ENTER FLAG 每次进来都赋值输入标志 设置为 0 MOV KEY BUF G DIS BUF G 将当前的温度赋值给 KEY BUF MOV KEY BUF S DIS BUF S MOV KEY BUF B DIS BUF B K LOOP JB ENTER FLAG QUIT 如果输入完成 ENTER FLAG 则为 1 退出键盘程 序 JB K ENTER KUP CALL PRO ENTER KUP JB K UP KDOWN CALL PRO UP KDOWN JB K DOWN LOOPA CALL PRO DOWN LOOPA LCALL DISPLAY SJMP K LOOP QUIT RET 程序名称 PRO ENTER 功能 确认键盘输入和退出键盘输入 入口参数 ENTER FLAG 出口参数 ENTER FLAG PRO ENTER CALL K DELAY JB K ENTER K LOOP 按钮抖动处理 SETB E NTER FLAG CALL K DELAY RET 程序名称 PRO UP 功能 数值上调处理 毕业论文设计 第 45 页 共 48 页 入口参数 KEY BUF G KEY BUF S KEY BUF B 出口参数 DIS BUF G DIS BUF S DIS BUF B PRO UP CALL K DELAY JB K UP K LOOP 按钮抖动处理 INC KEY BUF G 个位增一 MOV A KEY BUF G CJNE A 0AH UPNEXT 个位增加到 10 回 0 MOV KEY BUF G 00H INC KEY BUF S 十位加一 MOV A KEY BUF S CJNE A 0AH UPNEXT 十位超过 99 溢出了 MOV R0 200 ERROR1 LCALL ERR 出错 显示 8888 DJNZ R0 ERROR1 DEC KEY BUF S 退回 99 MOV KEY BUF G 09H UPNEXT MOV DIS BUF G KEY BUF G MOV DIS BUF S KEY BUF S MOV DIS BUF B KEY BUF B CALL K DELAY RET 程序名称 PRO DOWN 功能 数值下调处理 入口参数 KEY BUF G KEY BUF S KEY BUF B 出口参数 DIS BUF G DIS BUF S DIS BUF B PRO DOWN CALL K DELAY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度租赁期满后购买选项合同标的及购买价格详细描述
- 博导教育模拟试题及答案
- 堤防工程造价管理与预算控制
- 房屋建筑施工材料运输与存储管理方案
- 2025年大学微生物试题及答案
- 变压器配件生产项目建设工程方案
- 儿童入学保障学区房租赁合同范本
- 气象观测站空调设备采购、安装及数据采集合同
- 环保项目投资风险控制连带责任担保协议
- 畜牧养殖用地租赁合同范本-牛羊养殖项目合作
- 2024年学校安全教育讲稿范文(2篇)
- 化粪池及隔油池清洁服务方案
- 骨科患者辅助器具选择与使用
- 电力电缆工程施工组织设计
- 劳动课种植教学方案
- 小学数学《分数除法》50道计算题包含答案
- 2024年7月1日实施新版医疗器械采购、收货、验收、贮存、销售、出库、运输和售后服务工作程序
- HYT 262-2018 海水中溶解甲烷的测定 顶空平衡-气相色谱法
- 小儿入秋养生知识讲座
- 《无线通信基础及应用》课件第3章
- 建筑业市场营销与销售团队培训
评论
0/150
提交评论