微机原理电子秒表课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、设计内容与要求 -----------------------------------------2
1.1 设计要求
1.2 附加功能
二、设计原理 -----------------------------------------------2
2.1 原理概述
2.2 延时原理
2.3 字符及字符串显示原理
2.4 压缩BCD码转为ASCII原理
2.5 动态扫描键盘原理
2.6 整分报时原理
2.7 记忆功能原理
三、程序流程图 ---------------------------------------------4
3.1 主程序流程图
3.2 各子程序流程图
四、源程序及运行结果----------------------------------------- 7
五、程序调试 -----------------------------------------------7
六、心得体会 -----------------------------------------------8
七、参考资料 ----------------------------------------------10
八、附录(源程序代码)---------------------------------------10
一、设计内容与要求
1.1设计要求
1. 具有秒和百分之一秒计时并显示于图案中央
2. 具有启/停、复位功能
1.2附加功能
1. 具有记忆功能,可实现分别记时功能
2.具有正分报时功能
二、设计原理
2.1 原理概述
通过调用INT 21H的8号功能实现控制字符的输入, 2号功能实现字符的输出,9号功能实现字符串的输出。通过调用INT 10H 的2号功能实现光标定位,AH=0H号功能设置显示方式、AH=7H号功能实现向下滚屏、AH=13H号功能实现彩色输出。利用系统执行指令的时钟周期,编写延时程序,通过调用延时程序实现一秒的计时。
使用到的中断列表如下:
中断号AH=设置功能调用参数返回参数
10H 00H 设置显示方式AL=03H彩色文本方式(80*25)
CGA
02H 置光标位置DH、DL=行(0-24)、列(0-
79)
BH=显示页
06H 向上滚屏AL上卷行数
CH窗口左上角行号
CL窗口左上角列号
DH窗口右下角行号
DL窗口右下角列号
DH窗口显示属性
08H 键盘写入字符AL=输入字符
21H (无回显)
09H 显示字符串DS:DX=缓冲区首址
2.2 延时原理
本设计利用软件实现延时,即通过可控制的循环来占用CPU的时间来实现延时。延时函数名为TIME,运用内外两层循环,外循环由AX中的数值来控制,内循环有CX中的值来控制。实现不同延时的控制,通过反复比较调试,确定AX的值为0140H,CX的值为0FFFFH。
另外界面显示时的动画设置也是通过延时来完成的,此时参数设置为AX值为0FFFFH,CX值为0FFFFH。
2.3 字符及字符串显示原理
字符及字符串输出采用INT 10H。首先,调用中断INT 10H中的AH=3号功能,将屏幕显示方式为80*25彩色文本方式。
界面、时间、日期均是以字符串的形式输出。字符串的输出思想是:先定位后输出。定位光标用INT 10H中AH=2号功能,DH中存的中行号,DL中存的是列号,BH中存页号。整个屏幕有25行80列,对应的16进制为:左上角为(0,0),右下角为(18,4F)。显示字符串用INT 21H的AH=13H号功能。BP中存放输出字符串的偏移地址,DX中存放输出区域的起始行列号。
由于程序中要多次运用到光标定位和字符串输出,为了让代码更加简洁,把字符串的定位和输出定义为宏DIS2,其中形参分别为定位坐标和字符串首址。
2.4 压缩BCD码转为ASCII原理
时间和日期是以字符串形式输出的,所以要将分、秒、百分之一秒变量的值转化成ASCII 码存入字符串中输出。先将压缩BCD码的高4位取出,右移四位后,与30H相或,存到相应内存单元;然后将低4位取出,与30H相或,存到下一内存单元。
2.5 动态扫描键盘原理
运用INT 21H的8号功能来实现动态扫描键盘。如果有键按下,则相应的键值的ASCII 码被存到AL中。判断AL中的数值,若是控制字符,判断是哪个控制字符,并执行相应语句;若不是控制字符,则继续循环,从而实现动态扫描键盘。
2.6 整分提示原理
每当存放秒的寄存器DH的值为60时,调用提示音程序响提示音。已知ASCII码是07H
的字符代表响铃,调用中断INT 21H 中的AH=2号功能输出该字符即可实现。
2.7 记忆功能原理
该功能是在按下R复位键以后将该时刻的计时时间记录并显示在记录区域,记录区域中最多能同时显示10个记录时间,多于10个时利用清屏功能将其覆盖,以便重新记录一组数据。
该功能是通过滚屏实现的。INT 10H 中的AH=06号功能是向下滚屏。滚屏区域由CX和DX决定。CX记录区域左上方点的坐标,DX确定区域右下角点的坐标,AL确定下滚行数,这里设AL=11。
2.8 动画心形显示
通过显示字符串宏调用与延时程序相结合,显示一行字符串调用一下延时程序,从而实现动画心形显示。显示快慢可通过调节延时程序(TIME2)里CX,BX的值来改变。
2.9复位、停止等功能的实现
通过对输入字符的判断和各种循环的嵌套调用实现。
整体上本程序的主要设计原理是先在数据段中定义“INPUT S START R RESET P PAUSE C CONTINUE E EXIT”控制字符串,并定义缓冲区。将数据段的段基址送DS,并将“INPUT S START R RESET P PAUSE C CONTINUE E EXIT”显示,同时调用GO子程序,将显示结果初始化。同时设置光标,启动计时,启动延时程序,将百分之一秒加1并将其设置为压缩BCB码,当其CF不为1时,送屏幕显示,当其为1时,将其设置为0,并在秒上加1,当秒等于60时,其置0,当其小于60时,送屏幕显示。在计时过程中,如果键入R,则将其复位,并重新开始计时,当键入P时,计时暂停,如果键入E,则退出运行界面,如果键入C,则继续计时,如果键入R,则复位,设置为00:00,当再次键入S时,再次计时开始
三、程序流程图
3.1主程序流程图