山东大学8086单片机课程设计--秒表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理课程设计
报
告
书
设计项目:电子秒表
院系:山东大学电气工程学院
班级:09级2班
姓名:蔡健存20090019
王其凯200900191135
指导教师:秦安文
设计日期:2011年12月
目录
一、设计任务-------------------------------------------------------------3
二、相关功能的介绍----------------------------------------------------3
三、设计原理-------------------------------------------------------------3
1. 原理概述
2. 延时程序
3. 光标定位子程序原理
4. 清屏原理
5. 字符及字符串显示原理
6. 动态扫描键盘原理
四、程序流程图----------------------------------------------------------4
1.主程序流程图
2.各子程序流程图
五、程序代码-------------------------------------------------------------5
六、程序运行结果------------------------------------------------------14
七、程序调试中的问题及解决方法---------------------------------15
八、心得收获------------------------------------------------------------15
九、参考资料------------------------------------------------------------16
、
一、设计任务
1.具有分、秒和0.01秒计时,并显示在屏幕中央
2.具有启(Start)、停(End)功能
3.具有暂停(Pause)、继续(Continue)功能
4.具有复位(Clear)功能
二、相关功能的介绍
该秒表计数功能的实现是通过调用延时程序实现的(为纯软件实现,不能达到准确计数)。具有启、停、继续、复位、同时多组计数等功能。
该秒表软件界面友好,即使对汇编语言一无所知的人也能轻松运行EXE程序,通过软件的提示输入S、ESC、P、C来实现秒表计数,易于操作。
通过DOS系统9号功能的调用,实现字符串的输出,展现出一个比较漂亮的秒表计数界面。
三、设计原理
1. 原理概述
通过调用DOS系统的8号功能实现控制字符的输入,通过调用DOS系统的0BH号功能实现程序运行时对控制字符输入的检查,通过调用延时程序实现百分之一秒的定时,通过调用INT 10H 的2号功能实现光标定位,调用INT 10H的6号功能实现清屏,调用DOS系统的2号功能实现字符的输出,通过调用DOS系统的9号功能实现字符串的输出。
2.延时程序
本设计利用软件实现延时(不是很精确),调用TIME实现延时。其原理:通过可控制的循环来占用CPU的时间来实现延时,分为内外两层循环,外循环由CX中的数值来控制,内循环有BX 中的值来控制。
3. 光标定位子程序原理
DOS显示屏为25行、80列,左上角为(0,0),右下角(18,4F)
设置光标,可调用BIOS系统,用汇编语句调用中断INT10H。入口信息为
(AH)=2 要设置光标;
(BH)=0 页号;
(DH,DL)=光标的行号、列号
4. 清屏原理
开始执行程序时为保证有一个洁净的屏幕,可使显示屏做上滚动作,使屏幕留下一片空白。要使屏幕上滚,可用汇编语句INT 10H ,入口信息为
(AH )=6 使屏幕上滚
(AL)=00上滚行数
(CH,CL)=滚动区域左上角的行、列号
(DH,DL)=滚动区域右下角的行、列号
(BG)=00 颜色的设置
5. 字符及字符串显示原理
通过调用DOS系统模块2仅能显示DL中的一个字符。为了实现字符串的显示,调用其9号模块功能,其入口信息为
(AH)=9 显示字符串的功能模块
(DS:DX)指向字符串的首地址,要求字符串以字符‘$’结尾。
6. 动态扫描键盘原理
运用INT 21H的0BH号功能来实现动态扫描键盘,通过INT 21H的8号功能实现控制字符的输入。如果有键按下,则相应的键值的ASCII码被存到AL中。判断AL中的数值,若不是控制字符,则继续循环,从而实现动态扫描键盘。
7. 计时原理
在PAUSE中插入新的光标设置程序IOSET1和显示程序,IOSET1每调用一次则光标加一行,所以每次暂停会在秒表和记录栏中显示同样的时间,每次暂停记录一次时间。
四、程序流程图
1.主程序流程图
BRGIN
START
A1
N
Y
N Y
N N
Y Y
N
Y
N
N
Y
N
开始 清除屏幕(IOCLR)
光标定义(IOSET ) 屏幕显示(SHOW) 键盘输入字符 将值赋给AL
AL=’S /s’? 跳至 START1 开始计时 AL=’ESC ’?
结 束
调用实践延时程
序(TIME )
MSE2
加 1 等于10?
MSE2 被回零 MSE1 加1 等于10? MSE1 被回零 SEC2 加 1 等于10?
SEC2 回零 SEC1加1
SEC1 回零 MIN2 加 1 等于10?
MIN2 回零 MIN1 加 1
等于 6? MIN1 回零
1 1
1 1
1
2
3