《基于汇编语言的数字时钟》由会员分享,可在线阅读,更多相关《基于汇编语言的数字时钟(12页珍藏版)》请在金锄头文库上搜索。
1、一 摘要单片计算机即单片微型计算机。( ,是 集定时,计数和多种接口于一体的微控制器。他体 积小,成本低,功能强,广泛 应用于智能产品和工业自动化上。而51 单 片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。二 说明系统由码管、按 键、发光二极管等部分构成,能实现时间的调整、定时时间的设定,输出等功能。系统的功能选择由成。其中时器调整功能 键,按 进入调整状态。为功能切换键。第一 轮按动次进入一路、二路、三路定时时间设置提示程序,按进入各路定时调整状态。定时时间到,二极管发亮。到了关断时间后灭掉。如果不进入继续按,依次进入时
2、间 年 位校对、 月 位校对、 日 位校对、 时 位校对 、 分 位校对、 秒 位校对状态。不管是进入那种状 态,按 动皆可以使被调整位进行不进位增量加1 变化。各预置量设置完成后,系统将所有的 设置存入,按 出调整状态。上电后,系 统自动进入计时状态,起始于 00 时 00 分。为年月日显示转换键,可使原来 显示时分秒转换显示年月日。三、电路原理分析1. 显示原理电原理图见附图1。由 6 个共阴极的数码管组成时、分、秒的显示。 的8 分别与两个码的相接,口的 分别通过电阻与至的基极相连接。 这样通过送出一个存储单元的高位、低位过送出扫 描选通代码轮流点亮会将要显示的数据在数码管中显示出来。从
3、输 出的代码是,从 输出的就是位选码。这是扫描显示原理。2 键盘及读数原理键盘是人与微机打交道的主要设备,按 键的读取容易引起 误动作。可采用 软件去抖动的方法处理,软件的触点在 闭合和断开的时候会产生抖 动, 这时触点的逻辑电平是不稳定的,如不采取妥善 处理的话,将引起按 键命令错误 或重复执行,在这里采用软件延时的方法来避开抖动,延 击功能的实现按下某键时,对应的功能键解 释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执 行,在 这里我们采用软件延 时250当按键没释放则执行下一条对应程序。利用连击 功能,能 实现快速调时操作。四、程序设计思想和相关指令介绍本系统的
4、主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。1数据与代码转换 。由前述可知,从输出位 选码,从输出段选码,会显示出数字来。但,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到 去驱动码管显示是不能正确表达的,必须在系 统内部将要显示的数据经过 行转换后,将各个单元数据的段选代码送入,给 码后去驱动数码管显示。具体转换过程如下:我们先将要显示的数据装入累加器A 中,再将 A 中的数据转换成高低两位的,再放回A 中,然后将A 中的值输出。如:有一个单元
5、存储了45 这样一位数,则需转换成四位的:(0100)(0101)然后放入 A 中。 A 中,高位四位代表 4低四位代表5同时送给两个译码器中,译码后 45 字就在两个显示出来。2计时功能的实现与中断服务程序时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器打开后,进入计时,满100 毫秒后,重装定时。中断一次,满一秒后秒进位,满60 秒后即为1 分钟,分钟单元进位,60 分到了后,时单元进位, 24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送显示出来,实现时钟计时功能。累加是用指令 实现的。进入中断服务程序以后,
6、执行 将程序状 态寄存器内容和累加器A 中的数据保存起来,这便是所谓的 保护现场 . 以保 护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软 件的控制之下,堆 栈可在片内 的任一区间设定,而堆栈的数据存取与一般的取又有区 别,对它的操作,要遵循 后进先出 的原则。3 时间控制功能与比较指令系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是 这样的:先将执行设备开启的时间和关闭时间置入某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行 设备的设定开启时间相等,就执行一条 令,将 对应的那路置为高电位,开启;如果当前 计时时间与执行设备设 定的关闭时间相等,就执行
7、置低电位,二极管截止,。实现此控制功能用到的比较指令为,# 转移条件是累加器A 中的 值与立即数不等则转移。参考文献1、 谢自美,电 子线路设计、实验、 测试 武汉:华中理工大学出版社,20002、 何书森、何 华斌实用数字 电路原理与设计速成福州:福建科学技术出版社,白驹衍, 单片计算机及 应用北京:电子工业出版社, 序2H ;秒 即时时间 伪指令1H ;分0H ;时5H ;日4H ;月3H ;年1H ;分 定时器1 路、开存储单元2H ;时3H ;4H ;5H ;0H ;分 定时器1 路、关存储单元6H ;时7H ;日8H ;月9H ;年;*000003H ;中断转换显示年月日、)00计数
8、中断 方式1013调整时间、定时、 );030 #02 #05 #01 #00 #00 #000H ;定时单元1 路清零123456789H; #01H ;计数、模式1、#0100数定时#30H, #010 次*100最高级允许计数允许断允许断允许断A ;开总中断;时器启动判断1, #30H; 存储单元4, #01H; 位选通3, #03H; 三组显示 , , #10 ;将存储单元转换成两高低两组的, 0, A;输出2, 1 ;下一单元, ;位移4, 3, 全扫描显示一偏;编写了一路 )7, #88H,是8 则开,否则、定时已关、转;, , 比较,不等转关, , , , , , , , , ,
9、 比较, , , , , , , , 12342, #0中断扫描次数1 , #334 , #013 , #03, , #10, 0, 2, 14 ,3, 2, 反复显示一定时间后返回43216 #3装计数 #00H, 转到中断跳出序0H, #0 重装:100*10=1000;6, 6, #60, 较 #00 ;6, 6, #60, #006 , 6 , #25 , #005, 5, #1, 否1 月、不是转2 月5, 5, #32, 本月是否益出165, 5 , #2 , 否2 月、不是转3 月, 判断是否瑞年, #4 , 是则转(A 不为零则转)5 ,5,#30, 是瑞年、判断是否到29 天#15, 5,