大学毕业设计电子时钟的设计Word文件下载.docx
《大学毕业设计电子时钟的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《大学毕业设计电子时钟的设计Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
![大学毕业设计电子时钟的设计Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/31/e602d098-4153-419b-9761-3c743102ad87/e602d098-4153-419b-9761-3c743102ad871.gif)
了解屏幕I/O中断;
3:
了解定时/计数器和中断的使用;
4:
在本实中使用了DOS中断的键盘功能调用解了微机的原理与应用技术,特别是在对中断技术的理解与应用方面,更好地理解了微机的工作情况与运行方式,让我们对其有更深刻的认识。
指导教师签名:
年月日
二、指导教师评语:
三、成绩
验收盖章
年月日
一.课程设计目的:
了解定时/计数器和中断的使用。
二.课程设计的主要内容和要求:
第一部分:
定义显示界面。
第二部分:
调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。
第三部分:
将存在系统内存区的时间数用显示字符串的形式显示出来。
第四部分:
获取键盘的按键值,判断键值并退出系统。
三.设计思路:
首先在数据段开辟一显示缓冲区,用来存储系统时间。
调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。
分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。
调用DOS字符串显示功能将时间显示出来。
并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。
由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。
其次在二进制转化成ASCII码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的BCD码,再将高四位低四位分别相加30H,从而转化为ASCII码,了解电脑cup如何将ASCII码的信息转换成显示字符。
最后,了解了如何对其他经典程序的灵活应用。
我们的程序是不断对显示屏进行刷新的,所以我们调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后我们用了jmpdisplay指令,刷新显示屏,从而达到时间的每秒显示。
四.流程图:
Y
五.程序原代码:
;
NAME:
ELECTRONICCLOCK
;
DESIGNBYZENGQINGYUCLASS1ANDMOXIAOLEICLASS3
DATASEGMENT
MESS1DB'
我们的电子时钟'
0AH,0DH
DB'
**'
****'
*ELECTRONICCLOCK*'
*制作:
孙振彭强*'
*VERSION:
1.0*'
*MADEINCHINA*'
*-------------------------OOOO-------------------------*'
'
$'
MESS2DB'
现在时刻:
'
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
MOV[BX],AL
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
PUSHBX;
置光标位置
MOVDH,0
MOVDL,0
LEADX,MESS1
PUSHBX;
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,6AH;
背景颜色,白色前景
SUBCX,CX
MOVDX,5F5FH
POPDX;
出栈恢复现场
POPCX
CLEARENDP
-----------------------------------------
DELAY1PROC;
精确延迟时间子程序
MOVDX,04FFH;
循环次数
UP:
XORCX,CX
A:
NOP
LOOPA
DECDX
JNZUP
DELAY1ENDP
----------------------------
CODEENDS
ENDMAIN
程序截图:
七.参考文献:
周明德.《微型计算机原理及应用》.第四版.北京.清华大学出版社
岳克宁主编.《微机原理及接口技术实验指导书》
彭楚武.《微机原理及接口技术》.湖南长沙.湖南大学出版社.2004.
马瑞芳主编.《汇编语言程序设计》.西北工业大学出版社2002年3月