如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
摘要数字闹钟1、通过8253定时器产生秒脉冲定时中断。在中断服务程序中实现秒、分、小时的进位(24小时制)。2、将当前时分秒在七段LED显示器上显示(如:091132)。3、可设置闹钟的时间当前值(对准时间),设置闹铃时间,闹铃功能的关闭和开放.关键词:数字闹钟,8253定时器,LED显示器,8255A并行口目录1.实验线路....................................................................................................................12.设计思想....................................................................................................................23.功能流程图................................................................................................................44.结果讨论....................................................................................................................85.源程序以及注释........................................................................................................9参考文献......................................................................................................................26-1-1.实验线路1实验线路如图1所示。2.设计思想一、概述:程序主体设计:本程序共有分端口设置模块,计数模块,显示模块等几个模块。C--DISPLAY12,45,37----将闹钟设置为12:45:37;G--GOAHEAD----开中断,闹钟恢复走时D--STOPTODISPLAY-----关中断,闹钟停止走时E--EXITTODOS----返回DOSM--SETTHECLOCK-----设置闹铃时间F--OPENTHECLOCK-----设置闹钟功能为开B--CLOSETHECLOCK-----设置闹钟功能为关P--POSITIONTHEBENINNINGDATE------设置闹钟的时间二、计时器软件的设计:主程序中,要对各个用到的芯片进行初始化,目的是使其每20豪秒产生一次方波。8253A的定时器输出与8259A的IR2连接,计数器0工作在模式3(方波发生器),计数值采用二进制格式,输出作为计数器1的输入,计数器1工作在模式2(分频器),计数值采用二进制格式,输出到总线IRQ2,向CPU发送时钟中断信号,根据两个计数器的设置,系统每隔20毫秒便由8253A产生一次中断请求,即每隔20豪秒执行一次中断处理程序。这个方法将与时间相关的两个模块即显示模块和计时模块放在中断处理程序中,这样,就保证了数字显示的稳定,中断处理程序完成计时功能要依靠两个方面,因为中断处理程序是每20豪秒执行一次,但计时并不是以20豪秒为单位进行的,而是以秒为单位进行的,所以,计时功另一方面借助一个计数单位。能的实现一方面要利用20毫秒这个基准时间单位,图1实验线路图2计数单位的初始值为50,每进行一次中断,便使计数单元的内容减1。每当计数单元从50减为0时,说明已经过了1秒时间。并判断是否有进位,如有则进行修改,实现进位。并在LED上显示。显示部分:本程序显示部分用了6个共阴极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。虽然CPU每隔一定时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以在6个LED上同时见到数字显示。程序中,用8255A的PA口作为输出,输出扫描信号,PB口作为输入,读进列值。本程序用行扫描法来识别键盘的闭合键。先使第0行接地,其余行为高电平,然后看第0行是否有键闭合,这是通过检查列线电位来实现的,即在第0行接地时看是否有哪条列线变成低电平。如果有某条列线变为低电平,则表示第0行和此列线位置上的键被按下如果没有,