logo资料库

微机原理与接口课程设计--电子钟的设计..doc

第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
资料共28页,剩余部分请下载后查看
摘要
1.实验线路
2.设计思想
3.功能流程图
4.结果讨论
5.源程序以及注释
参考文献
摘要 数字闹钟 1、通过 8253 定时器产生秒脉冲定时中断。在中断服务程序中实现秒、分、 小时的进位(24 小时制)。 2、将当前时分秒在七段 LED 显示器上显示(如:091132)。 3、可设置闹钟的时间当前值(对准时间),设置闹铃时间,闹铃功能的关闭和 开放. 关键词:数字闹钟,8253 定时器,LED 显示器,8255A 并行口
目 录 1.实验线路................................................................................................................... 1 2.设计思想................................................................................................................... 2 3.功能流程图............................................................................................................... 4 4.结果讨论................................................................................................................... 7 5.源程序以及注释....................................................................................................... 8 参考文献..................................................................................................................... 25 - 1 -
1.实验线路 实验线路如图 1 所示。 图 1 实验线路图 1
2.设计思想 一、概述: 程序主体设计:本程序共有分端口设置模块,计数模块,显示模块等几个模 块。 C--DISPLAY 12, 45, 37 ----将闹钟设置为 12:45: 37; G--GO AHEAD----开中断,闹钟恢复走时 D--STOP TO DISPLAY-----关中断,闹钟停止走时 E--EXIT TO DOS----返回 DOS M--SET THE CLOCK -----设置闹铃时间 F--OPEN THE CLOCK-----设置闹钟功能为开 B--CLOSE THE CLOCK-----设置闹钟功能为关 P--POSITION THE BENINNING DATE------设置闹钟的时间 二、计时器软件的设计: 主程序中,要对各个用到的芯片进行初始化,目的是使其每 20 豪秒产生一 次方波。8253A 的定时器输出与 8259A 的 IR2 连接,计数器 0 工作在模式 3(方 波发生器),计数值采用二进制格式,输出作为计数器 1 的输入, 计数器 1 工作在模 式2(分频器),计数值采用二进制格式,输出到总线IRQ2,向 CPU 发送时钟中断信号, 根据两个计数器的设置,系统每隔 20 毫秒便由 8253A 产生一次中断请求,即每 隔 20 豪秒执行一次中断处理程序。这个方法将与时间相关的两个模块即显示模 块和计时模块放在中断处理程序中,这样,就保证了数字显示的稳定,中断处理 程序完成计时功能要依靠两个方面,因为中断处理程序是每 20 豪秒执行一次, 但计时并不是以 20 豪秒为单位进行的,而是以秒为单位进行的,所以,计时功 能的实现一方面要利用 20 毫秒这个基准时间单位,另一方面借助一个计数单位。 计数单位的初始值为 50,每进行一次中断,便使计数单元的内容减 1。每当计数 单元从 50 减为 0 时,说明已经过了 1 秒时间。并判断是否有进位,如有则进行 修改,实现进位。并在 LED 上显示。 2
显示部分: 本程序显示部分用了 6 个共阴极 LED 作为显示管,显示程序要做到每送一 次段码就送一次位码,每送一次位码后,将位码中的 0 右移 1 位作为下次的位码, 从而可以实现从左到右使 6 个 LED 依次显示出相应的数字。虽然 CPU 每隔一定 时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以 在 6 个 LED 上同时见到数字显示。 程序中,用 8255A 的 PA 口作为输出,输出扫描信号,PB 口作为输入,读 进列值。 本程序用行扫描法来识别键盘的闭合键。先使第 0 行接地,其余行为高电平, 然后看第 0 行是否有键闭合,这是通过检查列线电位来实现的,即在第 0 行接地 时看是否有哪条列线变成低电平。如果有某条列线变为低电平,则表示第 0 行和 此列线位置上的键被按下如果没有,则说明第 0 行上没有键被按下。此后,再将 第 1 行接地,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到 最后一行。为消除键的抖动,所以调用延迟程序,然后再判断具体按下的到底是 哪个键,如果得到的是 FFH,则程序在循环中等待。 计数部分:见流程图 时间设定模块 对于输入的检测,若超出范围,则对其置 F------, 3
3.功能流程图 一、程序主流程控制图(如图 2 所示) C 键? G 键? D 键? P 键? M 键? F 键? B 键? E 键? N N N N N N N N Y Y Y Y Y Y Y Y 显示初始化时间 开始计时 停止计时 设置时间 设置闹铃 开启闹铃 关闭闹铃 退出回到 DOS 图 2 程序主流程控制图 4
二、中断服务子程序流程图(如图 3 所示) 中断进入 收到 50 次中断? 计数值减一(初值为 50) Y N 进位处理部分 闹铃开? Y Y 闹铃时间到? 响铃 N 退出中断服务 图 3 中断服务子程序流程图 图 5
三、进位处理部分流程图(如图 4 所示) 秒加 1 分钟加 1 小时加 1 开始 N 秒钟是否到 59 (此部分的转换 从略) Y 秒十位和各位赋值为 0 0 N N 分钟是否到 59 (此部分的转换 从略) Y Y 分钟十位和各位赋值为 0 0 分钟是否到 23 (此部分的转换 从略) 小时十位和各位赋值为 0 0 闹铃判断响铃部分 图 4 进位处理部分流程图 6
分享到:
收藏