《微机原理》课程设计——电子时钟的设计 (2005-6-24) 山东科技大学机电学院js02-2 20 号一.课程设计题目:电子钟1.设计目的:了解定时/计数器和中断的使用。2.设计所需设备:PC 机。3.设计任务:编写程序,在PC 机上显示时间。二.程序内容:第一部分:定义显示界面。第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。第三部分:将存在系统内存区的时间数用显示字符串的形式显示出来。第四部分:获取键盘的按键值,判断键值并退出系统。三.程序设计原理:首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS 中断,返回系统时间,并将来返回的二进制时间转换成ASCII 码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。调用 DOS 字符串显示功能将时间显示出来。并调用屏幕I/O 中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。 由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间, 这样就形成了会跳动的电子钟了。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1 秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示, 由此循环下去。程序的最后还设计一了个按“ESC”键就退出的功能,采取了判断键值的方法。为了显示的美观, 还设计一个字符图界面,通过显示字符串的方法显示出来。本程序具有很强的扩展功能,我们可以在此基础上进行一些输入、输出扩展, 显示的扩展, 比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用PC 喇叭发出报警声等等。 。。但是由于时间的原因,所以只做了核心的部分,这不得不说是一个遗憾。本程序使用了未来汇编,与 VISUAL ASM开发平台。四.程序设计心得:本程序虽然只花了一天的时间,但是也收获颇多。 其实本程序的设计思路并不难想,核心代码的设计所花的时间也不长。但是调试的时间却占了差不多70%的时间,在本程序设计的初期曾经走了不少弯路碰见过不少难题,所幸的是在我们的坚持下最终把难题一一击破。下面就列举下我们遇见过的比较繁琐的难题:1. 进制转换问题。 开始我们的思路是想将AL 的内容除于10,然后分别讲除数跟商分别加上 30H 转换成 ASCII 码并保存在AH 跟 AL 里面。...