基于LCD1602电子时钟课程设计报告.doc_第1页
基于LCD1602电子时钟课程设计报告.doc_第2页
基于LCD1602电子时钟课程设计报告.doc_第3页
基于LCD1602电子时钟课程设计报告.doc_第4页
基于LCD1602电子时钟课程设计报告.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

信息与电子工程学院信息与电子工程学院 课程设计报告课程设计报告 课课 程程单片机技术应用单片机技术应用 设计题目设计题目基于基于 LCD1602LCD1602 电子时钟电子时钟 专专 业业 班班 级级 姓姓 名名学学 号号分工分工成成 绩绩 成成 员员 指导老师指导老师 答辩日期答辩日期 目 录 1 一 一 课程设计概述课程设计概述 2 2 1 1 课程设计背景 2 1 2 课程设计内容 2 1 3 课程设计技术指标 2 二 二 方案的选择及确定方案的选择及确定 2 2 2 1 单片机芯片的选择 2 2 2 显示模块的选择 3 2 3 实时时间计算模块的选择 3 2 4 实时环境温度采集模块选择 3 2 5 电路设计最终方案决定 4 三 三 系统硬件设计系统硬件设计 4 4 3 1 主控模块 4 3 2 LCD 显示模块设计 5 3 3 时间计算模块设计 5 3 4 实时环境温度检测模块 6 3 5 报警模块 6 3 6 设置模块 7 3 7 电源接口部分 7 四 四 系统软件设计系统软件设计 7 7 4 1 主函数 7 4 2 设置模块 8 4 3 1602 液晶屏 9 4 4 软件原理图 10 五 五 系统调试过程系统调试过程 1010 5 1 软件调试 10 5 2 硬件调试 11 六 六 结论结论 1111 七 七 遇到的问题及解决方法和总结遇到的问题及解决方法和总结 1111 7 1 硬件方面 11 7 2 软件方面 12 7 3 总结 12 2 八 八 参考文献参考文献 1212 九 九 附附 录录 1313 3 一 一 课程设计概述课程设计概述 1 11 1 课程设计背景课程设计背景 随着微电子技术的高速发展 单片机在国民经济的个人领域得到了广泛的运用 单 片机以体积小 功能全 性价比高等诸多优点 在工业控制 家用电器 通信设备 信 息处理 尖端武器等各种测控领域的应用中独占鳌头 单片机开发技术已成为电子信息 电气 通信 自动化 机电一体化等专业技术人员必须掌握的技术 而电子万年历作为电子类小设计不仅是市场上的宠儿 也是是单片机实验中一个很 常用的题目 因为它有很好的开放性和可发挥性 因此对作者的要求比较高 不仅考察 了对单片机的掌握能力更加强调了对单片机扩展的应用 而且在操作的设计上要力求简 洁 功能上尽量齐全 显示界面也要出色 1 21 2 课程设计内容课程设计内容 利用单片机 时钟芯片 DS1302 温度传感器 DS18B20 1602 液晶屏等实现日期 时 间 温度的显示 即是一个电子时钟 具体的功能如下 1 通过 DS1302 能够准确的计时 时间可调并在液晶屏上显示出来 2 通过 DS18B20 能够实时 准确的检测当前环境温度 3 利用程序控制单片机实现闹钟功能 1 31 3 课程设计技术指标课程设计技术指标 1 LCD 液晶每行刷新显示 2 实时时钟可提供年 月 日 时 分和秒 每月的天数可以自动调整 且具有 闰年补偿功能 3 时间是 24 小时制 年限 2000 年 2099 年 4 测量温度范围为 0 60 误差为 0 5 C 二 二 方案的选择及确定方案的选择及确定 2 12 1 单片机芯片的选择单片机芯片的选择 方案 1 采用 AT89S51 芯片作为硬件核心 该芯片采用 Flash ROM 内部具有 4KB ROM 存储空间 而且与 MCS 51 系列单片机完 全兼容 但是需要通过下载板来下载 比较不方便 方案 2 采用传统的 STC89C52RC 芯片作为硬件核心 4 该芯片具有 8KB 在线系统可编程 Flash 存储器 STC89C52RC 使用经典的 MCS 51 内 核 但做了很多的改进使得芯片具有传统 51 单片机不具备的功能 并且可直接使用串口 下载 因 AT89S51 需要通过下载板下载 而 STC89C52RC 可直接使用串口下载 所以选择采 用方案 2 STC89C52RC 作为主控制系统 2 22 2 显示模块显示模块的选择的选择 方案 1 8 段数码管显示 8 段数码管是利用发光二极管的特性组合而成数字显示器件 通过控制相应的二极管 的状态显示相应的数字 采用数码管显示 数码管亮度高 体积小 重量轻 但其显示信 息简单 有限 操作比较液晶显示来说略显繁琐 方案 2 1602 液晶屏显示 1602 液晶也叫 1602 字符型液晶 它是一种专门用来显示字母 数字 符号等的点阵 型液晶模块采用液晶显示 液晶显示功耗低 轻便防震 由于设计显示信息比较多 占 用的系统资源少 操作方便 因本设计显示的字符较多 1602LCD 可以显示 32 个字符 而 8 段数码管显示的字符 较少 且操作比液晶显示略显繁琐 所以采用方案 2 1602 液晶屏组成本设计的显示模 块 2 32 3 实时时间计算模块实时时间计算模块的选择的选择 方案 1 采用 STC89C52RC 芯片 STC89C52RC 单片机内部带有定时 计数功能 此定时功能是通过对外部晶振的脉冲进 行计数 从而达到计时功能 只要使用 12MHZ 实现零误差的计时 因此可以利用此功能 实现计时 但因为只有单一的计时功能 要实现 电子时钟 的功能需要较复杂的程序 时间计算逻辑较困难 所以使用不便 方案 2 采用 DS1302 芯片 DS1302 是美国 DALLAS 公司推出的一种高性能 低功耗 带 RAM 的实时时钟芯片 该 芯片采用 3 线串行接口方式 可提供年月日 星期 时分秒等时间信息 并可根据月份 和闰年的情况自动调整月份的结束日期 内部带有 31 个字节 RAM 用于存放临时性数据 同时具有可编程涓细电流充电能力 因 STC89C52RC 芯片时间计算逻辑较困难 而 DS1302 可根据月份和闰年的情况自动 调整月份的结束日期且具有编程涓细电流充电能力 所以采用方案 2 实现实时计时功能 5 2 42 4 实时环境温度采集模块实时环境温度采集模块选择选择 方案 1 采用热敏电阻 热敏电阻是开发早 种类多 发展较成熟的敏感元器件 热敏电阻由半导体陶瓷材 料组成 利用的原理是温度引起电阻变化 通过一定的电路可以将周围环境的温度变化 转化成电压的变化 通过 AD 转化器件将信号传输给单片机进行分析 所以热敏电阻需要 的外部器件较多 方案 2 采用 DS18B20 DS18B20 是美国 DALLAS 公司生产的数字温度传感器 采用单总线的接口方式与微处 理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯 在使用中可以不 接任何外围元件 或者在单总线上接一个 4 7K 的上拉电阻 支持多点组网功能 多个 DS18B20 可以并联在惟一的单线上 实现多点测温 供电方式灵活 DS18B20 可以通过内 部寄生电路从数据线上获取电源 因此非常适合本系统使用 因热敏电阻需要的外部器件较多 而 DS18B20 在使用中可以不接任何外围元件 或 者在单总线上接一个 4 7K 的上拉电阻 所以采用方案 2 构成本设计的实时温度采集 模块 2 52 5 电路设计最终方案决定电路设计最终方案决定 综上各方案所述 本系统以 STC89C52RC 单片机为控制核心 通过与 DS1302 和 DS18B20 通信获取实时时间和实时环境温度 并将得到的数据通过 1602 液晶显示出来 同时通过对应的按键调整相应的值 并且通过蜂鸣器实现报警功能 因此本设计的总体 方案组成框图如图 2 1 所示 显示模块 1602 液晶 S T C 8 9 C 5 2 R C 报警模块 蜂鸣 时间计算模块 DS1302 实时温度采集模块 DS18B20 设置模块 独立按键 图 2 1 总体方案组成框图 6 三 三 系统硬件设计系统硬件设计 3 13 1 主控模块主控模块 本次课程设计主要用到 STC89C52RC 单片机 硬件原理图 见附录图一 端口分配 表如 3 1 所示 表 3 1 端口分配表 引脚序号引脚名称作用及功能 1P1 0 DS1302 时钟输入 2P1 1 时钟串行数据输入 输出端 3P1 2 时钟芯片复位端 5 8P1 4 P1 7 按键设置 9RST 芯片复位端口 13P3 3 实现 18B20 温度的输入 16P3 6 接蜂鸣器 实现闹钟功能 18 19XTAL1 XTAL2外部晶振端口 26P2 5 实现 1602 数据和指令选择控制端 27P2 6 1602 读写控制端 28P2 7 1602 数据读写操作控制位 30 31ALE EA地址锁存端口 烧写程序的端口 32 39P0 输出数据 控制 1602 液晶屏的显示 3 23 2 LCDLCD 显示模块设计显示模块设计 1602 液晶功耗较小可直接与单片机接口相接 电源直接与电源电路相接为 5V 对比 度可调 本设计使用单片机的 P0 口和 P2 口与 1602 进行通信 另外 1602 有 2 行显示 每行显示的字符数为 16 个 可以用于显示字母 数字 符号等 并具有简单且功能较强 的指令集 可以实现字符显示 移动 闪烁等功能 1602 液晶与单片机接口电路如图 3 1 所示 图 3 1 1602 液晶与单片机接口 7 3 33 3 时间计算模块设计时间计算模块设计 DS1302 通过三根 I O 线实现与单片机的通信 依靠 2 3 脚外接的晶振与其内部的电 容配合来产生时钟脉冲的 当外接晶振电路振荡时 DS1302 计时正确 当外接晶振电路 停振时 DS1302 计时停止 因此 32 768kHz 晶振是造成 DS1302 工作不稳定的主要因素 因其功耗很小 当 1 脚的主电源超过 8 脚接的备用电源加 0 2V 时 由主电源对芯片供电 否则 有备用电源对芯片供电 所以即使电源掉电后通过 3V 的电池仍能维持芯片精确走 时 DS1302 与单片机接口电路如图 3 2 所示 图 3 2 DS1302 与单片机接口 3 43 4 实时环境温度检测模块实时环境温度检测模块 DS18B20 通过单总线实现与单片机的通信 系统中的数据交换 控制都由这根线完成 在使用中 DS18B20 没有用到任何外围元件 可工作在 15 100 内 DS18B20 与单片机接口电路如图 3 3 所示 图 3 3 DS18B20 与单片机接口 3 53 5 报警模块报警模块 在本设计中蜂鸣器直接接在单片机 P3 6 上 报警模块采用单片机输出 1 25KHZ 的频 率从而使蜂鸣器发出声音 方波图如图 3 4 所示 8 图 3 4 方波图 3 63 6 设置模块设置模块 设置模块采用四个按键 K1 K4 与单片机 P1 4 P1 5 P1 6 P1 7 接口相接 其中 K1 为设置模块的选择位 K2 是增加键 K3 是减少键 K4 为退出按键 独立按键与单片机接口电路如图 3 5 所示 图 3 5 独立按键与单片机接口 3 73 7 电源接口部分电源接口部分 采用 USB 接口从电脑接到电源接口中 拨动开关可控制电路的接通和关闭 并用一 个发光二极管作电源指示 电源接口如图 3 6 所示 图 3 6 电源接口 四 四 系统软件设计系统软件设计 软件设计是本设计的关键 软件程序编写的好坏直接影响着系统运行情况的良好 本系统采用具有编写灵活 移植方便 便于模块化设计的 C 语言编写 并通过 Proteus 9 软件进行仿真 完成各种实质性功能的设计 4 14 1 主函数主函数 主函数是程序功能总结显示的函数 其主要显示的是时间主要部分和当前实时时间 当按下按键 2 时 1602 显示当前温度状态 并延时 5s 后返回当前时间显示状态 当闹钟 功能打开 实时时间又和闹钟时间相等就会发出嘀嘀的响声并且在液晶屏上有相应的提 示 此时按按键 4 退出 当进入设置状态完成后退出就回到当前时间显示状态 主函数程序框图如图 4 1 所示 显示欢迎界面 按 K2 显示时间主要部分 清屏显示实时时间 设 置 模 块 清屏显示当前温度 清屏显示时间主要部分 清屏显示 TIME UP 清屏显示时间主要部分 实时 闹钟 闹钟开 报 警 按 K4 是 是 是 是 否 否 否 A A 否 初始化 开 始 图 4 1 主函数程序框图 4 24 2 设置模块设置模块 设置模块分时间设置 闹钟设置 最高温度报警设置 要先按下按键 1 才能进入设 置模块 然后按下按键 1 进入设置时间模块 按键 2 进入最高温度报警模块 按键 3 进 10 入设置闹钟模块 最后按下按键 4 退出当前状态 设置步骤流程图如图 4 2 所示 按 K1 进入设置模块 进入时间调整 按 K2 按 K3 进入高温报警设置 按 K4 进入闹钟时间设置 是 是 是 是 否 否 否 否 A A 按 K1 是 否 退 出 图 4 2 设置步骤流程图 4 34 3 16021602 液晶屏液晶屏 1602 液晶屏是此设计的主要输出部分 有 2 行显示 每行 16 个字符 根据写入的位 置而显示 当显示欢迎界面时是流动的 整个屏幕向右移动 1602LCD 流程图如图 4 3 所示 开 始 11 1602 初始化 刷新显示第一行 数据 刷新显示第二行 数据 结 束 开 始 图 4 3 1602LCD 流程图 4 4 软件原理软件原理图图 软件原理图如附录图二所示 这个设计中 STC89C52RC 主要功能是储存程序 根据 程序的内容对各个端口进行判断并作出相应的处理 DS1302 主要功能是控制年 月 日 时 分 秒的显示效果 LCD1602 主要功能是将所要显示的显示出来 DS18B20 主要功能 是控制温度的显示效果 通电后 进入欢迎界面 前后延时 2 8s 后显示当前实时时间 若按下按键 1 就进 入调节状态 此时在按下按键 1 为设置时间状态 按下按键 2 为设置最大温度报警状态 按按键 3 为设置闹钟状态 按下按键 4 为退出调节状态 若按下按键 2 则是显示当前温 度 5s 后自动跳回显示当前实时时间 五 五 系统调试过程系统调试过程 系统调试共分为两大部分 一个是软件调试 另一个是硬件调试 其中软件仿真通 过 Protues 实现 硬件部分现在 Protel99SE 上设计出硬件电路图 画出 PCB 图 然后再 制造出实物 调试方法采用先分别调试各单元模块 调通后再进行整体调试的方法 以 提高调试效率 5 15 1 软件调试软件调试 先根据仿真检测当中的元件是否符合电路的设计 在 KeilC51 写入程序并且修改至 编译正确 在将写好的程序入入到 Protues 软件单片机芯片上 进行仿真 仿真结果如下所示 图 a 显示实时时间 图 b 显示当前温度 图 c 当达到设置的最高温度 图 d 当达到设置的闹钟时间 图 e 当进入调节状态 图 f 当调节时间 12 图 g 当调节最高温度 图 h 当调节闹钟 5 25 2 硬件调试硬件调试 根据仿真后的电路图进行做板 先用万用表检测各元器件是否正确 再焊接电路 完成后检查无误就将程序用单片机板下载到芯片上 后把芯片拔下插入实物板上 即可 工作 上电后 拨动电源开关就进入欢迎界面 2 8s 后进入当前实时时间状态 按下按 键 1 进入调节状态 此时按下按键 1 为设置时间状态 按下按键 2 为设置最大温度报警 状态 按按键 3 为设置闹钟状态 按下按键 4 为退出调节状态 在调节状态时按键 2 为 对应增加键 按键 3 为对应减键 K4 为退出按键 按下按键 2 后用手捏住 DS18B20 芯片 在液晶屏上显示的温度有明显的变化 所以判断芯片是良好的 六 六 结论结论 这次课程设计达到了预期的 90 有显示实时时间和实时温度 但是温度的显示不完 全正确 在负数时有三个温度值显示错误 时间的设置逻辑比较啰嗦 没有做到简单化 例外还加了欢迎界面 闹钟功能 最高温度报警功能 下面从软件和硬件两个方面具体 说明 硬件的制作要涉及到 protel 软件的运用 在画原理图的时候如果连错了就直接导致 硬件的出错 所以画图的时候要特别注意 到导入 PCB 时也是要特别注意的 布板不当 也是直接影响实物的制作 对于电子时钟的制作 我们基于小系板来实现 外接显示部 分的 1602LCD 液晶屏 温度传感部分 DS18B20 提供实时时间部分 DS1302 蜂鸣器 电 源接口部分等 总之 一步步制作下来我们完成的还是比较可观的 软件的编写上我们出现了较大的困难 电子时钟的程序有些复杂 一开始对于我们 来说毫无头绪 后来下了很大的功夫且在老师及同学的指导下慢慢的进入了状态 虽然 过程出现很多困难 但结果还是实现了电子时钟的功能 不过在显示温度负数时有三个 数值显示错误 分别是 16 32 48 另外设置模块的逻辑没有做到简单化 在 设置模块时只能退出本级的设置 而不能直接退出到当前实时时间显示状态 13 七 七 遇到的问题及解决方法和总结遇到的问题及解决方法和总结 7 17 1 硬件方面硬件方面 画的 PCB 板焊盘不够大 又没有相应大小的砖针 而且在融板过程中出现了差错 最后导致 PCB 板不完美 解决方案 最终决定自己用万能板焊接 7 27 2 软件方面软件方面 由于对 C 语言程序的认知不深入 在修改程序时 出现了以下几点问题 1 欢迎界面的时间太长 解决方案 修改欢迎界面的延时时间 2 温度显示错乱 并且在显示时高位自动补零 解决方案 通过修改温度函数使其高位的零自动隐藏 但是温度在 16 32 48 度 时仍然会出现错误 比实际的温度高 16 度 其余温度值时显示正确 3 秒钟调节时会自动转零 解决方案 把自动转零部分的程序改为秒钟调节功能 4 进入调节时间状态时字符闪烁以至于看不清楚调节的大小 解决方案 把 1602 的字符闪烁指令改为光标指令 5 在报警时无声音 解决方案 修改报警模块 利用控制 P3 6 脚电源的通断 使蜂鸣器发出嘀嘀的响声 7 37 3 总结总结 课程设计的完成 为我们的大二下学期学习生活画下了最后一笔 在做课程设计的日子里得到了大量课内外的知识巩固 使得我们的动手能力和专业技 能都有了很大的提高 让我们认识到脚踏实地 认真严谨是学习的态度 不怕困难 坚持不懈 吃苦耐劳的精神是我们在这次设计中最大的收益 我想这是一次意志的磨练 是对我实际能力的一次 提升 也会对我未来的学习和工作有很大的帮助 在这次设计中也使我们的同学关系更进一步了 同 学之间互相帮助 有什么不懂的大家在一起商量 听听不同的看法对我们更好的理解知识 所以在这 里非常感谢帮助我们的同学 14 八 八 参考文献参考文献 1 常敏 王涵 单片机应用程序开发与实践 P219 2 江志红 51 单片机技术与应用系统开发案例精选 3 赵明明 索世文 王守中 51 单片机应用开发手册 指令 模块 实例 4 王守中 51 单片机开发入门与典型实例 P149 5 天津锐志单片机开发网 6 杨黎 基于 C 语音的单片机应用技术与 Proteus 仿真 P21 九 九 附附 录录 1 仪器与设备清单 工具 设备和耗材数量 电脑1 台 KeiluKision41 套 Proteus7 7 软件1 套 单片机实训板1 块 杜邦导线16 条 Protel99SE1 套 万用表1 套 2 元器件清单 元件名称型号数量 个 编号价格 元 个 单片机STC89C52RC1A14 液晶LMD16L1Y118 芯片DS13021Y23 温度芯片DS18B201Y313 晶振12MHZ 32 768 KHZ 2JZ1 JZ21 瓷片电容22pF2C1 C2 电解电容22u10uf1C3 排阻10k1RP1 按钮6 6 55K1 K50 1 电阻10k 1k2R1 r2 可调电阻1k1POT1 电池1 5V2DC0 5 电源插座1DY2 拨动开关0 9 0 3 1 1cm1KG0 3 发光二极管LED1LED0 1 蜂鸣器TMB12A051LB0 8 15 排针1 40PIN2 54mm2 排 CON0 3 原理图 见图一 4 PCB 图 见图三 5 实物图 见图四 6 操作说明书 a 正常显示时按下 K1 进入调节状态 此时按下 K1 为设置时间状态 按下 K2 为设 置最大温度报警状态 按 K3 为设置闹钟状态 按下 K4 为退出调节状态 在调节状态时 K2 为对应增加键 K3 为对应减键 K4 为退出按键 b 正常显示时按下 K2 显示当前温度并延时 5 秒 报警时按 K4 退出 图 1 硬件原理图 图 2 软件原理图 图 3 PCB 16 程序 include include unsigned char code displaywelcome Welcome To My Lcd Timer 欢迎界面 unsigned char code displaywish Happy Every Day 欢迎界面 unsigned char code overtemperature OVERTEMPERATURE unsigned char code digit 0123456789 数字代码 unsigned char mode TH TL TN TD length tempswitch Maxtemp 40 amode alarmmode minutes hours minutea seconds houra 12 sbit SCLK P1 0 DS1302时钟输入 sbit DATE P1 1 DS1302数据输入 sbit REST P1 2 DS1302复位端口 sbit SET P1 4 DS1302设置模式选择位 sbit ADD P1 5 增加 sbit RED P1 6 减小 sbit CANL P1 7 sbit beep P3 6 位定义 定义P 6位fmp void delay1ms int i 1毫秒延时 int j k while i for j 76 j 1 j for k 29 k 1 k void delaynus unsigned char n 延时若干微秒 unsigned char i for i 0 i0 i nop void baojing 报警 unsigned int j h y for h 0 h 3 h for y 0 y 10 y beep beep for j 0 j 50 j dely500 DS1302模块 void Write1302 unsigned char date 向1302写数据 unsigned char i SCLK 0 delaynus 2 for i 0 i 1 void WriteSet1302 unsigned char cmd unsigned char date 根据相应的命令输入相应的数 据 REST 0 SCLK 0 REST 1 Write1302 cmd delaynus 5 18 Write1302 date SCLK 1 REST 0 unsigned char Read1302 void 读取1302数据 unsigned char i date delaynus 2 for i 0 i 1 if DATE 1 date 0 x80 SCLK 1 delaynus 2 SCLK 0 delaynus 2 return date unsigned char ReadSet1302 unsigned char cmd 根据命令读取1302相应的值 unsigned char date REST 0 SCLK 0 REST 1 Write1302 cmd delaynus 2 date Read1302 SCLK 1 REST 0 return date void IntDS1302 void DS1302初始化 unsigned char flag flag ReadSet1302 0 x81 if flag 根据写状态寄存器命令字 写入不保护指令 WriteSet1302 0 x80 0 10 4 0 10 根据写秒寄存器命令字 写入秒的初始值 WriteSet1302 0 x82 0 10 4 0 10 根据写分寄存器命令字 写入分的初始值 WriteSet1302 0 x84 0 10 4 0 10 根据写小时寄存器命令字 写入小时的初始值 WriteSet1302 0 x86 0 10 4 0 10 根据写日寄存器命令字 写入日的初始值 WriteSet1302 0 x88 0 10 4 0 10 根据写月寄存器命令字 写入月的初始值 19 WriteSet1302 0 x8c 10 10 4 10 value display Second seconds value ReadSet1302 0 x83 minutes value display Minute minutes value ReadSet1302 0 x85 hours value display Hour hours value ReadSet1302 0 x87 day value display Day day value ReadSet1302 0 x89 month value display Month month value ReadSet1302 0 x8D year value display Year year void displaystar void 显示欢迎界面 unsigned char i j Write Address 0 x0f while displaywelcome i 0 Write Date displaywelcome i i delay1ms 1 24 i 0 Write Address 0 x4f while displaywish i 0 Write Date displaywish i i delay1ms 1 j 40 while j Write com 0 x18 循环左移 delay1ms 70 Write com 0 x01 delay1ms 10 void gbdisplay unsigned char address 时间调整时光标闪烁 Write Address address delay1ms 5 Write com 0 x0e delay1ms 5 void displaymaxt unsigned char x 显示最大温度 unsigned char i j k Write com 0 x0c delay1ms 2 Write Address 0 x44 i x 100 j x 10 k x 10 Write Date digit i Write Date digit j Write Date digit k 时间调整部分 void hourset void 调时 unsigned char timevalue hour delay1ms 500 防止多次触发 WriteSet1302 0 x8e 0 x00 将写保护去掉 确保能正常将调整后的数值写入DS1302 timevalue ReadSet1302 0 x85 读取此时的数值 25 hour timevalue while 1 if ADD 0 delay1ms 50 if ADD 0 hour delay1ms 300 while ADD 0 if RED 0 delay1ms 50 if RED 0 hour delay1ms 300 if hour 0 hour 23 while RED 0 timevalue hour 10 24 hour 0 delay1ms 5 if CANL 0 mode 0 Write com 0 x0c break WriteSet1302 0 x8e 0 x80 void minuteset void 调分 unsigned char timevalue minute 26 delay1ms 500 WriteSet1302 0 x8e 0 x00 timevalue ReadSet1302 0 x83 minute timevalue while 1 if ADD 0 delay1ms 10 if ADD 0 minute if minute 60 timevalue 0 while ADD 0 if RED 0 delay1ms 10 if RED 0 minute delay1ms 300 if minute 0 minute 59 while RED 0 timevalue minute 10 60 minute 0 delay1ms 5 if CANL 0 mode 0 Write com 0 x0c break WriteSet1302 0 x8e 0 x80 void secondset void 调秒 27 unsigned char second timevalue delay1ms 500 WriteSet1302 0 x8e 0 x00 timevalue ReadSet1302 0 x81 second timevalue while 1 if ADD 0 delay1ms 50 if ADD 0 second delay1ms 300 while ADD 0 if RED 0 delay1ms 10 if RED 0 if second 0 second 59 while RED 0 timevalue second 10 60 second 0 delay1ms 5 if CANL 0 mode 0 Write com 0 x0c break WriteSet1302 0 x8e 0 x80 void yearset void 调年 unsigned char datevalue year 28 delay1ms 500 WriteSet1302 0 x8e 0 x00 datevalue ReadSet1302 0 x8d year datevalue while 1 if ADD 0 delay1ms 10 if ADD 0 year while ADD 0 if RED 0 delay1ms 10 if RED 0 year delay1ms 300 while RED 0 datevalue year 10 4 10 datevalue while 1 if ADD 0 delay1ms 10 if ADD 0 month if month 12 month 1 while ADD 0 if RED 0 delay1ms 10 if RED 0 month delay1ms 300 if month 0 month 12 while RED 0 datevalue month 10 4 10 datevalue while 1 if ADD 0 delay1ms 10 if ADD 0 day if day 31 day 1 while ADD 0 if RED 0 delay1ms 10 if RED 0 day delay1ms 300 if day 0 day 31 while RED 0 datevalue day 10 23 value 0 while ADD 0 if RED 0 delay1ms 20 if RED 0 value if value 0 value 23 while RED 0 houra value display houra houra gbdisplay 0 x45 if CANL 0 delay1ms 500 break void alarmminuteset void 闹钟分钟调整 while 1 if ADD 0 delay1ms 20 if ADD 0 minutea if minutea 59 minutea 0 while ADD 0 32 if RED 0 delay1ms 20 if RED 0 minutea if minutea 0 minutea 59 while RED 0 display minutea minutea gbdisplay 0 x48 if CANL 0 delay1ms 500 break void TimeSet void 时间调整函数 display Time if SET 0 delay1ms 10 if SET 0 mode delay1ms 20 switch mode case 1 gbdisplay 0 x48 hourset delay1ms 500 case 2 gbdisplay 0 x4c minuteset delay1ms 500 case 3 gbdisplay 0 x4f secondset delay1ms 500 case 4 gbdisplay 0 x09 yearset delay1ms 500 case 5 gbdisplay 0 x0c monthset delay1ms 500 case 6 gbdisplay 0 x0f dayset delay1ms 500 default break 33 显示温度模块 unsigned char code displayexplain Digit thermometer unsigned char code displayerror DS18B20 ERROR unsigned char code displayerror1 PLEASE CHECK unsigned char code displaypart1 WenDu unsigned char code displaypart2 Cent unsigned char flag 操作DS18B20模块 sbit DQ P3 3 unsigned char time DS18B20初始化 bit IntDS18B20 void bit temp DQ 1 for time 0 time 2 time DQ 0 for time 0 time 200 time DQ 1 for time 0 time 10 time temp DQ for time 0 time 200 time return temp 读DS18B20 unsigned char ReadDS18B20 void unsigned char i unsigned char dat for i 0 i 8 i DQ 1 nop DQ 0 nop DQ 1 for time 0 time 1 if DQ 1 dat dat 0 x80 else dat dat 0 x00 34 for time 0 time 10 time return dat 向DS18B20写数据 void WriteDS18B20 unsigned char date unsigned char i for i 0 i 8 i DQ 1 nop DQ 0 DQ date for time 0 time 10 time DQ 1 for time 0 time 1 for time 0 time0 length for i 0 i255 TH 1 TN TH 16 TL 16 TD TL 16 10 16 TN TH 16 TL 16 TD TL 16 10 16 Display Integer TN Display Decimal TD delay1ms 10 if tempswitch 1 if TN Maxtemp Write Address 0 x03 delay1ms 5 displayovert while 1 baojing if CANL 0 Write com 0 x01 delay1ms 5 break if CANL 0 break void tempset void if ADD 0 delay1ms 10 39 if ADD 0 Maxtemp while ADD 0 if RED 0 delay1ms 10 if RED 0 Maxtemp while RED 0 void Maxtempset void 高温报警设置 Write com 0 x01 delay1ms 10 Write Address 0 x03 delay1ms 10 Write Date T Write Date E Write Date M Write Date P Write Address 0 x09 Write Date S Write Date E Write Date T Write Address 0 x40 Write Date M Write Date A Write Date X Write Date while 1 if SET 0 delay1ms 20 if SET 0 Write Address 0 x4e Write com 0 x0f while 1 40 if ADD 0 delay1ms 20 if ADD 0 Write Address 0 x4b delay1ms 5 Write Date O Write Date N Write Date tempswitch 1 if RED 0 delay1ms 20 if RED 0 Write Address 0 x4b Write Date O Write Date F Write Date F tempswitch 0 if CANL 0 delay1ms 500 break if tempswitch 1 Write Address 0 x4b Write Date O Write Date N Write Date Write Address 0 x45 Write com 0 x0e tempset displaymaxt Maxtemp if CANL 0 41 Write com 0 x01 displaymainpart break if tempswitch 0 Write com 0 x0c Write Address 0 x4b Write Date O Write Date F Write Date F if CANL 0 Write com 0 x01 displaymainpart break void alarmswitchset void while 1 if ADD 0 delay1ms 100 if ADD 0 alarmmode 1 Wr

温馨提示

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

评论

0/150

提交评论