倒计时牌 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息科学与技术学院
微机原理与接口技术
课程设计报告
题目名称:倒计时牌
学生姓名:冉婷婷
学号: 2009082244 专业年级:计科09级2班
指导教师:张更新
时间: 2012-01
目录
1.课程设计题目及要求 (1)
1.1课程设计的题目: (1)
1.2课程设计的要求 (1)
2.功能设计 (2)
2.1功能模块. (2)
2.2功能图 (2)
3.详细设计. (3)
3.1设计方法. (3)
3.2各功能模块及流程图 (3)
4.运行结果 (7)
5. 课程设计总结 (8)
6参考书目. (8)
附录. (10)
1、课程设计题目及要求
1.1课程设计的题目:倒计时牌
1.2课程设计的要求:
1.能实现日历功能
2.能实现倒计时功能(显示天、时、分、秒)
扩展功能:实现倒计时的时间人为设定
2、功能设计
2.1、功能模块:
宏定义:
置光标位置(setf)————定义光标定位宏
清屏(clearscreen)————用于将屏幕清成指定的前景背景色输入(input)————定义输入宏
程序:
主程序模块:根据选择显示日历的时间,或倒计时时间
初始化窗口模块:给出操作提示。
系统时间子程序:取得时间,并将时间存于数据段的。
系统日期子程序:取得日期星期,并将日期星期信息存于数据。
转换子程序:将阳历转换成阴历,将阴历信息存于。
显示子程序:通过数据段的shuzi,将时间显示成数码管的形式。
延时子程序:通过检测61h端口,实现延时一秒。
减一秒子程序:执行延时程序后,时间减少一秒。
减一天子程序:若时间00:00:01减少一秒,则执行减一天的操作。
输出子程序————输出指定的字符串。
2.2、功能图:
Y
开始
操作提示
进
行
阴
阳
历
的
转
换
倒
计
时
功
能日
历
功
能
是否有字符输入?
显示时间、操作提示
退出
3、详细设计:
3.1、设计方法:
定义clearscreen宏,使用BIOS的06号功能---清屏或上卷;定义setf宏,使用BIOS的02号功能---制光标位置;定义input宏,使用BIOS的01号功能---输入字符。
显示系统当前时间与日期,使用DOS的2A号功能取系统日期和2C号功能取系统时间。定义数据段Disptime存放系统时间,Dispdata存放系统日期。年存在ch中,月存在dh中,日存在dl中。将年份除以10,得到它的每一位,每一位加30h,求取它的ASCII码,并将其送到指定的存储位置中。求取时间的方法与日期相同。
在代码段中主函数通过调用各子程序来执行相应的功能。Disp子程序取得disptime内的数字并乘以16确定该数字在shuzi段的位置,之后置光标显示该字符。Delay子程序通过监听61h端口实现硬件延时,消除由于cpu速率导致的延时不精确。
3.2、各功能模块及流程图
取得日期、星期的getdata 模块 延时程序模块
n
y
n
y
n
y
开始
设置循环次数75d
设置循环次数6632d
al ==0 ?
bl ==0 ?
结束
监听61端口,直到第四位发生改变
开始
mov bx,10
取系统年份放入并放入ax
mov cx,4
dx 清0,存余数 商送ax,余数送dx
将余数加30h
将余数放指定位置
pop dx
结束
push dx
div bx
cx==0 ?
时间减少一秒dec_1s模块
mov al,[Disptime+7]
dec al
mov [Disptime+7],al
Y
mov [Disptime+7],09h
mov al,[Disptime+6]
dec al
mov [Disptime+6],al
同理,判断是否导致
分、时减1
return
N Cmp al,10
取得时间的gettime模块将数字显示成数管的形式的disp子程序
调用21h的2ch号中
断,取得时间
从ch中取得时,并除以10,分别将商和余数存于代码段的两个字节,将时的2位分别存储
从cl中取得时,并除以10,分别将商和余数存于代码段的两个字节,将分的2位分别存储
从cl中取得时,并除以10,分别将商和余数存于代码段的两个字节,将分的2位分别存储取disptime中的时的十位至al
将取得数字乘以16得到其对应在shuzi段的对应显示
显示字符串
置光标位置
Dx加06
置光标,并显示字符串
Dx加06
置光标,并显示字符串
重复上述过程,将时分秒全部显示