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

下载本文档

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

文档简介

济源职业技术学院济源职业技术学院 毕毕 业业 设设 计计 题目电子日历设计 系 别机电系 专业电气自动化技术 班级电气 0601 姓名孙浩杰 学号06040111 指导教师孟慧霞 日期2008 年 11 月 济源职业技术学院毕业论文 I 设计任务书 设计题目 设计题目 电子日历设计 设计要求 设计要求 通过在图书馆和网上查找资料 整理和总结内容 独立的完成自己的设计内容 并且对所设计内容了解原理 能够发现在设计中出现的问题并一一解决 并完成以 下几点要求 能够显示年 月 日和时间 电子日历的设计主芯片用单片机 走时用时钟芯片实现 用按键实现省电和正常显示之间切换 设计进度要求 设计进度要求 第一周 选定毕业设计题目 第二周 收集和查找相关资料 第三周 硬件的分析和设计 第四周 软件的分析和编译程序 第五周 上机调试并验证结果 第六周 撰写毕业设计论文 第七周 定稿毕业设计论文 第八周 准备毕业答辩 指导教师 签名 指导教师 签名 济源职业技术学院毕业论文 II 摘 要 日历的功能可实现年 月 日 时 分 秒的显示 随着社会的发展日历的功 能越来越强大 精确度越来越高 本次设计的日历采用 DS12C887 时钟芯片 该芯片精确度高 性能可靠 本设计总体分为硬件部分和软件部分 硬件部分可分为 时钟芯片 DS12C887 AT89C51 等 根据论文要求显示需要用 到 16 个数码管 而且采用动态显示 需要对位码进行扩展 经过考虑采用 74LS154 作位码选择器 74LS154 是一个 4 入 16 出的译码器 只需用单片机的 I O 口就可以 控制 16 个数码管的位码 为了达到省电的目的可采用一个按键来控制数码管的亮灭 当按键按下后 数 码管正常显示时间 不按的情况下数码管自动进入省电模式 本设计非常适合家庭使用 电源采用 5V 电压供电 走时精确 是现代家庭必 备的设备之一 关键词 单片机 日历 DS12C887 时钟芯片 AT89C51 济源职业技术学院毕业论文 1 目 录 摘 要 II 1 单片机的发展及应用 2 1 1 单片机的发展 2 1 2 单片机的应用领域 3 2 设计思路及总体框图 4 2 1 设计思路 4 2 2 系统总体框图 5 3 硬件的选择 6 3 1 时钟电路 6 3 2 AT89C51 13 3 3 ULN2003A 及 74LS154 17 4 软件设计 20 4 1 设计程序有 主程序 读取时间的子程序和显示刷新程序 20 4 2 系统调试 28 致 谢 30 参考文献 31 附 录 A 32 济源职业技术学院毕业论文 2 1 单片机的发展及应用 1 11 1 单片机的发展单片机的发展 单片机诞生于 20 世纪 70 年代末 经历了 SCM MCU SoC 三大阶段 作为微型 计算机的一个重要分支 应用面很广 发展很快 自单片机诞生至今 已发展为上 百种系列的近千个机种 目前 单片机正朝着高性能和多品种方向发展 其趋势将 是进一步向着 CMOS 化 低功耗 小体积 大容量 高性能 低价格和外围电路内装 化等几个方面发展 自 1976 年 9 月 Intel 公司推出 MCS 48 单片机以来 有关公司 都争相推出各自的单片机 如 GI 公司推出 PIC1650 系列单片机 Rockwell 公司推 出了与 6502 微处理器兼容的 R6500 系列单片机 1978 年下半年 Motorola 公司推出 M6800 系列单片机 1980 年 Intel 公司在 MCS 48 系列基础上又推出了高性能的 MCS 51 系列单片机 这类单片机均带有串行 I O 口 定时器 计数器为 16 位 片内存储容量 RAM ROM 都相应增大 并有优 先级中断处理功能 单片机的功能 寻址范围都比早期的扩大了 它们是当时单片 机应用的主流产品 1982 年 Mostek 公司和 Intel 公司先后又推出了性能更高的 16 位单片机 MK68200 和 MCS 96 系列 NS 公司和 NEC 公司也分别在原有 8 位单片机的基础上推出 了 16 位单片机 HPC16040 和 PD783 系列 1987 年 Intel 公司又宣布了性能比 8096 高两倍的 CMOS 型 80C196 1988 年推 出带 EPROM 的 87C196 单片机 由于 16 位单片机推出的时间较迟 价格昂贵 开发 设备有限等多种原因 至今还未得到广泛应用 而 8 位单片机已能满足大部分应用 的需要 因此 在推出 16 位单片机的同时 高性能的新型 8 位单片机也不断问世 如 Motorola 公司推出了带 A D 和多功能 I O 的 68MC11 系列 目前国际市场上 8 位 16 位单片机系列已有很多 但是 在国内使用较多的系列是 Intel 公司的产品 其中又以 MCS 51 系列单片机应用尤为广泛 二十几年经久不衰 而且还在更进一步 发展完善 价格越来越低 性能越来越好 济源职业技术学院毕业论文 3 1 21 2 单片机的应用领域单片机的应用领域 单片机广泛应用于仪器仪表 家用电器 医用设备 航空航天 专用设备的智 能化管理及过程控制等领域 大致可分如下几个范畴 1 在智能仪器仪表上的应用 单片机具有体积小 功耗低 控制功能强 扩展灵活 微型化和使用方便等优 点 广泛应用于仪器仪表中 结合不同类型的传感器 可实现诸如电压 功率 频 率 湿度 温度 流量 速度 厚度 角度 长度 硬度 元素 压力等物理量的 测量 采用单片机控制使得仪器仪表数字化 智能化 微型化 且功能比起采用电 子或数字电路更加强大 例如精密的测量设备 功率计 示波器 各种分析仪 2 在工业控制中的应用 用单片机可以构成形式多样的控制系统 数据采集系统 例如工厂流水线的智 能化管理 电梯智能化控制 各种报警系统 与计算机联网构成二级控制系统等 3 在家用电器中的应用 可以这样说 现在的家用电器基本上都采用了单片机控制 从电饭褒 洗衣机 电冰箱 空调机 彩电 其他音响视频器材 再到电子秤量设备 五花八门 无所 不在 4 在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口 可以很方便地与计算机进行数据通信 为在 计算机网络和通信设备间的应用提供了极好的物质条件 现在的通信设备基本上都 实现了单片机智能控制 从手机 电话机 小型程控交换机 楼宇自动通信呼叫系 统 列车无线通信 再到日常工作中随处可见的移动电话 集群移动通信 无线电 对讲机等 5 单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛 例如医用呼吸机 各种分析仪 监护 仪 超声诊断设备及病床呼叫系统等等 此外 单片机在工商 金融 科研 教育 国防航空航天等领域都有着十分广泛的 比如说本次设计的电子万年历可用于千家 万户 现已是每个家庭和个人不可缺少的一部分 济源职业技术学院毕业论文 4 2 设计思路及总体框图 2 12 1 设计思路设计思路 处理器程序用作非易失内存 在更新周期也可访问 RTC 实时时钟加 RAM 向处理器提供三个独立的 自动的中断源 定闹中断的发 生率可编程 从每秒一次到每天一次 周期性中断的发生率可从 500ms 到 122s 选择 更新结束中断于向程序指示一个更新周期完成 中断控制和状态位在寄存器 B 和 C 中 本文的其它部分将详细描述每个中断发生条设计的题目是电子万年历 根据设 计要求所设计的日历要实现年 月 日 时 分 秒的正常显示 要想显示年 月 日 时 分 秒的正常显示必须有硬件和软件的结合 硬件主要涉及到 AT89C51 DS12C887 等 软件通过框图编写出程序 AT89C51 主要功能是存储程序 根据程序的内容对各个端口进行判断并做出相 应的处理 DS12C887 主要的功能是实现年 月 日 时 分 秒的显示效果 根据设计的要求日历要显示年 月 日 时 分 秒的显示就需要 16 个显示数 码管 如 2005 年 01 月 01 日即显示为 20050101 12 点 30 分 30 秒即显示为 12 30 30 数码管采用 7 段共阴极数码管 因为数码管数量较多 需要采用动态显示 在本设计中主要是实现时钟日历的正常显示 DS12C887 时钟芯片具备年 月 日 时 分 秒计时功能 将 DS12C887 记忆的时间送给 AT89C51 单片机进行存储经 过处理之后从 P0 口把段码送给 LED 数码管显示 AT89C51 的 P1 0 P1 3 做位码输 出给 74LS154 译码器 单片机每个端口有 8 根线 而要控制 16 个数码管的显示就需 要单片机的 16 根线来做位码端口 所以用 4 16 译码器来扩展位码输出端口 这样 只需要单片机的 4 根线就可以控制 16 个数码管 当送出第一个段码时 单片机输出 的位码是 0001 而经过 4 16 译码器后就是 1111 1111 1111 1110 这时就选中了 第一个数码管显示 当送出第十六个段码时 单片机输出的位码是 1111 4 16 译 码器输出 0111 1111 1111 1111 这时就选中了第十六个数码管显示 因为发光二 极管从导通到发光有一定的延时 导通时间太小 发光太弱人眼无法看清 所以在 段码和位码每送出一次后 应保持 2ms 左右 这个时间也不能太大 如果太大数码 管就会闪烁 而且占用 CPU 时间也越多 济源职业技术学院毕业论文 5 根据设计要求 用按键来实现省电和正常显示的切换 当按键按下时进入正常 显示模式 否则进入省电模式 2 22 2 系统总体框图系统总体框图 设计电路采用 ATMEL 的 AT89C51 芯片来做 CPU 用 AT89C51 的内部 EPROM 作为 程序存储器 显示部分位码的扩展采用 74LS154 七段数码管的驱动采用 ULN2003A 控制部分采用普通独立按键 在确定系统的大体形式之后 画出本系统的总框图如图 2 1 所示 图 2 1 系统总框图 系统总框图包括 单片机 复位电路 控制电路 显示电路 电源部分 单片机即 AT89C51 芯片的主要功能是 存储程序 对存储程序进行相应的处理 从 I O 口输出 复位电路 在单片机上有一输入复位引脚 RST 在单片机外部用电容和电阻控制 RST 控制电路 是用一个按键控制日历的省电和正常显示 显示电路 主要用以实现日历的显示结果 电源部分 采用 5V 的电源供电 济源职业技术学院毕业论文 6 3 硬件的选择 本次设计的万年历中其硬件电路主要包括 时钟芯片 单片机 显示电路 译 码器以及电源等几部分 1 时钟芯片选择 选用 DS12C887 实时芯片 2 单片机的选择 选用 AT89C8051 单片机 配备 11 0592MHz 晶振 P1 0 P1 4 作数码管的位选口 P0 0 P0 6 作数码管的段选口 3 显示电路选择 采用软件译码动态显示 共阴极 LED 数码管 4 电源选择 采用直流 5V 电源供电 5 译码器的选择 采用 4 线 16 线译码器 74LS154 3 13 1 时钟时钟电路电路 本次设计采用实时时钟芯片是 DS12C887 这种实时时钟芯片具备年 月 日 时 分 秒计时功能和多点定时功能 计时数据的更新每秒自动进行一次 不需程 序干预 此外 事实上时钟芯片多数带有锂电池做后备电源 具备永不停止的计时 功能 具有可编程方波输出功能 可用做实时测控系统的采样信号等 有的实时时 钟芯片内部还带有非易失性 RAM 可用来存放需长期保存但有时也需变更的数据 LED 数码管电子时钟电路采用 24 小时记时方式 日期和时间用 6 位数码管显示 采 用 AT89C51 单片机 5V 电池供电 只要使用一个按键开关即可以进入省电 显示 LED 数码管 和正常显示两种状态 显示范围 年份可走 99 年 如 2001 2099 日 月正常显示 能识别闰年闰月 时间采用 24 小时制 显示格式 日期按照年 月 日排列 如 2005 年 12 月 20 日显示为 051220 时间按时 分 秒排列 如 12 点 30 分 55 秒显示为 12 30 55 显示位数 6 位七段 LED 数码管作正常和节电显示 时钟误差 24 小时误差 3 5 秒 DS12C887 时钟芯片采用 CMOS 技术制成 该芯片带有内部晶体振荡器并内置有 锂电池 因此断电后仍可运行十年以上且不丢失数据 时间 日历和定闹具有二进 制码和 BCD 码两种形式 并可设定 12 小时或 24 小时制式以及 Motorola 和 Intel 总 济源职业技术学院毕业论文 7 线时序 DS12C887 内含 128 字节 RAM 其中有 10 个时钟寄存器 4 个控制寄存器和 114 字节通用 RAM 所有 RAM 单元都具有掉电保护功能 因此可被用作非易失性 RAM DS12C887 内部具有定闹中断 周期性中断 时钟更新周期 结束中断等 且 三个中断源可分别由软件屏蔽 3 1 13 1 1 DS12C887DS12C887 主要功能简介主要功能简介 1 内含一个锂电池 断电后运行十年以上不丢失数据 2 计秒 分 时 天 星期 日 月 年 并有闰年补尝功能 3 二进制数码或 BCD 码表示时间 日历和定闹 4 12 小时或 24 小时制 12 小时时钟模式带有 PM 和 AM 指示 有夏令时功能 5 Motorola 和 Intel 总线时序选择 6 有 128 个字节 RAM 单元与软件接口 其中 14 个字节作为时钟和控制寄存 器 114 字节为通用 RAM 所有 RAM 单元数据都具有掉电保护功能 7 可编程方波信号输出 8 中断信号输出 IRQ 和总线兼容 定闹中断 周期性中断 时钟更新周 期 结束中断可分别由软件屏蔽 也可分别进行测试 3 1 23 1 2 DS12C887DS12C887 引脚说明及原理引脚说明及原理 DS12C887 管脚图如图 3 1 所示 图 3 1 DS12C887 管脚排列图 VCC 直流电源 5V 电压 当 5V 电压在正常范围内时数据可读写 当 VCC低于 济源职业技术学院毕业论文 8 4 25V 读写被禁止 计时功能仍继续 当 VCC下降到 3V 以下时 RAM 和计时器被切 换到内部锂电池 MOT 模式选择 MOT 管脚接到 VCC时 选择 MOTOROLA 时序 当接到 GFND 时 选择 INTEL 时序 SQW 方波信号同 SQW 管脚能从实时时钟内部 15 级分频器的 13 个抽头中选择 一个作为输出信号 其输出频率可通过对寄存器 A 编程改变 AD0 AD7 双向地址 数据复用线 总线接口即 MOTOROLA 微机系列和 INTEL 微 机系列接口 AS 地址选通输入 用于实现信号分离 在 AD ALE 的下降沿把地址锁入 DS12C887 DS 数据选通或读输入 DS RD 客脚有两种操作模式 取决于 MOT 管脚的电平 当使用 MOTOROLA 时序时 DS 是一正脉冲 出现在总线周期的后段称为数据选通 在读周期 DS 指示 DS12C887 驱动双向总的时刻 在写周期 DS 的后沿使 DS12C887 锁 存写数据 选择 INTEL 时序时 DS 称作 RD RD 与典型存储器的允许信号 OE 的定 义相同 R W 读 写输入 R W 管脚也有两种操作模式 选 MOTOROLA 时序时 R W 是一 电平信号 指示当前周期是读或写周期 DSO 为高电平时 R W 高电平指示读周期 R W 低电平指示写周期 选 INTEL 时序 R W 信号是一低电平信号 称为 WR 在此 模式下 R W 管脚与通用 RAM 的写允许信号 WE 的含义相同 CS 片选输入 在访问 DS12C887 的总线周期内 片选信号必须保持为低 IRQ 中断申请输入 低电平有效 可作微处理的中断输入 没有中断条件满足 时 IRQ 处于高阻态 IRQ 线是漏极开路输入 要求外接上接电阻 RESET 复位输出 当该脚保持低电平时间大于 200ms 保证 DS12C887 有效复 位 DS12C887 内部由振荡电路 分频电路 周期中断 方波选择电路 14 字节时钟 和控制单元 114 字节用户非易失 RAM 十进制 二进制累加器 总线接口电路 电 源开关写保护单元和内部锂电池等部分组成 Vcc 直流电源 5V 电压 当 5V 电压 在正常范围内时 数据可读写 当 Vcc 低于 4 25V 读写被禁止 计时功能仍继续 当 Vcc 下降到 3V 以下时 RAM 和计时器供电被切换到内部锂电池 济源职业技术学院毕业论文 9 3 1 33 1 3 地址分配地址分配 DS12C887 的地址由 114 字节的用户 RAM 存放 10 字节的存放实时时钟时间 日 历和定闹 RAM 及用于控制和状态的 4 字节特殊寄存器组成 几乎所有的 128 个字节 直接读写 3 1 43 1 4 时间 日历和定闹单元时间 日历和定闹单元 时间和日历信息通过读相应的内存字节来获取时间 日历和定闹通过写相应的 内存字节设置或初始化 其字节内容可以是二进制或 BCD 形式 时间可选择 12 小时 制或 24 小时制 当选择 12 小时制时 小时字节的高门为逻辑 1 代表 PM 时间 日历和定闹字节是双缓冲的 总是可访问的 每秒钟这 10 个字节走时 1 秒 检查 一次定闹条件 如在更新时 读时间和日历可能引起错误 三个字节的定闹字节有 两种使用方法 第一种 当定闹时间写入相应时 分 秒 定闹单元 在定允许闹 位置高的条件下 定闹中断每天准时起动一次 第二种 在三个定闹字节中插入一 个或多个不关心码 不关心码是任意从 O0 到 FF 的 16 进制数 当小时字节的不关心 码位置位时 定闹为小时发生一次 同样 当小时和分钟定闹字节置不关心位时 每分钟定闹一次 当三个字节都置不关心位时 每秒中断一次 1 非易失 RAM 在 DS12C887 中 114 字节通用非易失 RAM 不专用一任何特殊功能 2 晶振控制位 DS12C887 出厂时 其内部晶振被关掉 以防止锂电池在芯片装入系统前被消耗 寄存器 A 的 BIT4 BIT6 的其它组合都是使晶振关闭 3 方波输出选择 15 级分频抽头中的 13 个可用于 15 选 1 选择器 选择分频器抽头的目的是在 SQW 引脚产生一个方波信号 其频率由寄存器 A 的 RS0 RS3 位设置 SQW 频率选择器 与周期中断发生器共有 15 选 1 选择器 一旦频率选择好 通过用程序控制方波输出 允许位 SQWE 来控制 SQW 引脚输出的开关 4 周期中断选择 周期中断可在 IRQ 脚产生 500ms 一次到每 122 s 一次的中断 中断步率同样由 寄存 A 确定 它的控制位为寄存器 B 中的 PIE 位 5 更新周期 济源职业技术学院毕业论文 10 DS12C887 每一秒执行一次更新周期 保证时间 日历的准确 更新周期还比较 每一定闹字节与相应的时间字节 如果匹配或三个字节都是不关心码 则产生一次 定闹中断 6 状态控制寄存器 DS12C887 有 4 个控制寄存器 它们在任何时间都可访问 即使更新周期也不例 外 7 寄存器 A UIP 更新周期正在进行位 当 UIP 为 1 更新转换将很快发生 当 UIP 为 0 更新转换至少在 244s 内不会发生 DV0 DV1 DV2 用于开关晶振和复位分频链 这些位的 010 唯一组合将打开晶振并充许 RTC 计时 RS3 RS2 RS1 RS0 频率选 择位 从 15 级频率器 13 个抽头中选一个 或禁止分频器输入 选择好的抽头用于 产生方波 SQW 引脚 输出和周期中断 使用时可以 用 PIE 位允许中断 用 SQWE 位允许并用相同的频率 寄存器的功能和作用如下 DS12C887 内部 RAM 和专用寄存器地址功能如表 3 1 所示 地址 00H 03H 单元 取值范围是 00H 3BH 10 进制为 0 59 04H 05H 单元按 12 小时制取值范围是上 午 AM 01H 0CH 1 12 下午 PM 81H 8CH 81 92 按 24 小时制取值范围 是 00H 17H 1 23 06H 单元取值范围是 00H 07H 0 7 07H 单元取值范围 01H 1FH 1 31 08H 单元取值范围是 01H 0CH 1 12 09H 单元的取值范围 是 00H 63H 0 99 DS12C887 的 RAM 和各专用寄存器的访问如下实现 若片选地 址 DS 0DDXXH 则芯片内部 RAM 和寄存器和地址为 0DD00H 0DD7FH 应指出的是 尽管 DS12C887 的专用时标年寄存器只有一个 但通过软件编程可利用其内部的不掉 电的 RAM 区的一个字节实现年度的高两位显示 济源职业技术学院毕业论文 11 表 3 1 DS12C887 内部 RAM 和各专用寄存器地址 地址单元用途地址单元用途 地址 00H秒地址 01H秒闹 地址 02H分地址 03H分闹 地址 04H时地址 05H时闹 地址 06H星期地址 07H日 两位数 地址 08H月 两位数 地址 09H年 两位数 地址 0AH寄存器 A地址 0BH寄存器 B 地址 0CH寄存器 C地址 0CH寄存器 D 0EH 7EH不掉电 RAM 区 共 114 字节 寄存器 A 各位不受复位的影响 UIP 位为只读位 其它各位均可读写 寄存器 的控制字的格式如表 3 2 所示 表 3 2 DS12C887 控制寄存器 A 各布尔位定义 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0 A UIP 位 更新周期标志位 该位为 1 时 表示芯片正处于或将开始更新 周期 此时程序不准读写时标寄存器 该位为 0 时 表示至少在 244us 后才开始 更新周期 此时程序可读芯片内时标寄存器 该位是只读位 B DV0 DV1 DV2 芯片内部振荡器 RTC 控制位 当芯片解除复位状态 并将 010 写入 DV0 DV1 DV2 后 另一个更新周期将在 500ms 后开始 因此 在程序初 始化时可用这三位精确地使芯片在设定的时间开始工作 这与 MC146818 不同的是 DS12C887 固定使用 32 768Hz 的内部晶体 所以 DV0 0 DV1 1 DV2 0 即可启动 RTC 济源职业技术学院毕业论文 12 表 3 3 DS12C887 控制寄存器 A 输出速率选择定位 寄存器 A 输出速率选择位32768Hz 时基 RS3RS2RS1RS0 中断周期 SQWF 输出频率 0000 无无 00013 96625ms256Hz 00107 8125ms128Hz 0011122 07us8 192kHz 0100244 141us4 096kHz 0101488 281us2 048kHz 0110976 562us1 024kHz 01111 953125ms512Hz 10003 90625ms256Hz 10017 812ms128Hz 101015 625ms64Hz 101131 25ms32Hz 110062 5ms16Hz 1101125ms8Hz 1110250ms4Hz 1111500ms2Hz C RS3 RS2 RS1 RS0 周期中断可编程方波输出速率选择位 各种不同的组 合可以产生不同的输出 程序可以通过设置寄存器 B 的 SQWF 和 PIE 位控制是否允许 周期中断方波输出 其寄存器 A 输出速率选择位如表 3 3 所示 3 1 53 1 5 DS12C887DS12C887 的中断和更新周期的中断和更新周期 DS12C887 处于正常工作状态时 每秒钟将产生一个更新周期 芯片处于更新周 期的标志是寄存器 A 中的 UIP 位为 1 在更新周期内 芯片内部时标寄存器数据 处于更新阶段 故在该周期内 微处理器不能读芯片时标寄存器的内容 否则将得 到不确定数据 更新周期的基本功能主要是刷新各个时标寄存器中的内容 同时秒 济源职业技术学院毕业论文 13 时标寄存器内容加 1 并检查其他时标寄存器内容是否有溢出 如果有溢出则相应 进位日 月 年 另外一个功能是检查三个时 分 秒报警时标寄存器的内容是否 与对应时标寄存器的内容相符 如果相符则寄存器 C 中的 AF 位置 1 如果报警时 标寄存器的内容为 C0H 到 FFH 之间的数据 则为不关闭状态 为了采样时标寄存器中的数据 DS12C887 提供了两样种避开更新周期内访问时 标寄存器的方案 第一种是利用更新周期结束发出的中断 它可以编程允许在每次 更新周期结束后发生中断申请 提醒 CPU 将有 998ms 左右的时间去获取有效的数据 在中断之后的 998ms 时间内 程序可先将时标数据读支芯片内部的不掉电静态 RAM 中 因为芯片内部的静态 RAM 和状态寄存器是可随时读写的 在离开中断服务子程 序前应清除寄存器 C 中的 IRQF 位 另一种是 利用寄存器 A 中的 UIP 位来指示芯片 是否处于更新周期 在 UIP 位从低变高 244us 后 芯片将进行更新周期 所以检测 到 UIP 位为低电平时 则利用 224us 的间隔时间去读取时标信息 如检测到 UIP 位 为 1 则可暂缓读数据 等到 UIP 变成低电平再去读数据 3 1 63 1 6 DS12C887DS12C887 初始化方法初始化方法 DS12C887 采取连续工作制 一般无须每次都初始化 即使是系统复位时也如此 但初始化时 首先应禁止芯片内部的更新周期操作 所以先将 DS12C887 状态寄存器 B 中的 SET 位置 1 然后初始化 00H 09H 时标参数寄存器和状态寄存器 A 此后再 通过读状态寄存器 C 清除寄存器 C 中的周期中断标志位 PF 报警中断标志位 AF 更新周期结束中断标志位 UF 通过读寄存器 D 中的 VRT 位 读状态寄存器后 VRT 位 将自动置 1 最后将状态寄存器 B 中的 SET 位置 0 芯片开始计时工作 3 23 2 AT89C51AT89C51 3 2 13 2 1 AT89C51AT89C51 单片机简介单片机简介 由于在单片机学习中对 AT89C51 接触最多较熟悉所以在这里选择 AT89C51 芯片 AT89C51 是一种低功耗 高性能的片内含有 4KB 快闪可编程 擦除只读存储器 FPEROM Flash Programmable and Erasable Read Only Memory 的 8 位 COMS 微 控制器 使用高密度 非易失存储技术制造 并且与 AT80C51 引脚和指令系统完全 兼容 芯片上的 FPEROM 允许在线编程或采用通用的非易失存储编程器对存储器重复 编程 济源职业技术学院毕业论文 14 AT89C51 具有多种功能的 8 位 CPU 与 FPEROM 结合在一个芯片上 为很多嵌入式 控制应用提供了非常灵活而又便宜的方案 其性能价格比远高于 AT87C51 由于片 内带 EPROM 的 AT87C51 价格偏高 而片内带 FPEROM 的 AT89C51 价格低且与 INTEL80C51 兼容 这就显示出了 AT89C51 的优越性 AT89C2051 是一种带 2K 字节闪 烁可编程可擦除只读存储器的单片机 单片机的可擦除只读存储器可以反复擦除 100 次 该器件采用 ATMEL 高密度非易失存储器制造技术制造 与工业标准的 MCS 51 指令集和输出管脚相兼容 由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中 ATMEL 的 AT89C51 是 一种高效微控制器 AT89C2051 是它的一种精简版本 AT89C51 单片机为很多嵌入式 控制系统提供了一种灵活性高且价廉的方案 3 2 23 2 2 AT89C51AT89C51 性能及特点性能及特点 1 与 MCS 51 微控制器产品系列兼容 2 片内有 4KB 可在线重复编程的快闪擦写存储器 Flash Memory 3 存储器可循环写入 擦除 1000 次 4 存储数据保存时间为 10 年 5 宽工作电压范围 Vcc 可为 2 7V 6V 6 全静态工作 可从 0HZ 到 16MHZ 7 程序存储器具有 3 级加密保护 8 128 8 位内部 RAM 9 32 条可编程 I O 线 10 两个 16 位定时器 计数器 11 中断结构具有 5 个中断源和 2 个优先级 12 可编程全双工串行通道 13 空闲状态维持低功耗和掉电状态保存存储内容 3 2 33 2 3 片内快闪存储器 片内快闪存储器 FlashFlash MemoryMemory 由于 EPROM 具有在线改写 并且在掉电状态保存存储数据的特点 可为用户的 特殊应用提供便利 但是擦除和写入对于要求数据高速吞吐的应用还显得时间过长 这是 EPROM 芯片的主要缺陷 济源职业技术学院毕业论文 15 3 2 43 2 4 AT89C51AT89C51 的引脚及管脚说明的引脚及管脚说明 AT89C51 的内部硬件结构中除了程序存储器由 FPEROM 取代了 AT87C51 的 EPROM 外 其余部分完全相同 AT89C51 的引脚与 AT87C51 的引脚完全兼容 如图 3 2 所 示为 AT89C51 的引脚图 图 3 2 AT89C51 的引脚图 管脚说明 VCC 供电电压 GND 接地 P0 口 P0 口为一个 8 位漏级开路双向 I O 口 每脚可吸收 8TTL 门电流 当 P1 口的管脚第一次写 1 时 被定义为高阻输入 P0 能够用于外部程序数据存储器 它 可以被定义为数据 地址的第八位 在 FIASH 编程时 P0 口作为原码输入口 当 FIASH 进行校验时 P0 输出原码 此时 P0 外部必须被拉高 P1 口 P1 口是一个内部提供上拉电阻的 8 位双向 I O 口 P1 口缓冲器能接收 输出 4TTL 门电流 P1 口管脚写入 1 后 被内部上拉为高 可用作输入 P1 口被外 部下拉为低电平时 将输出电流 这是由于内部上拉的缘故 在 FLASH 编程和校验 时 P1 口作为第八位地址接收 济源职业技术学院毕业论文 16 P2 口 P2 口为一个内部上拉电阻的 8 位双向 I O 口 P2 口缓冲器可接收 输 出 4 个 TTL 门电流 当 P2 口被写 1 时 其管脚被内部上拉电阻拉高 且作为输 入 并因此作为输入时 P2 口的管脚被外部拉低 将输出电流 这是由于内部上拉 的缘故 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时 P2 口输出地址的高八位 在给出地址 1 时 它利用内部上拉优势 当对外部八位地 址数据存储器进行读写时 P2 口输出其特殊功能寄存器的内容 P2 口在 FLASH 编程 和校验时接收高八位地址信号和控制信号 P3 口 P3 口管脚是 8 个带内部上拉电阻的双向 I O 口 可接收输出 4 个 TTL 门 电流 当 P3 口写入 1 后 它们被内部上拉为高电平 并用作输入 作为输入 由于外部下拉为低电平 P3 口将输出电流 ILL 这是由于上拉的缘故 P3 口也可作为 AT89C51 的一些特殊功能口 如下所示 P3 0 RXD 串行输入口 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 外部数据存储器读选通 P3 口同时为闪烁编程和编程校验接收一些控制信号 RST 复位输入 当振荡器复位器复位时 要保持 RST 脚两个机器周期的高电平 时间 ALE PROG 当访问外部存储器时 地址锁存允许的输出电平用于锁存地址的低 位字节 在 FLASH 编程期间 此引脚用于输入编程脉冲 在平时 ALE 端以不变的 频率周期输出正脉冲信号 此频率为振荡器频率的 1 6 因此它可用作对外部输出 的脉冲或用于定时目的 然而要注意的是 每当用作外部数据存储器时 将跳过一 个 ALE 脉冲 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0 此时 ALE 只有在执行 MOVX MOVC 指令是 ALE 才起作用 另外 该引脚被略微拉高 如果微处理器在外部 执行状态 ALE 禁止 置位无效 济源职业技术学院毕业论文 17 PSEN 外部程序存储器的选通信号 在由外部程序存储器取指期间 每个机器 周期两次 PSEN 有效 但在访问外部数据存储器时 这两次有效的 PSEN 信号将不出 现 EA VPP 当 EA 保持低电平时 则在此期间外部程序存储器 0000H FFFFH 不 管是否有内部程序存储器 注意加密方式 1 时 EA 将内部锁定为 RESET 当 EA 端保 持高电平时 此间内部程序存储器 在 FLASH 编程期间 此引脚也用于施加 12V 编 程电源 VPP XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2 来自反向振荡器的输出 振荡器特性 XTAL1 和 XTAL2 分别为反向放大器的输入和输出 该反向放大器可以配置为片 内振荡器 石晶振荡和陶瓷振荡均可采用 如采用外部时钟源驱动器件 XTAL2 应 不接 有余输入至内部时钟信号要通过一个二分频触发器 因此对外部时钟信号的 脉宽无任何要求 但必须保证脉冲的高低电平要求的宽度 芯片擦除 整个 PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合 并保持 ALE 管脚处于低电平 10ms 来完成 在芯片擦操作中 代码阵列全被写 1 且在任 何非空存储字节被重复编程以前 该操作必须被执行 此外 AT89C51 设有稳态逻辑 可以在低到零频率的条件下静态逻辑 支持两 种软件可选的掉电模式 在闲置模式下 CPU 停止工作 但 RAM 定时器 计数器 串口和中断系统仍在工作 在掉电模式下 保存 RAM 的内容并且冻结振荡器 禁止 所用其他芯片功能 直到下一个硬件复位为止 为了满足一些应用系统的特殊要求 如在一些工业控制系统中 有时要进行一 些系统的扩展设计以弥补单片机内部资源的不足 单片机的扩展系统通过并行 I O 接口或串行 I O 接口做总线 在外部扩展程序存储器 数据存储器或输入输出接口 及其他功能部件以满足一些控制系统的特殊要求 3 33 3 ULN2003AULN2003A 及及 74LS15474LS154 本设计要用到 16 个七段数码管 单片机的 P0 端口只有 8 根线 根本不够用 济源职业技术学院毕业论文 18 所以用 74LS154 来扩展 74LS154 是 4 16 译码器 只用单片机的四根线就可以接 16 个数码管的位码端 因为 74LS154 是一个 4 入 16 出的译码器 在本设计中共有 16 个显示数码管 所以一个 74LS154 译码器的输出端刚好用完 LED 数码管采用共 阴极 3 3 13 3 1 74LS15474LS154 简介简介 管脚图及真值表管脚图及真值表 1 74LS154 简介 2 74LS154 管脚图如图 3 3 所示 图 3 3 74LS154 管脚图 3 74LS154 真值表如图 3 4 所示 图 3 4 74LS154 真值表 3 3 23 3 2 ULN2003ULN2003 管脚图及功能表管脚图及功能表 1 ULN2003 简介 2 ULN2003A 管脚图如下 0 0 0 1 只只 0 A2A1A0 0 0 0 0 只只 0Y0 Y1 1 1 1 1 只只 0Y15 A3 0 0 0 1 只只 0 A2A1A0 0 0 0 0 只只 0Y0 Y1 1 1 1 1 只只 0Y15 A3A2A1A0 0 0 0 0 只只 0Y0Y0 Y1Y1 1 1 1 1 只只 0Y15Y15 A3 A A 0 0 A A 1 1 A A 2 2 Y Y 0 0 Y Y 1515 A A 3 3 A A 0 0 A A 1 1 A A 2 2 Y Y 0 0 Y Y 0 0 Y Y 1 1 Y Y 1 1 Y Y 1515 Y Y 1515 A A 3 3 济源职业技术学院毕业论文 19 图 3 5 ULN2003A 管脚图 3 ULN2003A 的功能图如下所示 图 3 6 ULN2003A 功能框 ULN2003A 是高耐压 大电流达林顿陈列 由七个硅 NPN 达林顿管组成 该电 路的特点如下 ULN2003A 的每一对达林顿都串联一个 2 7K 的基极电阻 在 5V 的工作电压下它 能与 TTL 和 CMOS 电路直接相连 可以直接处理原先需要标准逻辑缓冲器来处理的 数据 ULN2003A 工作电压高 工作电流大 灌电流可达 500mA 并且能够在关态时承 受 50V 的电压 输出还可以在高负载电流并行运行 ULN2003 采用 DIP 16 或 SOP 16 塑料封装 济源职业技术学院毕业论文 20 4 软件设计 完成了硬件设计之后 我们就开始进行软件设计 软件是一个系统的心脏 所以它 的设计也是非常重要的 在本次设计中我们需要设计的软件主要有主程序 读取时间 的子程序和显示刷新程序 4 14 1 设计程序有 主程序 读取时间的子程序和显示刷新程序设计程序有 主程序 读取时间的子程序和显示刷新程序 4 1 14 1 1 主程序的框图及程序如下主程序的框图及程序如下 主程序框图如图 4 1 所示 图 4 1 主程序框图 主程序如下所示 ORG 0000H LJMP START ORG 0030H START MOV 30H 0 SETB P1 1 济源职业技术学院毕业论文 21 SECOND EQU 2000H MINUNTE EQU 2002H 时钟芯片寄存器 HOUR EQU 2004H WEEK EQU 2006H 它们代表秒 分钟 时 日期 DATE EQU 2007H 年 月 MONTH EQU 2008H YEAR EQU 2009H 可以改变实际连线 地址也相应改变 TREGA EQU 200AH 四个控制寄存器 TREGB EQU 200BH TREGC EQU 200CH TREGD EQU 200DH TUPDATE EQU 80H 如果 TREGA 7 1 时钟芯片更新 TBHALT EQU 10000010B 24 12 1 采用 24 小时计时制 将 TBHALT 写入 TREGB 停止计时 TBSALT EQU 00000000B 将 TBSTART 写入 TREGB 继续计时 F32K EQU 20H MOV A TBHALT SET 1 PIE AIE UIE SQWE 0 DM 0 MOVX DPTR A 24 12 1 24HOURS DSE 0 MOV DPTR TREGD MOV A 32H 设置控制寄存器 开晶振 MOV DPTR A MOV DPTR BHALT MOV A DPTR MOV DPTR A MOV A DPTR MOV A TBHALT 开始计时 MOVX DPTR A SS1 LCALL TIMEREC 济源职业技术学院毕业论文 22 JNB P1 4 SS1 LCALL DSPLAY LJMP SS1 读取时间子程序框图如图 4 2 所示 图 4 2 读取时间的子程序框图 济源职业技术学院毕业论文 23 读时间子程序如下所示 TIMEREC PUSH ACC MOV ACC IE CLR ET0 MOV R0 DPL 将指针存入 R0 R1 MOV R1 DPH MOV DPTR TREGA 如果 DS12887 正在更新则等待 TIMEWALT MOVX A A DPTR JB ACC 7 TIMEWALT 否则 读取秒数 分钟等数值 MOV DPTR SECOND MOVX A A DPTR MOV R6 A 先将数据保存 备用 MOV DPL R3 MOV DPH R1 MOVX A DPTR 取出原来的秒数 CLR C SUB A R6 如果时间未改变则退出 JNZ GETTIME RET GETTIME INC R0 INC R0 指向 所指单元 MOV A R0 CPL A 将 取反 每秒变化一次 MOV R0 A 以控制亮和灭 形成闪烁效果 MOV A R6 恢复时间值 MOVX DPTR A INC DPTR MOV R3 DPL MOV R1 DPH 济源职业技术学院毕业论文 24 MOV DPTR MINUTE 读取并存储分钟 MOVX A DPTR MOV DPL R3 MOV DPH R1 MOVX DPTR A INC DPTR MOV R3 DPL MOV R1 DPH MOV DPTR HOUR 读取并存储小时 MOVX A DPTR MOV DPL R3 MOV DPH R1 MOVX DPTR A INC DPTR MOV R3 DPL MOV R1 DPH MOV DPTR DATA 读取并存储日期 MOVX A DPTR MOV DPL R3 MOV DPH R1 MOVX DPTR A INC DPTR MOV R3 DPL MOV R1 DPH MOV DPTR TONTH 读取并存储月份 MOVX A DPTR MOV DPL R3 MOV DPH R1 MOVX DPTR A 济源职业技术学院毕业论文 25 INC DPTR MOV R3 DPL MOV R1 DPH MOV DPTR HOUR 读取并存储年号 MOVC A DPTR MOV DPL R3 MOV DPH R1 MOVX DPTR A 寄存器恢复保护 POP ACC MOV IE ACC POP ACC RET 显示刷新子程序框图如图 4 3 所示 图 4 3 显示刷新子程序框图 济源职业技术学院毕业论文 26 显示刷新子程序如下所示 MOV 40H R3 PUSH ACC DISPLAY MOV A R0 MOV R6 A 显示指针首址保护 存入 R6 INC DPTR 先将指针指向分钟单元 MOVX A DPTR MOV R3 A 保护寄存器 A 数据 ANL A 0F0H SWAP A 得到小时的十位 MOV R0 A INC R0 显示指针加一 MOV A R3 ANL A 0F0H 得到小时的个位 MOV R0 A 存入显示缓冲区 INC R0 跳过分号的显示单元 INC R0 DEC DPTR MOVX A DPTR SWAP A 得到分钟的十位 MOV R0 A INC R0 显示指针加一 MOV A R3 ANL A 0F0H 得到分的个位 MOV R0 A 存入显示缓冲区 DIS MOV A 100000000B MOV DPTR 4003 指向 PC 口 MOVX DPTR A A C 口均为输出 方式 0 MOV R4 1FH 位选字 济源职业技术学院毕业论文 27 MOV A R4 送位选字中间变量 LD0 MOV DPTR 4002H 指定 PC 口 MOV

温馨提示

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

评论

0/150

提交评论