电子万年历的设计.doc_第1页
电子万年历的设计.doc_第2页
电子万年历的设计.doc_第3页
电子万年历的设计.doc_第4页
电子万年历的设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

此文档收集于网络 如有侵权 请联系网站删除 精品文档 学学 院院 单片机原理及应用单片机原理及应用 课课 程程 设设 计计 题题 目目 电子万年历的设计电子万年历的设计 系系 部部 信息工程系信息工程系 班班 级级 姓姓 名名 学学 号号 指导教师指导教师 单片微机原理及应用单片微机原理及应用 课程设计任务书课程设计任务书 此文档收集于网络 如有侵权 请联系网站删除 精品文档 一 设计题目 内容及要求一 设计题目 内容及要求 设计题目 设计题目 电子万年历的设计 设计内容设计内容 要求使用 51 系列的 89C51 单片机设计实现电子万年历 可以显示阳历年 月 日 星期 时 分 秒和阴历月 日 在显示农历时间时 能标明是否是闰年 能够利用键盘调整及切换显示 可以 使用集成时钟芯片 设计要求 设计要求 1 进行系统总体设计 2 完成系统硬件电路设计 3 完成系统软件设计及仿真 4 撰写设计说明书 二 设计原始资料二 设计原始资料 Proteus 及 KEIL 仿真软件 实验箱 三 要求的设计成果 课程设计说明书 设计实物 图纸等 三 要求的设计成果 课程设计说明书 设计实物 图纸等 设计结果能正确运行 设计说明书一份 要求有硬件设计原理图 仿真结果图 源程序代码 四 进程安排四 进程安排 周一 查找资料 进行方案论证和系统硬件设计 周二 系统软件设计和编程实现 周三 利用程序调试 周四 仿真实现 检查设计结果 周五 撰写设计说明书 答辩 五 主要参考资料五 主要参考资料 1 彭为等 单片机典型系统设计实例精讲 M 北京 电子工业出版社 2006 2 李群芳 单片机原理 接口及应用 M 北京 清华大学出版社 2005 指导教师 签名 张国旭指导教师 签名 张国旭教研室主任 签名 教研室主任 签名 课程设计成绩评定表课程设计成绩评定表 此文档收集于网络 如有侵权 请联系网站删除 精品文档 出勤天数 出勤 情况 缺勤天数 出勤情况及设计过程表现 20 分 课设答辩 20 分 设计成果 60 分 成 绩 评 定 总成绩 100 分 提问 答辩 问题 情况 此文档收集于网络 如有侵权 请联系网站删除 精品文档 综 合 评 定 指导教师签名 年 月 日 此文档收集于网络 如有侵权 请联系网站删除 精品文档 目录 1 引言 1 2 设计方案选择 2 2 1 控制部分的方案选择 2 2 2 显示模块选择方案和论证 2 2 3 时钟芯片的选择方案和论证 2 2 4 电路设计最终方案决定 2 3 系统的硬件设计与实现 3 3 1 电路设计框图 3 3 2 系统硬件概述 3 3 3 主要单元电路的器件 3 3 3 1 单片机主控制模块 3 3 3 2 时钟电路模块的设计 4 3 3 3 显示模块的设计 6 3 3 4 74LS164 驱动模块 6 4 系统的软件设计 8 4 1 主程序流程图 8 4 2 阳历算法 8 4 3 阴历算法 8 4 4 时间调整程序流程图 11 5 体会 13 参考文献 14 附录一 整体设计图 15 附录二 系统程序清单 16 此文档收集于网络 如有侵权 请联系网站删除 精品文档 1 引言 随着微电子技术的高速发展 单片机在国民经济的个人领域得到了广泛的运用 单片机 以体积小 功能全 性价比高等诸多优点 在工业控制 家用电器 通信设备 信息处理 尖端武器等各种测控领域的应用中独占鳌头 单片机开发技术已成为电子信息 电气 通信 自动化 机电一体化等专业技术人员必须掌握的技术 而电子万年历作为电子类小设计不仅是市场上的宠儿 也是是单片机实验中一个很常用 的题目 因为它的有很好的开放性和可发挥性 因此对作者的要求比较高 不仅考察了对单 片机的掌握能力更加强调了对单片机扩展的应用 而且在操作的设计上要力求简洁 功能上 尽量齐全 显示界面也要出色 数字显示的日历钟已经越来越流行 特别是适合在家庭居室 办公室 大厅 会议室 车站和广场等使用 壁挂式LED数码管显示的日历钟逐渐受到人们 的欢迎 LED数字显示的日历钟显示清晰直观 走时准确 可以进行夜视 并且还可以扩展 出多种功能 所以 电子万年历无论作为比赛题目还是练习题目都是很有价值 本文通过对一个基于单片机的能实现万年历功能电子时钟的设计 从而达到学习 了解 单片机相关指令在各方面的应用 系统由主控制器AT89C51 时钟电路DS1302 显示电路 按键电路等部分构成 能实现时钟日历显示的功能 此文档收集于网络 如有侵权 请联系网站删除 精品文档 2 设计方案选择 2 1 控制部分的方案选择 采用 51 系列的 89C51 单片机 89C51 单片机有丰富的中断源和时基 方便本实验的设 计 它的准确度相当高 并且 C 语言和汇编兼容的编程环境也很方便来实现一些递归调用 I O 口功能也比较强大 方便使用 用 89C51 单片机做控制器最有特色的就是它的可编程音 频处理 可完成语音的录制播放和识别 这些都方便对设计进行扩展 使设计更加完善 成 本也相对低一些 2 2 显示模块选择方案和论证 方案一 采用 LED 液晶显示屏 液晶显示屏的显示功能强大 可显示大量文字 图形 显示多样 清晰可见 但是价格昂贵 所用口线多 所以在此设计中不采用 LED 液晶显示屏 方案二 采用点阵式数码管显示 点阵式数码管是由八行八列的发光二极管组成 对于 显示文字比较适合 采用在显示数字显得太浪费 且价格也相对较高 所以也不用此种作为 显示 方案三 采用 LED 数码管动态扫描 LED 数码管价格适中 对于显示数字最合适 而且采 用动态扫描法与单片机连接时 占用的单片机口线少 所以采用了 LED 数码管作为显示 2 3 时钟芯片的选择方案和论证 方案一 直接采用单片机定时计数器提供秒信号 使用程序实现年 月 日 星期 时 分 秒计数 采用此种方案虽然减少芯片的使用 节约成本 但是 实现的时间误差较大 所以不采用此方案 方案二 采用 DS1302 时钟芯片实现时钟 DS1302 芯片是一种高性能的时钟芯片 可自 动对秒 分 时 日 周 月 年以及闰年补偿的年进行计数 而且精度高 位的 RAM 做 为数据暂存区 工作电压 2 5V 5 5V 范围内 2 5V 时耗电小于 300nA 2 4 电路设计最终方案决定 综上各方案所述 对此次作品的方案选定 采用 AT89C51 作为主控制系统 DS1302 提供时钟 LED 数码管动态扫描作为显示 此文档收集于网络 如有侵权 请联系网站删除 精品文档 3 系统的硬件设计与实现 3 1 电路设计框图 按照系统设计功能的要求 初步确定设计系统由主控模块 时钟模块 显示模块 键盘 接口模块共 4 个模块组成 电路系统构成框图如图 3 1 所示 主控芯片使用 51 系列 AT89C51 单片机 时钟芯片使用美国 DALLAS 公司推出的一种高性能 低功耗 带 RAM 的 实时时钟 DSl302 采用 DSl302 作为主要计时芯片 可以做到计时准确 更重要的是 DSl302 可以在很小电流的后备电源 2 5 5 5V 电源 在 2 5V 时耗电小于 300 nA 下继续计时 并可编程选择多种充电电流来对后备电源进行慢速充电 可以保证后备电源基本不耗电 显 示模块采用普通的共阳 LED 数码管 键输入采用查询法实现调整功能 3 2 系统硬件概述 本电路是由 AT89C52 单片机为控制核心 具有在线编程功能 低功耗 能在 3V 超低压 工作 时钟电路由 DS1302 提供 它是一种高性能 低功耗 带 RAM 的实时时钟电路 它 可以对年 月 日 周日 时 分 秒进行计时 具有闰年补偿功能 工作电压为 2 5V 5 5V 采用三线接口与 CPU 进行同步通信 并可采用突发方式一次传送多个字节的时 钟信号或 RAM 数据 DS1302 内部有一个 31 8 的用于临时性存放数据的 RAM 寄存器 可 产生年 月 日 周日 时 分 秒 具有使用寿命长 精度高和低功耗等特点 同时具有 掉电自动保存功能 显示部份由 19 个数码管 使用动态扫描显示方式对数字的显示 3 3 主要单元电路的器件 3 3 1 单片机主控制模块 AT89C51 单片机为 40 引脚双列直插芯片 有四个 I O 口 P0 P1 P2 P3 MCS 51 单片机 共有 4 个 8 位的 I O 口 P0 P1 P2 P3 每一条 I O 线都能独立地作输出或输入 1 内部结构 按功能分为 8 部分 CUP 程序存储器 数据存储器 时钟电路 串行口 并行 I O 口 中断系统 定时 计数器 2 控制引脚 AT89C51 主控制模 块 DS1302 时钟模块 LED 数码管动态 扫描显示模块 键盘模块 图 3 1 电路设计框图 此文档收集于网络 如有侵权 请联系网站删除 精品文档 XTAL1 和 XTAL2 时钟引脚 外接晶体引线端 当使用芯片内部时钟时 此两引脚端 用于外接石英晶体和微调电容 当使用外部时钟时 用于接外部时钟脉冲信号 RST RST 是复位信号输入端 是备用电源输入端 当 RST 输入端保持 2 个机 pd V pd V 器周期以上高电平时 单片机完成复位初始化操作 当主电源发生故障而突然下降到一定低电压或断电时 第 2 功能将为片内 RAM CC V pd V 提供电源以保护片内 RAM 中的信息不丢失 ALE PROG 地址锁存允许信号输入端 在存取外存储器时 用于锁存低 8 位地址信号 当单片机正常工作后 ALE 端就周期性地以时钟振荡频率的 1 6 固定频率向外输出正脉冲信 号 此引脚的第 2 功能 PROG 是对片内带有 4K 字节 EPROM 的 8751 固外程序时 作为编程 脉冲输入端 程序存储器允许输出端 当片外程序存储器的读选通信号 低电平有效 CPUPSEN 从外部程序存储器取指令时 信号会自动产生负脉冲 作为外部程序存储器的选通信PSEN 号 程序存储器地址允许输入端 当为高电平时 CPU 执行片内程序存储器指令 EA PP VEA 但当 PC 中的值超过 0FFFH 时 将自动转向执行片外程序存储器指令 当 为低电EAEA PP V 平时 CPU 只执行片外程序存储器指令 3 I O 口引脚 P0 0 P0 7 P0 口 8 位双向 I O 口 P1 0 P1 7 P1 口 8 位准双向 I O 口 P2 0 P2 7 P2 口 8 位准双向 I O 口 P3 0 P3 7 P3 口 8 位准双向 I O 口 4 片外总线结构 分为三部分 数据总线 Data Bus DB 地址总线 Address Bus AB 控制总线 Control Bus CB 3 3 2 时钟电路模块的设计 1 时钟芯片 DS1302 引脚及功能特点 图 3 2 示出 DS1302 的引脚排列 其中为后备电源 为主电源 在主电源关闭 1CC V 2CC V 的情况下 也能保持时钟的连续运行 DS1302 由或两者中的较大者供电 当大 1CC V 2CC V 2CC V 于 0 2V 时 给 DS1302 供电 当小于时 DS1302 由供电 X1 和 X2 1CC V 2CC V 2CC V 1CC V 1CC V 此文档收集于网络 如有侵权 请联系网站删除 精品文档 是振荡源 外接 32 768KHz 晶振 RST 是复位 片选线 通过把 RST 输入驱动置高电平来启 动所有的数据传送 RST 输入有两种功能 首先 RST 接通控制逻辑 允许地址 命令序列送 入移位寄存器 其次 RST 提供终止单字节或多字节数据的传送手段 当 RST 为高电平时 所有的数据传送被初始化 允许对 DS1302 进行操作 如果在传送过程中 RST 置为低电平 则会终止此次数据传送 I O 引脚变为高阻态 上电动行时 在大于等于 2 5V 之前 CC V RST 必须保持低电平 中有在 SCLK 为低电平时 才能将 RST 置为高电平 I O 为串行数据 输入端 双向 SCLK 始终是输入端 2 时钟芯片 DS1302 的工作原理 DS1302 在每次进行读 写程序前都必须初始化 先把 SCLK 端置 0 接着把 RST 端 置 1 最后才给予 SCLK 脉冲 表 3 1 为 DS1302 的控制字 此控制字的位 7 必须置 1 若 为 0 则不能把对 DS1302 进行读写数据 对于位 6 若对程序进行读 写时 RAM 1 对时间进 行读 写时 CK 0 位 1 至位 5 指操作单元的地址 位 0 是读 写操作位 进行读操作时 该 位为 1 该位为 0 则表示进行的是写操作 控制字节总是从最低位开始输入 输出的 表 6 为 DS1302 的日历 时间寄存器内容 CH 是时钟暂停标志位 当该位为 1 时 时钟振荡器 停止 DS1302 处于低功耗状态 当该位为 0 时 时钟开始运行 WP 是写保护位 在任 何的对时钟和 RAM 的写操作之前 WP 必须为 0 当 WP 为 1 时 写保护位防止对任一 寄存器的写操作 RAM RD 1 A4 A3 A2 A1 A0 CK WR 3 数据输入输出 I O 在控制指令字输入后的下一个 SCLK 时钟的上升沿时 数据被写入 DS1302 数据输入 从低位即位 0 开始 同样 在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据 读出数据时从低位 0 位到高位 7 4 DS1302 的寄存器 Vcc1 X1 X2 GND Vcc2 SCLK I O RST 1 2 3 4 8 7 6 5 图 3 2 DS1302 引脚排列 表 3 1 DS1302 的控制字格式 此文档收集于网络 如有侵权 请联系网站删除 精品文档 DS1302 有 12 个寄存器 其中有 7 个寄存器与日历 时钟相关 存放的数据位为 BCD 码形式 其日历 时间寄存器及其控制字见表 3 2 命令字节寄存器内容 寄存器名 写读 取值范围 76543210 秒寄存器80H81H00 59 CH10sSEC 分寄存器82H83H00 59010minMIN 小时寄存器84H85H00 23或01 12 12 24 010 PHRHR 日期寄存器86H87H01 28 29 30 310010DATEDATE 月份寄存器88H89H01 1200010MMONTH 周寄存器8AH8BH01 0700000DAY 年寄存器8CH8DH01 9910YEARYEAR 此外 DS1302 还有年份寄存器 控制寄存器 充电寄存器 时钟突发寄存器及与 RAM 相关的寄存器等 时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容 DS1302 与 RAM 相关的寄存器分为两类 一类是单个 RAM 单元 共 31 个 每个单元组态 为一个 8 位的字节 其命令控制字为 C0H FDH 其中奇数为读操作 偶数为写操作 另一 类为突发方式下的 RAM 寄存器 此方式下可一次性读写所有的 RAM 的 31 个字节 命令控 制字为 FEH 写 FFH 读 3 3 3 显示模块的设计 基本显示原理 时钟开始显示为 0 时 0 分 0 秒 也就是数码管显示 000000 然后每秒秒 位加 1 到 9 后 10 秒位加 1 秒位回 0 10 秒位到 5 后 即 59 秒 分钟加 1 10 秒位回 0 依次类推 时钟最大的显示值为 23 小时 59 分 59 秒 这里只要确定了 1 秒的定时时间 其他位均以此为基准往上累加 同时时钟达到最大值的时候天数也增加一位 知道显示了 7 后再变为 1 同时阴历和阳历的天数也加 1 根据不同的月份显示的天数阳历有 28 29 30 31 天 阴历就要经过计算得到 到了 12 个月后 年数自动增加 1 以此类推 显示万年历的现实 如图 3 3 所示 采用动态扫描显示 由 19 个数码管 P2 口接 1K 限流电阻 再接 NPN 型 三极管接到共阳数码管的 COM 端作为选通位码 每位选择相应的列 74lS164 接 240 限流 电阻 再接共行的 LED 数码管的断码 3 3 4 74LS164 驱动模块 74LS164 内部为 8 个 D 触发器 用以实现数据的串行移位 74LS164 的特性如表 3 3 所 列 单片机以串行口方式 0 输出数据 3 片 74LS74 作为 3 排共阳数码管的串 并转换显示接 口 74LS164 为 TTL 单向 8 为移位寄存器 可实现串行输入 并行输出 其中 A B 第 表 3 2 DS1302 的日历 时间寄存器 此文档收集于网络 如有侵权 请联系网站删除 精品文档 1 2 脚 为串行数据输入端 两个引脚按逻辑 与 运算规律输入信号 只有一个信号输入 时可并接 共同作为输入脚 CP 第 8 脚 为时钟输入端 可连接到串行口的 TXD 端 每 一个时钟信号的上升沿加到 CP 端时 移位寄存器移一位 8 个时钟脉冲过后 8 为二进制数 全部移入 74LS164 中 3 片 74LS74 首尾相连 而时钟端接在一起 这样当输入 8 个脉冲时 从单片机 RXD 端输出的第一字节数据就进入到了第一片 74LS164 中 而当第二个 8 个脉冲 到来后 第一字节数据就进入了第二片 74LS164 中 而随后的第二字节的数据则进入了第一 片 74LS164 这样当第三次 8 个脉冲完成后 首次送出的数据被送到了最上面的 74LS164 中 其他数据依次出现在第二 第一片 74LS164 中 实现了数据在 74LS164 中的串行输入 并行 输出 操作模式输入输出 复位MRABQ0Q1 Q7 LXXLQ0 Q6 HLLLQ0 Q6 HLHLQ0 Q6 HHLLQ0 Q6 移位 HHHHQ0 Q6 图 3 3 显示部分 表 3 3 74LS74 特性表 此文档收集于网络 如有侵权 请联系网站删除 精品文档 4 系统的软件设计 4 1 主程序流程图 4 2 阳历算法 阳历的算法比较简单 每十月的总的天数相对来说是固定的 只有 2 月份 在闰年是 29 天 在非闰年是 28 天 每个月的日历排法 主要是确定每个月第一天是星期几 我们知道 1901 年 1 月 1 日是星期二 星期的变化是 7 天一个周期 比如说要计算 1901 年 2 月 1 日是 星期几 可以这样推算 从 1901 年 1 月 1 日到 1901 年 2 月 1 日总共经过了 31 天 从表 4 1 可 看出 31 对 7 取模是 3 1901 年 1 月 1 日是星期二 加三后 是星期五 因此 1901 年 2 月 1 日是星期五 同理 可以推算出从 1901 2100 年任何一天是星期几 阳历流程图见图 4 2 4 3 阴历算法 阴历的算法比较复杂 它包含两个部分 一部分是阳历日和阴历日的对应关系 另一部 分则是阳历日和农历节气的对应关系 下面只介绍与设计有关的阴历和阳历的关系 图 4 1 主程序流程图 开始 初始化 读 写日期 时间 显示子程序 农历自动更新子程序 日期 时间修改子程序 闰月子程序 定时闹铃子程序 此文档收集于网络 如有侵权 请联系网站删除 精品文档 表 4 1 比特数0123456789101112131415 数据 1 1 1xxxx 我们先要做一个数据表 这个数据表里面每 2 个字节 表示 T 一个阴所年彝个月份的天 开始 置阳历总天数 当前月加 1 总天数中加入该月天数 当前号数是总天数 月加 总天数中加入号 与当前月相同 计算阳历天数结束 总天数中的数 据为当前日期在阳历中的第几天 图 4 2 计算机阳历程序流程图 此文档收集于网络 如有侵权 请联系网站删除 精品文档 教 2 个字节 共 16bit 的具体意义如表 4 1 其中 0 1 中 0 表示 30 天 1 表示 29 天 x x x x 4 个比特可表示数值范 围 0 15 表示该年中是否有闰月 数值 0 表示无闰月 1 12 表示某一个闰月 闰月一般是 29 天 在 200 年中 1901 2100 年 闰月是 30 天的 可用一个特殊语句来解决 这里 2OO 年需要 200 x 2 400 个字节 构成阴历压缩数据表 有了阴历的数据表后 主要是要确定阳历日和胡历日的对应关系 我们知道阳历年 1901 年 1 月 1 日 对应的阴历年是对应的阴历日 可用以下算法 1 从阳历年 1901 年 1 月 1 日到 1901 年 2 月 1 日 计算出经过了 31 天 2 根据阴历数据表知道阴历年 1900 年 11 月有 29 天 因此 31 29 2 天 原来阳历 年 1901 年 1 月 1 日对应的阴历日是 11 日 则有 11 1 13 3 因为阴历 1901 年 12 月份有 30 天 而 13 30 所以阳历年 1901 年 2 月 1 日对应 的阴历年是 1900 年 12 月 13 日 如果上一步相加得出的散大于当前阴历月的总的天敢 别应 该继续减去当前阴历月的总的天数 直到符合条件 对于月份增加时 还要通过数据表查看 是否要经过闰月 对于其他任何一个阳历日和阴历日的对应关系 都可以通过以上算法求得结果 流程图 见图 4 3 程序入口 R2 减一个月天数 够减 下个月为闰月 减去闰月天数 月加 1 R3 0 R2 R2 R3 R3 0 月份为当前正在减的月 份的前一个月的最后一 天 月份为当前正在减的月 份 号数为 R2 中的值 R2 0 此文档收集于网络 如有侵权 请联系网站删除 精品文档 4 4 时间调整程序流程图 调整时间用 3 个调整按钮 1 个作为移位 控制用 另外 2 个作为加和减用 分别定义 为控制按钮 加按钮 减按扭 在调整时间过程中 要调整的那位与别的位应该有区别 所 以增加了闪烁功能 即调整的那位一直在闪烁直到调整下一位 当达到 50ms 溢出时 就送 给该位熄灭符 在下一次溢出时 再送正常显示的值 不断交替 直到调整到该位结束 此 时送正常显示值给该位 再进入下一位调整闪烁程序 时间调整程序流程图如图 4 4 图 4 3 阴历流程图 此文档收集于网络 如有侵权 请联系网站删除 精品文档 开始 控制键有效 进入年调整程序 等待按键程序 加键有效 减键有效 年加 1年减 1 控制键有效 进入日调整程序 等待按键程序 加键有效 减键有效 日加 1日减 1 控制键有效 进入小时调整程 序 等待按键程序 加键有效 减键有效 小时加 1小时减 1 控制键有效 进入月调整程序 等待按键程序 加键有效 减键有效 月加 1月减 1 控制键有效 进入星期调整程 序 等待按键程序 加键有效 减键有效 星期加 1星期减 1 控制键有效 进入分钟调整程 序 等待按键程序 加键有效 减键有效 分钟加 1分钟减 1 按键有效 跳出时间调整程序 进入主循环程序 此文档收集于网络 如有侵权 请联系网站删除 精品文档 5 体会 在整个设计过程中 充分发挥人的主观能动性 自主学习 学到了许多没学到的知识 完成了对万年历的设计 达到了预期的目的 在最初的设计中 发挥 三个臭皮匠 顶个诸 葛亮 的作用 相互学习 相互讨论 研究 完成了最初的设想 对电路的设计 布局要先 有一个好的构思 才显得电路板美观 大方 程序编写中 由于思路不清晰 开始时遇到了 很多的问题 经过静下心来思考 理清了思路 终于能够完成它 在此次设计中 知道了做 凡事要有一颗平常的心 不要想着走捷径 一步一个脚印 也练就了我们的耐心 做什么事 都在有耐心 此次设计中学到了很多很多东西 这是最重要的 做课程设计同时也是对课本知识的巩固和加强 由于课本上的知识太多 平时课间的学 习并不能很好的理解和运用各个元件的功能 而且考试内容有限 所以在这次课程设计中 我们了解了很多元件的功能 并且对于其在电路中的使用有了更多的认识 认识来源于实践 实践是认识的动力和最终目的 实践是检验真理的唯一标准 所以这个课程设计对我们的作 用是非常大的 同时通过这次课程设计使我懂得了理论与实际结合是很重要的 只有理论知 识是远远不够的 只有把所学的理论知识与实践结合起来 从理论中得出结论 才能真正为 社会服务 从而提高自己的实际动手能力和独立思考能力 此次课程设计学到了许多可能学 不到的东西 比如多利思考解决问题的能力 出现差错的随机应变 和与人合作共同提高 我们都受益匪浅 今后的制作应该更加轻松 自己都能扛得起并高质量的完成项目 这次课设终于顺利完成了 在课设中遇到了很多专业知识问 最后在老师的辛勤指导下 终于迎刃而解 同时 在老师的身上我们也学到了很多实用的知识 在此我们表示感谢 同 时 对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢 图 4 4 时间调整程序流程图 此文档收集于网络 如有侵权 请联系网站删除 精品文档 参考文献 1 毕满清 电子技术实验与课程设计 北京 机械工业出版社 2001 2 阎石主编 数字电子技术基础 第五版 北京 高等教育出版社 2009 2 楼然苗 李光飞 单片机课程设计 北京航空航天大学出版社 2007 3 杨子文 单片机原理及应用 西安电子科技大学出版社 2006 4 王法能 单片机原理及应用 科学出版社 2004 5 曹琳琳 单片机原理及接口技术 M 北京 国防科技大学出版社 2000 年 6 许惠民 单片微型计算机原理 接口及应用 M 北京 北京邮电大学出版社 2000 年 7 肖看 李群芳 单片机原理 接口及应用 嵌入式系统技术基础 第 2 版 北京 清华大学 出版社 2001 年 此文档收集于网络 如有侵权 请联系网站删除 精品文档 附录一 整体设计图 此文档收集于网络 如有侵权 请联系网站删除 精品文档 附录二 系统程序清单 万年历程序 67H 高两位年 66H 低两位年 65H 月 64H 星期 63H 日 62H 小时 61H 分 60H 秒 57H 农历月 56H 农历日 显示缓冲单元 7CH 7BH 4CH 4BH 年低位 7AH 79H 4AH 49H 月 78H 48H 星期 77H 76H 47H 46H 日 75H 74H 45H 44H 时 73H72H 43H 42H 分 71H 70H 41H 40H 秒 5EH 5DH 55H 54H 农历年 5CH 5BH 53H 52H 农历月 5AH 59H 51H 50H 农历日 闰年标志为 F0 定时器 T1 为调整时候闪烁用 CONFIG12 EQU 7FH TEMPH EQU 21H TEMPL EQU 20H REG2 EQU 22H REG3 EQU 23H REG4 EQU 24H DAT EQU P0 7 SCLK EQU P3 2 IO EQU P3 3 RST EQU P3 4 year DATA 66H month DATA 65H week DATA 64H day DATA 63H hour DATA 62H mintue DATA 61H second DATA 60H ORG 0000H LJMP START ORG 001BH LJMP INTT1 START 初值 LCALL ZJ SETB EA MOV SCON 00H 串行输出 方 式 0 MOV TMOD 10H 计数器 1 方 式 1 MOV TL1 00H MOV TH1 00H MOV 32H 8EH MOV 31H 00H 允许写 1302 LCALL WRITE MOV 32H 90H MOV 31H 0A6H 1302 充电 充电电流 1 1MA LCALL WRITE 主程序 MAIN1 MOV 32H 8DH 读出年 LCALL READ MOV year 31H MOV 32H 8BH 读出星期 LCALL READ MOV week 31H MOV 32H 89H 读出月 LCALL READ MOV month 31H MOV 32H 87H 读出日 LCALL READ 此文档收集于网络 如有侵权 请联系网站删除 精品文档 MOV day 31H MOV 32H 85H 读出小时 LCALL READ MOV hour 31H MOV 32H 83H 读出分钟 LCALL READ MOV mintue 31H MOV 32H 81H 读出秒 LCALL READ MOV second 31H 分离缓存 MOV R0 year 年分离 送显示 缓存 LCALL DIVIDE MOV 7BH R1 MOV 4BH R1 MOV 7CH R2 MOV 4CH R2 MOV 78H week MOV 48H week MOV R0 month 月分离 送显示缓 存 LCALL DIVIDE MOV 79H R1 MOV 49H R1 MOV 7AH R2 MOV 4AH R2 MOV R0 day 日分离 送显示缓 存 LCALL DIVIDE MOV 76H R1 MOV 46H R1 MOV 77H R2 MOV 47H R2 MOV R0 hour 小时分离 送显示缓 存 LCALL DIVIDE MOV 74H R1 MOV 44H R1 MOV 75H R2 MOV 45H R2 MOV R0 mintue 分钟分离 送显示 缓存 LCALL DIVIDE MOV 72H R1 MOV 42H R1 MOV 73H R2 MOV 43H R2 MOV R0 second 秒分离 送显示缓 存 LCALL DIVIDE MOV 70H R1 MOV 40H R1 MOV 71H R2 MOV 41H R2 CLR EA LCALL TOUTOU SETB EA LCALL DISPLAY LCALL GENGXIAN 更新农历 程序 JNB P0 1 SETG111 JNB F0 SSS setb P0 4 非闰月 则 p0 4 清零 指示灯亮 LJMP MAIN1 SETG111 LJMP SETG SSS clr P0 4 闰月 则 p0 4 置位 指示灯不亮 LJMP MAIN1 此文档收集于网络 如有侵权 请联系网站删除 精品文档 温度 TOUTOU LCALL CHUSHI LCALL RDTEMP MOV A TEMPL ANL A 11110000B MOV TEMPL A MOV A TEMPH ANL A 00000111B ORL A TEMPL SWAP A MOV 25H A MOV A 25H MOV B 64H DIV AB MOV A B MOV B 0AH DIV AB SWAP A ORL A B MOV 10H A RET CHUSHI LCALL RESET MOV A 0CCH LCALL WRITE111 MOV A 4EH LCALL WRITE111 MOV A CONFIG12 LCALL WRITE111 RET RDTEMP LCALL RESET MOV A 0CCH LCALL WRITE111 MOV A 44H LCALL WRITE111 LCALL DL1MS LCALL RESET MOV A 0CCH LCALL WRITE111 MOV A 0BEH LCALL WRITE111 LCALL ERAD111 MOV TEMPL A LCALL ERAD111 MOV TEMPH A RET RESET LA SETB DAT MOV 52H 200 LB CLR DAT DJNZ 52H LB SETB DAT MOV 52H 30 LC DJNZ 52H LC CLR C ORL C DAT JC LB MOV 58H 80 LD ORL C DAT JC LP DJNZ 58H LD SJMP LA LP MOV 52H 250 LF DJNZ 52H LF RET 此文档收集于网络 如有侵权 请联系网站删除 精品文档 WRITE111 MOV 53H 8 W51HA SETB DAT MOV 54H 8 RRC A CLR DAT W52HA DJNZ 54H W52HA MOV DAT C MOV 54H 30 W53HA DJNZ 54H W53HA DJNZ 53H W51HA SETB DAT RET ERAD111 CLR EA MOV 58H 8 RD1A CLR DAT MOV 54H 6 NOP SETB DAT RD2A DJNZ 54H RD2A MOV C DAT RRC A MOV 55H 30 RD3A DJNZ 55H RD3A DJNZ 58H RD1A SETB DAT RET 公历设置程序 SETG SETB TR1 SETB ET1 MOV 32H 8EH MOV 31H 00H 允许写 1302 LCALL WRITE MOV 32H 80H MOV 31H 80H 1302 停止振 荡 LCALL WRITE GWAIT LCALL DISPLAY JNB P0 1 GWAIT SETG1 LCALL DISPLAY JNB P0 1 SETG2 JNB P0 2 GADDYEAR JNB P0 3 JIANYEAR AJMP SETG1 GADDYEAR MOV R7 66H 年加一 LCALL ADD1 MOV 66H A CJNE A 51H GADDYEAR1 MOV 66H 00H AJMP GADDYEAR1 JIANYEAR MOV R7 66H 年减一 LCALL JIAN1 MOV 66H A CJNE A 00H GADDYEAR1 MOV 66H 51H GADDYEAR1 此文档收集于网络 如有侵权 请联系网站删除 精品文档 MOV 32H 8CH 年值送人 1302 MOV 31H 66H LCALL WRITE MOV R0 66H LCALL DIVIDE 年分离送显示 缓存 MOV 4BH R1 MOV 7BH R1 MOV 4CH R2 MOV 7CH R2 WAITT1 LCALL DISPLAY JNB P0 2 WAITT1 JNB P0 3 WAITT1 AJMP SETG1 SETG2 SETB 0AH 调月时闪标志 GWAIT2 LCALL DISPLAY JNB P0 1 GWAIT2 SETG3 LCALL DISPLAY JNB P0 1 SETG4 JNB P0 2 GADDMONTH JNB P0 3 JIANMONTH AJMP SETG3 GADDMONTH MOV R7 65H 月加一 LCALL ADD1 MOV 65H A CJNE A 13H GADDMONTH1 MOV 65H 01H AJMP GADDMONTH1 JIANMONTH MOV R7 65H 月减一 LCALL JIAN1 MOV 65H A CJNE A 00H GADDMONTH1 MOV 65H 12H GADDMONTH1 MOV 32H 88H 月值送人 1302 MOV 31H 65H LCALL WRITE MOV R0 65H LCALL DIVIDE 月分离 送显示 缓存 MOV 79H R1 MOV 49H R1 MOV 7AH R2 MOV 4AH R2 WAITT2 LCALL DISPLAY JNB P0 2 WAITT2 JNB P0 3 WAITT2 AJMP SETG3 SETG4 SETB 0BH 调日时闪标志 GWAIT4 LCALL DISPLAY JNB P0 1 GWAIT4 SETG5 LCALL DISPLAY JNB P0 1 SETG6 JNB P0 2 GADDDAY JNB P0 3 JIANDAY AJMP SETG5 GADDDAY MOV R7 63H 日加一 LCALL ADD1 此文档收集于网络 如有侵权 请联系网站删除 精品文档 MOV 63H A CJNE A 32H GADDDAY1 MOV 63H 01H JIANDAY MOV R7 63H 日减一 LCALL JIAN1 MOV 63H A CJNE A 00H GADDDAY1 MOV 63H 31H GADDDAY1 MOV 32H 86H 日值送人 1302 MOV 31H 63H LCALL WRITE MOV R0 63H LCALL DIVIDE 日分离 送显示缓 存 MOV 76H R1 MOV 46H R1 MOV 77H R2 MOV 47H R2 WAITT3 LCALL DISPLAY JNB P0 2 WAITT3 JNB P0 3 WAITT3 AJMP SETG5 SETG6 SETB 0CH 调星期时闪标志 GWAIT6 LCALL DISPLAY JNB P0 1 GWAIT6 SETG7 LCALL DISPLAY JNB P0 1 SETG8 JNB P0 2 GADDWEEK JNB P0 3 JIANWEEK AJMP SETG7 GADDWEEK MOV R7 64H 星期加一 LCALL ADD1 MOV 64H A CJNE A 07H GADDWEEK1 MOV 64H 00H AJMP GADDWEEK1 JIANWEEK MOV R7 64H 星期减一 LCALL JIAN1 MOV 64H A CJNE A 00H GADDWEEK1 MOV 64H 06H GADDWEEK1 MOV 32H 8AH MOV 31H 64H 星期值送人 1302 LCALL WRITE MOV R0 64H LCALL DIVIDE 星期值分离送 显示缓存 MOV 48H R1 MOV 78H R1 WAITT4 LCALL DISPLAY JNB P0 2 WAITT4 JNB P0 3 WAITT4 AJMP SETG7 SETG8 SETB 0DH 调小时时闪标志 GWAIT8 LCALL DISPLAY JNB P0 1 GWAIT8 此文档收集于网络 如有侵权 请联系网站删除 精品文档 SETG9 LCALL DISPLAY JNB P0 1 SETG10 JNB P0 2 GADDHOUR JNB P0 3 JIANHOUR AJMP SETG9 GADDHOUR MOV R7 62H 小时加一 LCALL ADD1 MOV 62H A CJNE A 24H GADDHOUR1 MOV 62H 00H AJMP GADDHOUR1 JIANHOUR MOV R7 62H 小时减一 LCALL JIAN1 MOV 62H A CJNE A 00H GADDHOUR1 MOV 62H 23H GADDHOUR1 MOV 32H 84H 小时值送人 1302 MOV 31H 62H LCALL WRITE MOV R0 62H LCALL DIVIDE 小时值分离 送显示缓存 MOV 74H R1 MOV 44H R1 MOV 75H R2 MOV 45H R2 WAITT5 LCALL DISPLAY JNB P0 2 WAITT5 JNB P0 3 WAITT5 AJMP SETG9 SETG10 SETB 0EH 调分时候闪标 志 GWAIT10 LCALL DISPLAY JNB P0 1 GWAIT10 SETG11 LCALL DISPLAY JNB P0 1 SETGOUT JNB P0 2 GADDMINTUE JNB P0 3 JIANMINTUE AJMP SETG11 GADDMINTUE MOV R7 61H 分钟加一 LCALL ADD1 MOV 61H A CJNE A 60H GADDMINTUE1 MOV 61H 00H AJMP GADDMINTUE1 JIANMINTUE MOV R7 61H 分钟减一 LCALL JIAN1 MOV 61H A CJNE A 00H GADDMINTUE1 MOV 61H 59H GADDMINTUE1 MOV 32H 82H 分钟值送人 1302 MOV 31H 61H LCALL WRITE MOV R0 61H LCALL DIVIDE 分钟值分离送 显示缓存 此文档收集于网络 如有侵权 请联系网站删除 精品文档 MOV 72H R1 MOV 42H R1 MOV 73H R2 MOV 43H R2 WAITT6 LCALL DISPLAY JNB P0 2 WAITT6 JNB P0 3 WAITT6 AJMP SETG11 SETGOUT LCALL DISPLAY JNB P0 1 SETGOUT LCALL GENGXIAN MOV 32H 80H MOV 31H 00H 1302 晶振开始振 荡 LCALL WRITE MOV 32H 8EH MOV 31H 80H 禁止写入 1302 LCALL WRITE CLR 08H CLR 09H CLR 0AH CLR 0BH CLR 0CH CLR 0DH CLR 0EH CLR 0FH CLR ET1 关闪中断 CLR TR1 LJMP MAIN1 闪动调时程序 INTT1 PUSH ACC PUSH PSW GFLASH CPL 0FH JB 0FH GFLASH1 MOV 7CH 4CH 全部显示 MOV 7BH 4BH MOV 7AH 4AH MOV 79H 49H MOV 78H 48H MOV 77H 47H MOV 76H 46H MOV 75H 45H MOV 74H 44H MOV 73H 43H MOV 72H 42H MOV 71H 41H MOV 70H 40H GFLASHOUT POP PSW POP ACC RETI GFLASH1 JB 0AH GFLASH2 调年闪 MOV 7CH 0FH MOV 7BH 0FH AJMP GFLASHOUT GFLASH2 JB 0BH GFLASH3 调月闪 MOV 7AH 0FH MOV 79H 0FH AJMP GFLASHOUT GFLASH3 JB 0CH GFLASH4 调日闪 MOV 77H 0FH 此文档收集于网络 如有侵权 请联系网站删除 精品文档 MOV 76H 0FH AJMP GFLASHOUT GFLASH4 JB 0DH GFLASH5 调星期闪 MOV 78H 0FH AJMP GFLASHOUT GFLASH5 JB 0EH GFLASH6 调小时闪 MOV 75H 0FH MOV 74H 0FH AJMP GFLASHOUT GFLASH6 MOV 73H 0FH 调分钟闪 MOV 72H 0FH AJMP GFLASHOUT 加一程序 ADD1 MOV A R7 ADD A 1 DA A RET 减一程序 JIAN1 MOV A R7 DEC A CJNE A 4FH KK1 MOV A 49H KK1 CJNE A 3FH KK2 MOV A 39H KK2 CJNE A 2FH KK3 MOV A 29H KK3 CJNE A 1FH KK4 MOV A 19H KK4 CJNE A 0FH KK5 MOV A 09H KK5 RET 分离程序 DIVIDE MOV A R0 ANL A 0FH MOV R1 A MOV A R0 SWA

温馨提示

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

评论

0/150

提交评论