微机原理课程设计-电子钟设计.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理课程设计-电子钟设计

摘要 数字闹钟 1、通过8253定时器产生秒脉冲定时中断。在中断服务程序中实现秒、分、小时的进位(24小时制)。 2、将当前时分秒在七段LED显示器上显示(如:091132)。 3、可设置闹钟的时间当前值(对准时间),设置闹铃时间,闹铃功能的关闭和开放. 关键词:数字闹钟,8253定时器,LED显示器,8255A并行口 目 录 1.实验线路 1 2.设计思想 2 3.功能流程图 4 4.结果讨论 8 5.源程序以及注释 9 参考文献 26 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上显示。 显示部分: 本程序显示部分用了6个共阴极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。虽然CPU每隔一定时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以在6个LED上同时见到数字显示。 程序中,用8255A的PA口作为输出,输出扫描信号,PB口作为输入,读进列值。 本程序用行扫描法来识别键盘的闭合键。先使第0行接地,其余行为高电平,然后看第0行是否有键闭合,这是通过检查列线电位来实现的,即在第0行接地时看是否有哪条列线变成低电平。如果有某条列线变为低电平,则表示第0行和此列线位置上的键被按下如果没有,则说明第0行上没有键被按下。此后,再将第1行接地,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到最后一行。为消除键的抖动,所以调用延迟程序,然后再判断具体按下的到底是哪个键,如果得到的是FFH,则程序在循环中等待。 计数部分:见流程图 时间设定模块 对于输入的检测,若超出范围,则对其置F------, 3.功能流程图 一、程序主流程控制图(如图2所示) 二、中断服务子程序流程图(如图3所示) 三、进位处理部分流程图(如图4所示) 4.结果讨论 本程序共有分端口设置模块,计数模块,显示模块等几个模块。经过调试,本程序可以实现题目的要求。时、分、秒都分两位。个位满十后就向前进一位。分秒的十位满六十后也向前进一位。显示小时两位在满二十四后重新计数。在置数时,使用者可置任意值,但如果有某位超过计数值,则在LED显示器上输出出错信息。程序中设置压C键为LED显示器清0,压E键为退出,压D键为计数暂停,压P键为设置LED显示器初始值。应该注意的是,程序中设定的键值为实验台上的小键盘的键值,并非计算机键盘。经测试,程序中设置的功能全都可以良好运行。 本程序参照实验室电脑中16BIT文件中的kl.asm编制 定时器/计数器8253计数初值的设定。 下面对几个重点部分的调试过程和遇到的问题作一定的讨论: 修改后的中断服务子程序(改变进位的条件) (1)其中进位的条件判断以及后面的闹铃的程序段位置的设置都与程序结果有很大的关系.进位判断特别要注意仔细,编程实现前应该画个流程图,直接再源文件上改不但不

文档评论(0)

3471161553 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档