基于STC89C52RC万年历设计毕业论文.doc_第1页
基于STC89C52RC万年历设计毕业论文.doc_第2页
基于STC89C52RC万年历设计毕业论文.doc_第3页
基于STC89C52RC万年历设计毕业论文.doc_第4页
基于STC89C52RC万年历设计毕业论文.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

基于基于 STC89C52RC 万年历万年历设计毕业论文设计毕业论文 目 录 第一章 前言 9 1 1 引言 10 1 2 功能要求 10 第二章 系统硬件电路的设计 14 2 1 电路设计 14 2 2 系统硬件概述 15 第三章 系统软件设计 18 3 1 程序设计 18 3 2 程序流程图 19 结论 22 致 谢 23 参考文献 24 附录 主程序源代码 25 2 第一章 前言 随着人们生活水平的提高和生活节奏的加快 对时间的要求越来越高 精 准数字计时的消费需求也是越来越多 二十一世纪的今天 最具代表性的计时产品就是电子时钟 它是近代世界 钟表业界的第三次革命 第一次是摆和摆轮游丝的发明 相对稳定的机械振荡 频率源使钟表的走时差从分级缩小到秒级 代表性的产品就是带有摆或摆轮游 丝的机械钟或表 第二次革命是石英晶体振荡器的应用 发明了走时精度更高 的石英电子钟表 使钟表的走时月差从分级缩小到秒级 第三次革命就是单片 机数码计时技术的应用 使计时产品的走时日差从分级缩小到 1 600 万秒 从 原有传统指标计时的方式发展为人们日常更为熟悉的夜光数字显示方式 直观 明了 并增加了全自动日期 星期的显示功能 它更符合消费者的生活需求 因此 电子时钟的出现带来了钟表计时业界跨跃性的进步 我国生产的电子时钟有很多种 总体上来说以研究多功能电子时钟为主 使万年历除了原有的显示时间 日期等基本功能外 还具有闹铃 报警等功能 商家生产的电子万年历更从质量 价格 实用上考虑 不断的改进电子时钟的 设计 使其更加的具有市场 本设计为软件 硬件相结合的一组设计 在软件设计过程中 应对硬件部 分有相关了解 这样有助于对设计题目的更深了解 有助于软件设计 基本的 要了解一些主要器件的基本功能和作用 除了采用集成化的时钟芯片外 还有采用 MCU 的方案 利用 STC89 系列 单片机制成电子控制电路 采用软件和硬件结合的方法 控制 LCD 液晶显示 分别用来显示年 月 日 时 分 秒 其最大特点是 硬件电路简单 安装方 便易于实现 软件设计独特 可靠 STC89C52RC 是由宏晶公司推出的一种小型 单片机 95 年出现在中国市场 其主要特点为采用 Flash 存贮器技术 降低了 制造成本 其软件 硬件与 MCS 51 完全兼容 可以很快被中国广大用户接受 本文介绍了基于 STC89C52RC 单片机设计的电子时钟 首先我们在绪论中 简单介绍了单片机的发展与其在中低端领域中的优势以及课题的开发意义 接 着介绍了 STC89C52RC 单片机的硬件结构和本毕业设计所要外扩的 LED 液晶 显示方法 并在此基础上实现了时钟基本电路的设计 然后使用单片机 C 语言 3 进行时钟程序的设计 程序采用模块化结构 使得逻辑关系简单明了 维护方 便 1 1 引言 随着电子技术的发展 人类不断研究 不断创新纪录 目前万年历已经不 再局限于以书本形式出现 以计算机软件或者电子产品形式出现的万年历被称 为电子万年历 与传统书本形式的万年历相比 电子万年历得到了越来越广泛 的应用 采用电子时钟作为时间显示已经成为一种时尚 目前市场上各式各样 的电子时钟数不胜数 但多数是只针对时间显示 功能单一不能满足人们日常 生活需求 本文提出了一种基于 STC89C52RC 单片机的万年历设计方案 本方案以 STC89C52RC 单片机作为主控核心 与时钟芯片 DS1302 红外接收管 HS0038B LCD 显示等模块组成硬件系统 在硬件系统中设有温度检测模块和 LCD 显示器 能显示丰富的信息 根据使用者的需要可以随时对时间进行校准 选择时间等 综上所述此万年历具有读取方便 显示直观 功能多样 电路简 洁 成本低廉等诸多优点 符合电子仪器仪表的发展趋势 具有广阔的市场前 景 1 2 功能要求 本设计准备实现的功能 1 显示公历日期功能 年 月 日 时 分 秒以及星期 2 可通过红外遥控切换年 月 日及时 分 秒的显示状态 3 可随时调校年 月 日或时 分 秒 4 可每次增 减 1 进行时间调节 5 可动态完整显示年份 实现真正的万年历显示 4 1 3 方案论证 1 3 1 技术可行性 随着国内超大规模集成电路的出现 微处理器及其外围芯片有了迅速的发 展 集成技术的最新发展之一是将 CPU 和外围芯片 如程序内存 数据存储器 并行 I O 口 串行 I O 口 定时 计数器 中断控制器及其它控制部件集成在一 个芯片之中 制成单片计算机 而近年来推出的一些高档单片机还包括有许多 特殊功能单元 如 A D D A 转换器 调制解调器 通信控制器 锁相环 DMA 浮点运算单元 PWM 控制输出单元 PWM 输出时的死区可编程控制 功能等 因此 只要外加一些扩展电路及必要的信道接口就可以构成各种计算 机应用系统 如工业流水线控制系统 作为家用电器的主控制器 分布式控制 系统的终端节点或作为其主控制节点起中继的作用 数据采集系统 自动测试 系统等 单片机的出现 并在各技术领域中得到如此迅猛的发展 与单片机构成计 算机应用系统所形成的下述特点有关 1 单片机构成的应用系统有较大的可靠性 这些可靠性的获得除了依靠单 片机芯片本身的高可靠性以及应用有最少的联接外 还可以方便地采用软 硬 件技术 2 系统配置 系统扩展较典型 规范 容易构成各种规模的应用系统 应 用系统有较高的软 硬件利用系数 3 由于构成的应用系统是一个计算机系统 相当多的测 控功能由软件实 现 故具有柔性特征 不须改变硬件系统就能适当地改变系统功能 4 具有优异的性能 价格比 1 3 2 单片机的选择 方案一 采用传统的 STC89C52RC 作为万年历的控制核心 单片机算术 运算功能强 软件编程灵活 自由度比较大 可用软件编程实现各种算法和逻 辑控制 并且由于其体积小 功耗低 技术成熟和成本低等优点 使其在各个 领域应用广泛 5 方案二 采用 STC10F04 单片机 还带有非易失性 Flash 程序内存 它是一 种高性能 低功耗的 8 位 CMOS 微处理芯片 市场应用最多 其主要特点如下 8KB FLASH ROM 可以擦除 10000 次以上 数据保存 10 年 由于本系统对 CPU 运算速度要求很高 需要执行很复杂的运算 方案一 成本比较低 适合做设计 方案二运算速度高 性能好 所以两种方案都有可 取之处 选用方案一作为主方案 方案二作为备用方案 1 3 3 显示模块的选择 方案一 使用传统的 LED 数码管显示 数码管具有 低能耗 低损耗 低压 寿命长 耐老化 防晒 防潮 防火 防高 低 温 对外界环境要求 低 易于维护 同时其精度比较高 称重轻 精确可靠 操作简单 数码管采 用 BCD 编码显示数字 程序编译容易 资源占用较少 方案二 使用液晶显示屏显示时间数字 液晶显示屏 LCD 具有轻薄 短小 低耗电量 无辐射危险 平面直角显示以及影像稳定不闪烁等优势 可 视面积大 画面效果好 分辨率高 抗干扰能力强等特点 但由于液晶是以点 阵的模式显示各种符号 需要利用控制芯片创建字符库 编程工作量大 控制 器的资源占用较多 其成本稍微偏高 在使用时 不能有静电干扰 否则易烧 坏液晶的显示芯片 不易维护 根据以上的论述 采用方案二 在本系统中 我们采用了 1602 液晶显示 1 3 4 时钟芯片的选择方案与论证 方案一 直接采用单片机定时计数器提供秒信号 使用程序实现年 月 日 星期 时 分 秒计数 采用此种方案虽然减少芯片的使用 节约成本 但是 实现的时间误差较大 所以不采用此方案 方案二 采用 DS1302 时钟芯片实现时钟 DS1302 芯片是美国 DALLAS 公司推出的一种高性能 低功耗 带 RAM 的实时时钟芯片 它可以对年 月 日 周 时 分 秒进行计时 具有闰年补偿功能 而且精度高 工作电压为 2 5V 5 5V 2 5V 时电流小于 300nA 采用三线接口与 CPU 进行同步通信 并 6 可采用突发方式一次传送多个字节的时钟信号或 RAM 数据 根据以上的论述 采用方案二 在本系统中 我采用了 DS1302 时钟芯片 1 3 5 键盘模块的选择 在对日期和时间进行切换 对日期和时间进行调节校准过程中 系统需 要产生激励电流 因此需要用按键 方案一 使用红外遥控键盘 红外遥控键盘是指直接一个 I O 口与红外接 收管输出端相连构成红外接收电路 再配以红外遥控板构成一个红外收发系统 硬件配置简单灵活 软件结构复杂 方案二 使用矩阵式键盘 矩阵式键盘是由行线和列线组成 按键位于 行 列的交叉点上 行线 列线分别连接到按键开关的两端 其特点是简单且 不增加成本 这种键盘适合按键数量较多的场合 根据以上的论述 因本系统需要外观简化 使用方便 所以采用方案一 红外遥控键盘 1 3 6 总体方案论证与选择 按照系统设计功能的要求 初步确定系统由主控模块 时控模块 显示模 块 红外接收模块和闹铃模块共 5 个模块组成 电路系统构成框图如图 1 1 所 示 图 1 1 电子万年历电路系统构成框图 7 主控芯片使用 51 系列 STC89C52RC 单片机 时钟芯片使用美国 DALLAS 公司推出的一种高性能 低功耗 带 RAM 的实时时钟 DS1302 采用 DS1302 作为计时芯片 可以做到计时准确 更重要的是 DS1302 可以在很小电流的后 备电源 2 5 5 5V 电源 在 2 5V 时耗电小于 300nA 而且 DS1302 可以编程 选择多种充电电流来对后备电源进行慢速充电 可以保证后备电源基本不耗电 显示模块采用普通的 LCD1602 显示屏 第二章 系统硬件电路的设计 2 1 电路设计 电子万年历电路原理图为如图 2 1 所示 系统由主控制器 STC89C52RC 时钟电路 DS1302 1602 液晶显示电路 闹铃控制电路及红外接收电路组成 8 图 2 1 电子万年历电路原理图 2 2 系统硬件概述 2 2 1 主控制器 STC89C52RC STC89C52RC 单片机是宏晶科技推出的新一代高速 低功耗 超强抗干扰的单 片机 指令代码完全兼容传统 8051 单片机 12 时钟 机器周期和 6 时钟 机 器周期可以任意选择 主要特性如下 1 增强型 8051 单片机 6 时钟 机器周期和 12 时钟 机器周期可以任 意选择 指令代码完全兼容传统 8051 单片机 2 工作电压 5 5V 3 3V 3 工作频率范围 0 44MHz 4 用户应用程序空间为 8K 字节 5 片上集成 512 字节 RAM 6 ISP 在系统可编程 IAP 再应用可编程 无需专用编程器 无需专用 仿真器 可通过串口 RXD P3 0 TXD P3 1 直接下载用户程序 数 秒即可完成一片 7 具有看门狗功能 8 共 3 个 16 位定时器 计数器 及定时器 T0 T1 T2 9 工作温度范围 40 85 度 工业级 0 75 度 商业级 2 2 2 时钟电路 DS1302 DS1302 的性能特性 1 实时时钟 可对秒 分 时 日 周 月以及带闰年补偿的年进行比 较 2 用于高速资料暂存的 31 8 位 RAM 3 最少引脚的串行 I O 4 2 5 5 5V 电压工作范围 5 2 5V 时电流小于 300nA 6 用于时钟或 RAM 数据读 写的单字节或多字节数据传送方式 7 简单的三线接口 9 8 可选的慢速充电 至 VCC1 的能力 DS1302 工作方式简介及数据操作原理工作方式简介及数据操作原理 DS1302可以对年 月 日 星期 时 分 秒进行计时 且具有闰年补偿 功能 工作电压宽达2 5 5 5V 采用三线接口与CPU进行同步通信 并可采用 突发方式一次传送多个字节的时钟信号或RAM数据 DS1302内部有一个33 8的 用于临时性存放数据的RAM寄存器 DS1302 时钟芯片包括实时时钟 日历和 31 字节的静态 RAM 它经过一个 简单的串行接口与微处理器通信 实时时钟 日历提供秒 分 时 日 周 月 和年等信息 对于小于 31 天的月和月末的日期自动进行调整 还包括闰年校正 的功能 时钟的运行可以采用 24 小时或带 AM PM 的 12 小时格式 采用三线 接口与 CPU 进行同步通信 并可采用突发方式一次传送多字节的时钟信号或 RAM 数据 2 2 3 显示模块 显示部分采用普通的 1602 液晶显示 如图 2 1 以减少硬件电路 1602 液 晶模块采用 hd 44780 控制器 hd44780 具有简单而功能较强的指令集 可以实 现字符移动 闪烁等功能 1602 与单片机 MCU 通讯可采用 8 位或 4 位并行传 输两种方式 hd44780 控制器由两个 8 位寄存器 指令寄存器 IR 和数据寄 存器 DR 忙标志 BF 显示数 RAM DDRAM 字符发生器 ROM CGOROM 字符发生器 RAM CGRAM 地址计数器 RAM AC IR 用于寄存指令码 只能写入不能读出 DR 用于寄存数据 数据由内部操作自 动写入 DDRAM 和 CGRAM 或者暂存从 DDRAM 和 CGRAM 读出的数据 BF 为 1 时 液晶模块处于内部模式 不响应外部操作指令和接受数据 DDRAM 用来存储显示的字符 能存储 80 个字符码 CGROM 由 8 位字符码 生成 5 7 点阵字符 160 中和 5 10 点阵字符 32 种 8 位字符编码和字符的对应关 系 10 2 2 4 红外接收模块 红外接收电路采用 HS0038B 红外接收头接受红外线信号 硬件电路如图 2 1 所示 HS0038B 是标准 IR 遥控接收器系列 支持所有主要的传输码 主要特点如下 1 光检测器及前置放大器包装在一起 2 低功耗 3 TTL 和 CMOS 兼容性 4 改进对电场的屏蔽干扰 5 连续数据传输可能 800 比特 每秒 6 对环境光抗干扰能力强 HS0038B 内部框图如图 2 3 所示 图 2 3 HS0038B 内部框图 红外线遥控简介红外线遥控简介 红外线遥控就是将基带二进制信号调制为一系列的脉冲串信号 通过红外 发射管发射波长为 0 76 1 5 m 之间的近红外线来传送控制信号的 红外发光 二极管一般有黑色 深蓝 透明三种颜色 我们所使用的遥控器为普通车载遥 控器 采用 NEC 协议传输信号 NEC 协议标准 遥控载波的频率为 38KHz 占空比为 1 3 当某个按键按下 时 系统首先发射一个完整的全码 如果键按下超过 108ms 仍未松开 视为按 键一直按下 接下来发射的代码 连发代码 将仅由起始码 9ms 和结束码 2 5ms 组成 一个完整的全码 引导码 用户码 用户反码 数据码 数据反 码 其中 引导码高电平 4 5ms 低电平 4 5ms 系统码 8 位 数据码 8 位 共 32 位 其中前 16 位为用户识别码 能区别不同的红外遥控设备 防止不同 机种遥控码互相干扰 后 16 位为 8 位的操作码和 8 位的操作反码 用于核 对数据是否接收准确 收端根据资料码做出应该执行什么动作的判断 其发射 码值格式为图 2 4 所示 11 图 2 4 NEC 标准下的发射码表示图 发射资料时 0 用 0 56ms 高电平 0 565ms 低电平 1 125ms 表示 资料 1 用 高电平 0 56ms 低电平 1 69ms 2 25ms 表示 即发射码 0 表示发射 38khz 的红外线 0 56ms 停止发射 0 565ms 发射 码 1 表示发射 38khz 的红外线 0 56ms 停止发射 1 69ms 2 2 5 温度采集模块 温度采集电路采用 DS18B20 作为温度检测传感器 硬件电路如图 2 1 所示 DS18B20 特点如下 1 一线总线 数字化温度传感器 2 3V 到 5 5V 的宽电压工作范围 3 分辨率 9 12 位可设定 即精度可以设定 0 5 025 0 125 0 0625 2 2 6 闹铃控制模块 闹铃控制电路采用 商业闹钟的闹铃芯片作为发声主芯片 只需将闹铃芯 片输出端与扬声器相连 触发端与单片机 I O 口相连 由单片机控制其触发 硬件电路如图 2 1 所示 2 2 7 电源模块 电源模块采用 78 系列集成稳压器之 7805 作为主芯片 硬件电路如图 2 1 所示 其电路原理为由变压器将市电降为 AC 7 5V 再经桥式整流 电容滤波 7805 稳压 及得到系统工作电压 DC 5V 12 第三章 系统软件设计 3 1 程序设计 电子万年历的程序主要包括 4 个方面的内容 一是 DS1302 从单片机中读 取数据进行计数 二是利用外部中断检测红外接收头接收到的数据进行时间的 调整 三是控制 1602 显示时间 四是读取 DS18B20 的温度检测信号 STC89C52RC 单片机主要 I O 口的分配 P2 5 P2 7 分别接 1602 的 RS RW E 三个功能端 P0 口接 1602 的 8 位数据总线 P2 0 接闹铃芯片触发 端 P2 1 P2 3 分别接 DS1302 的 IO SCLK RST 端 P2 4 接 DS18B20 输出 端 P3 3 接 HS0038 输出端 本系统采用多 C 文件编写 h 文件用来声明 c 文件用来实现功能 具 有较强的模块化 3 2 程序流程图 程序结构图 13 主程序流程图 14 中断流程图 16 17 结论 在三月份 我开始了我的毕业论文工作 时至今日 论文基本完成 从最 初的茫然 到慢慢的进入状态 再到对思路逐渐的清晰 整个写作过程难以用 语言来表达 历经了一个多月的努力 紧张而又充实的毕业设计终于落下了帷 幕 回想这段日子的经历和感受 在这次毕业设计的过程中 我拥有了无数难 忘的回忆和收获 在设计过程中 充分发挥人的主观能动性 自主学习 学到了许多没学到 的知识 较好的完成了设计 达到了预期的目的 完了最初的设想 对电路的 设计 布局要先有一个好的构思 才显得电路板美观 大方 程序编写中 由 于思路不清晰 开始时遇到了很多的问题 经过静下心来思考 和同学讨论 理清了思路 反而得心应手 在此次设计中 知道了做凡事要有一颗平常的心 不要想着走捷径 一步一脚印 也练就了我的耐心 做什么事都在有耐心 此 次毕业设计中学到了很多很多东西 这是最重要的 总之 这次毕业设计使我 的能力得到了全方位的提高 使得我的操作能力和专业技能都有了很大的提高 这次毕业设计的制作过程是我的一次再学习 再提高的过程 在论文中我充分 地运用了大学期间所学到的知识 18 致 谢 通过这次毕业设计使我对电子技术的领悟更上一层楼了 在这里要非常感 谢金沙滩工作室以及我的指导老师李老师 是你的细心指导和关怀 使我能够 顺利的完成毕业论文 在此我要向李老师致以最衷心的感谢和深深的敬意 在 今后的学习生活中我将更加勤奋努力 不辜负老师和同学们的一片期望和关心 本设计在李老师的悉心指导和严格要求下完成 从课题选择 方案论证到 具体设计 无不凝聚着李老师的心血和汗水 在此向李老师表示深深的感谢和 崇高的敬意 通过这次设计 我学到了许多书本上学不到的知识 增强了自己的动手能 力和自信心 通过这次设计使我能力有了很大的提高 最后在老师的指导下完 成了自己的设计任务 但由于自己的知识水平有限 有许多不足之处 恳请老 师多多指教 19 参考文献 1 刘建辉 翼常鹏等 单片机智能控制技术 M 国防工业大学出版社 2007 4 2 李朝青 单片机 1602 第一排显示初始化 uint8 show 1602 addr1 TEMP 1602 第二排显示初始化 uint8 show Alarm Clock Alarm Clock uint8 show Alarm Clock1 int8 TIME1 7 55 59 23 31 12 7 12 初始化 1302 时间值 12 9 30 星期日 23 59 55 int8 clock 2 0 0 uint8 USER 0 进入校时 标志 uint8 IR TIM 0 红外按键 加 减校时 标志 uint8 CLOCK TIM 0 红外按键设置闹钟 加 减校时 标志 uint8 CLOCK MODE 0 进入闹钟校时 标志 uint8 CLOCK KG 0 闹钟开关 标志 void timing void 时间校准模块 void Alarm Clock void 闹铃时间校准模块 void clock on off void 闹铃开关模块 模块名称 INT1 init 功 能 打开外部中断 输 入 无 输 出 无 全局变量 无 void INT1 init void TMOD 0X01 IT1 1 下降沿触发中断 21 EX1 1 EA 1 void main void uint8 ans INT1 init init 1602 show 1602 addr show 1602 addr1 1602 初始化 set time TIME1 1302 初始化 while 1 read time TIME1 读取时间值 start temp 启动温度传感器 show time 0 x82 TIME1 6 送与 1602 显示 年 show time 0 x85 TIME1 4 送与 1602 显示 月 show time 0 x88 TIME1 3 日 show time 0 xc0 TIME1 2 时 show time 0 xc3 TIME1 1 分 show time 0 xc6 TIME1 0 秒 show mon TIME1 5 星期 ans read temp 读取温度值 write 1602 temp 0 xce ans 将读取的温度值送与 1602 显示 if USER 0 进入校时 timing if CLOCK MODE 0 进入闹铃校时 Alarm Clock if CLOCK KG 0 打开或关闭闹钟 clock on off 模块名称 timing void 功 能 数字钟校时 输 入 无 输 出 无 全局变量 USER TIME1 IR TIM 22 void timing void uint8 val while USER 0 进入校时 年 校 时 if USER 1 val read temp 读取温度值 write 1602 temp 0 xce val 将读取的温度值送与 1602 显示 twinkle com 0 x82 校时对象闪烁 while USER 1 校时对象为年 switch IR TIM case 1 if TIME1 6 99 TIME1 6 0 加校时 show time 0 x82 TIME1 6 IR TIM 0 break default break 月 校 时 if USER 2 val read temp 读取温度值 write 1602 temp 0 xce val 将读取的温度值送与 1602 显示 twinkle com 0 x85 校时对象闪烁 while USER 2 校时对象为月 switch IR TIM case 1 if TIME1 4 1 TIME1 4 13 23 show time 0 x85 TIME1 4 减校时 IR TIM 0 break case 2 if TIME1 4 12 TIME1 4 0 加校时 show time 0 x85 TIME1 4 IR TIM 0 break default break 日 校 时 if USER 3 val read temp 读取温度值 write 1602 temp 0 xce val 将读取的温度值送与 1602 显示 twinkle com 0 x88 校时对象闪烁 while USER 3 校时对象为日 switch IR TIM case 1 if TIME1 3 1 TIME1 3 32 show time 0 x88 TIME1 3 减校时 IR TIM 0 break case 2 if TIME1 3 31 TIME1 3 0 加校时 show time 0 x88 TIME1 3 IR TIM 0 break default break 星 期 校 时 if USER 4 val read temp 读取温度值 write 1602 temp 0 xce val 将读取的温度值送与 1602 显示 twinkle com 0 x8f 校时对象闪烁 24 while USER 4 校时对象为星期 switch IR TIM case 1 if TIME1 5 1 TIME1 5 8 write 1602 0 x8f TIME1 5 减校时 twinkle com 0 x8f IR TIM 0 break case 2 if TIME1 5 7 TIME1 5 0 加校时 write 1602 0 x8f TIME1 5 IR TIM 0 twinkle com 0 x8f break default break 小时 校 时 if USER 5 val read temp 读取温度值 write 1602 temp 0 xce val 将读取的温度值送与 1602 显示 twinkle com 0 xc0 校时对象闪烁 while USER 5 校时对象为小时 switch IR TIM case 1 if TIME1 2 24 TIME1 2 0 加校时 show time 0 xc0 TIME1 2 IR TIM 0 break 25 default break 分 校 时 if USER 6 val read temp 读取温度值 write 1602 temp 0 xce val 将读取的温度值送与 1602 显示 twinkle com 0 xc3 校时对象闪烁 while USER 6 校时对象为分 switch IR TIM case 1 if TIME1 1 60 TIME1 1 0 加校时 show time 0 xc3 TIME1 1 IR TIM 0 break default break 秒 校 时 if USER 7 val read temp 读取温度值 write 1602 temp 0 xce val 将读取的温度值送与 1602 显示 twinkle com 0 xc6 校时对象闪烁 while USER 7 校时对象为秒 switch IR TIM case 1 if TIME1 0 60 TIME1 0 0 加校时 show time 0 xc6 TIME1 0 IR TIM 0 break default break if USER 8 USER 0 write com 0 x0c set time return void Alarm Clock void 闹铃时间设定 if CLOCK MODE 1 show clock zfc 0 x80 show Alarm Clock 第一行显示为 Alarm Clock show zfc 0 xca show Alarm Clock1 第二行显示为 show time 0XCA clock 0 show time 0XCD clock 1 twinkle com 0 xca 校时对象闪烁 while CLOCK MODE 1 闹铃小时设置 switch CLOCK TIM case 1 if clock 0 24 clock 0 0 加校时 show time 0 xca clock 0 CLOCK TIM 0 break default break if CLOCK MODE 2 twinkle com 0 xcd 校时对象闪烁 while CLOCK MODE 2 闹铃分钟设置 switch CLOCK TIM case 1 if clock 1 60 clock 1 0 加校时 show time 0 xcd clock 1 CLOCK TIM 0 break default break if CLOCK MODE 3 show clock zfc 0 x80 show 1602 addr 恢复正常时钟显示 show zfc 0 xC0 show 1602 addr1 CLOCK MODE 0 void clock on off void switch CLOCK KG 28 case 1 打开闹钟 if clock 0 TIME1 2 若闹铃到了执行相应功能 else BUZZ 1 CLED 0 break case 2 关闭闹钟 CLOCK KG 0 BUZZ 1 CLED 1 break default break 模块名称 interrupt INT1 void 功 能 当有按键按下时进入中断 输 入 无 输 出 无 全局变量 IR BUF USER IR OK void interrupt INT1 void interrupt 2 uint16 time uint8 IR BUF 4 红外键值缓存 uint8 i j 红外解码 time IR LOW if time 9000 检测引导脉冲低电平持续时间为 8500 9000US return time IR HIGH if time 5000 检测引导脉冲高电平持续时间为 4000 5000US return for i 0 i 4 i for j 0 j 8 j time IR LOW if time 800 200 800us return 29 time IR HIGH if time 1680 200 1680us return IR BUF i 1 if time 1120 1120us IR BUF i 0X80 if IR BUF 2 IR BUF 3 判断解码是否正确 switch IR BUF 2 case 0X07 USER break 进入校时 case 0X15 IR TIM 1 break 减校时 case 0X09 IR TIM 2 break 加校时 case 0 x47 CLOCK KG break 开闹钟 case 0 x46 CLOCK MODE break 进入闹铃时间设定 case 0 x40 CLOCK TIM 1 break 闹铃时间减校时 case 0 x43 CLOCK TIM 2 break 闹铃时间加校时 default break h 函数声明文件代码如下 Main h 文件源代码如下 ifndef main h define main h include hardware h 硬件接口配置文件 include 1302 h 1302 驱动文件 include 1602 h 1602 驱动文件 include 18b20 h 18B20 驱动文件 include ir h 红外接收头驱动文件 endif 30 1602 h 文件源代码如下 ifndef 1602 h define 1602 h void init 1602 unsigned char val

温馨提示

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

评论

0/150

提交评论