微机原理课程设计电子时钟的设计Word格式.docx
- 文档编号:22863807
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:12
- 大小:34.98KB
微机原理课程设计电子时钟的设计Word格式.docx
《微机原理课程设计电子时钟的设计Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电子时钟的设计Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
并调用屏幕I/O中断,定位光标开始位置,结合着将时间显示在我们预先定义好位置上。
由于获取了系统时间不会自动刷新,所以我们要设计成刷新方式来不断获取系统时间,这样就形成了会跳动电子钟了。
时间显示刷新要配合延时程序进行,为了得到良好显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。
程序最后还设计一了个按“ESC”键就退出功能,采取了判断键值方法。
为了显示美观,还设计一个字符图界面,通过显示字符串方法显示出来。
本程序具有很强扩展功能,我们可以在此基础上进行一些输入、输出扩展,显示扩展,比如可以做成计时器,并设计一个精美运动图形界面,时间到了会自动调用PC喇叭发出报警声等等。
。
但是由于时间原因,所以只做了核心部分,这不得不说是一个遗憾。
本程序使用了未来汇编,与VISUALASM开发平台。
四.程序设计心得:
本程序虽然只花了一天时间,但是也收获颇多。
其实本程序设计思路并不难想,核心代码设计所花时间也不长。
但是调试时间却占了差不多70%时间,在本程序设计初期曾经走了不少弯路碰见过不少难题,所幸是在我们坚持下最终把难题一一击破。
下面就列举下我们遇见过比较繁琐难题:
进制转换问题。
开始我们思路是想将AL内容除于10,然后分别讲除数跟商分别加上30H转换成ASCII码并保存在AH跟AL里面。
但是写完调试时候系统自动弹出一个对话框,要求关闭,可是用自带编译器却可以通过,百思不得其解,最后上网找了资料才发现是编译系统跟操作系统不兼容问题,本人操作系统是最新WIN2003,纯32位系统,跟16位软件有不兼容也是有可能。
但我本人又不想重装个WIN98来调试程序,于是就放弃这种方法,改用逻辑移位,调整方式来实现了。
屏幕显示问题。
开始做完程序时候由于采用了光标定位方法,发现运行了程序后显示光标不停地跳动,而且在不同位置上跳动,严重影响了程序可观赏性。
检查发现原来光标跳动跟程序刷新频率跟人眼视觉残象成影原理有关,只要系统刷新频率大于1/25秒,那么人眼就会认为图象在改变,这跟电影为什么要设成25帧/秒播放速率原理是一样。
这样一来,就必须设计一较为精确延时程序来改善画面显示了,只要不让屏幕刷新得太快就可以打到要求了,具体显示时间是通过延时程序里DX值决定,通过调整DX值,我们发现当DX等于04FF时候显示效果是最好。
系统退出问题。
开始本程序是使用了DOS中断键盘功能调用,可是当我们加了比较跳转指令后整个程序就停了在那里,具体原因不是很清楚。
最后换成了键盘I/O功能调用,问题迎刃而解了。
希望能跟老师一起探讨这个问题。
我心得体会
我们所设计程序原理是:
程序先调用系统时间,然后将返回二进制数转化成ASCII码,再通过dos显示功能显示出来,并通过循环不断刷新显示时间.
我从这次程序设计过程中学会,理解了几点我以前不熟悉知识:
首先在二进制转化成ASCII码过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位BCD码,再将高四位低四位分别相加30H,从而转化为ASCII码,此时要对照书本P416附录1了解电脑cup如何将ASCII码信息转换成显示字符。
其次,了解了如何对其他经典程序灵活应用。
我们程序是不断对显示屏进行刷新,所以我们调用了bctd程序,这是一个精确计时程序,计数时间约为1秒,然后我们用了jmpdisplay指令,刷新显示屏,从而达到时间每秒显示。
通过了这次程序设计,使我更深刻地理解了微机原理与应用技术,特别是在对中断技术理解与应用方面,更好地理解了微机工作情况与运行方式。
可以这样说,如果没有此课程设计,我对微机原理与应用技术,仍旧停滞于表面了解、一知半解甚至不知其解状态,这样就谈不上学知识、长见闻、提高自身学术素质与理论水平方方面面。
但也让作者感到自身知识和理论水平要作更高层次课程设计,远远不足,还需要不懈地学习与提高,更需要指导老师与在此方面高手不吝赐教!
参考资料:
《微型计算机原理及应用》第四版周明德清华大学出版社
《微机原理及接口技术实验指导书》岳克宁主编
《全国计算机等级考试辅导教程与同步试题训练(3级PC技术)》冶金工业出版社
五.流程图:
Y
清屏
调用DOS中断
取系统时间
2进制转ACSII码
将转换好系统时间存入时间显示缓冲区
显示时间与界面
ESC键按下?
调用延时子程序
返回DOS
程序结束
N
六.程序源码:
;
name:
ELECTRONICCLOCK
;
designbyzengqingyuclass1andmoxiaoleiclass3
datasegment
mess1db'
\\\|///'
0ah,0dh
db'
\\ .-.- //'
( .@.@ )'
+-----------oOOo-----(_)-----oOOo-------------+'
+ASMASSIGNMENT+'
+ELECTRONICCLOCK+'
+DesignbyKevin&
Ray+'
+version:
1.0+'
++'
+PressESCbuttontoquit+'
+-------------------------Oooo----------------+'
'
$'
mess2db'
Thetimeisnow:
'
0ah,0dh,'
t_buffdb20;
在数据段开辟一时间显示缓冲区
dataends
stacksegment
db100dup(?
)
stackends
codesegment
assumecs:
code,ss:
stack,ds:
data
main:
callclear;
调用清屏子程序
display:
----------------------------时间显示部分--------------
movax,segdata
movds,ax
movbx,offsett_buff;
送t_buff偏移地址到BX
movah,2ch;
调用DOS时间调用功能,功能号:
2cH,小时,分钟,秒数分别保存在CH,CL,DH中
int21h
moval,ch;
小时数设定
movah,0
callbctd;
调用进制转换子程序
pushax
andal,0f0h;
选取al高四位
movcl,4;
设置右循环次数
rolal,cl;
右循环
oral,30h;
加30h得到ACSII码
mov[bx],al;
将得到结果送到t_buff缓冲区
incbx;
BX自加1,指针指向下一个缓冲区下一个地址
popax
andal,0fh;
选取低四位,道理同上
oral,30h
将转换后低四位值送入缓冲区第二个地址
incbx
----------------------------------------------------------
moval,'
:
显示分号
mov[bx],al
-------------------------------------------------------
movah,2ch
moval,cl;
分钟数设定
callbctd
andal,0f0h
movcl,4
rolal,cl
andal,0fh
-------------------------------------------------------------------------
显示;
号
秒设定
moval,dh
----------------------------------------------------------------------
将字符串结束位送至显示缓冲区最后一位
------------------------------------------------------------------------
pushbx;
置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX
movah,2
movbh,0
movdh,17
movdl,41
int10h
popbx
leadx,t_buff;
送t_buff偏移地址到DX,并调用DOS显示功能,功能号为9
movah,9
置光标位置
movdh,0
movdl,0
leadx,mess1
movdl,21
leadx,mess2
-----------------------------
calldelay1
movah,1;
按任意键结束,调用键盘I/O中断功能号1,获取键值到AL
int16h
cmpal,1bh
jzquit;
是ESC键话就跳转
jmpdisplay
quit:
movah,4ch
ret
-------------------------------
bctdprocnear;
二进制转BCD码子程序
AX输入参数
AX输出参数,存放调整过BCD码
movdx,ax
movax,0
movcx,16;
设循环次数
bctd1:
clc;
清进位标志C
rcldx,1;
通过进位循环右移
adcal,al;
带进位加法
daa;
加法十进制调整
xchgal,ah;
交换高,低八位
adcal,al
daa
xchgal,ah
loopbctd1;
循环,次数保存在CX里
bctdendp
-------------------------------------------
clearprocnear
pushax;
入栈保护现场
pushbx
pushcx
pushdx
movax,0600h;
ah=06(滚动)al=00(全屏空白)
movbh,3fh;
背景颜色(3),白色前景(f)
subcx,cx
movdx,5f5fh
popdx;
出栈恢复现场
popcx
clearendp
-----------------------------------------
delay1PROC;
精确延迟时间子程序
MOVDX,04ffh;
循环次数
up:
XORCX,CX
a:
NOP
LOOPa
DECDX
JNZup
RET
delay1ENDP
----------------------------
codeends
endmain
程序运行截图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 电子 时钟 设计