大学毕业设计电子时钟的设计.docx

上传人:b****6 文档编号:8861517 上传时间:2023-02-02 格式:DOCX 页数:10 大小:52.51KB
下载 相关 举报
大学毕业设计电子时钟的设计.docx_第1页
第1页 / 共10页
大学毕业设计电子时钟的设计.docx_第2页
第2页 / 共10页
大学毕业设计电子时钟的设计.docx_第3页
第3页 / 共10页
大学毕业设计电子时钟的设计.docx_第4页
第4页 / 共10页
大学毕业设计电子时钟的设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

大学毕业设计电子时钟的设计.docx

《大学毕业设计电子时钟的设计.docx》由会员分享,可在线阅读,更多相关《大学毕业设计电子时钟的设计.docx(10页珍藏版)》请在冰豆网上搜索。

大学毕业设计电子时钟的设计.docx

大学毕业设计电子时钟的设计

湖南电子学院

课程设计

 

04级电子信息工程专业

 

题目

电子时钟的设计

课程名称

微机原理与系统设计

姓名

孙强

学号

0412201*20

指导教师

力冰

日期

2005年12月28日

 

物理与电信工程系

一、设计任务及要求:

设计任务:

编写程序,在PC机上显示时间。

要求:

1:

学会运用进制转换;2:

了解屏幕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'**',0AH,0DH

DB'****',0AH,0DH

DB'****',0AH,0DH

DB'****',0AH,0DH

DB'*ELECTRONICCLOCK*',0AH,0DH

DB'*制作:

孙振彭强*',0AH,0DH

DB'*VERSION:

1.0*',0AH,0DH

DB'**',0AH,0DH

DB'**',0AH,0DH

DB'*MADEINCHINA*',0AH,0DH

DB'*-------------------------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

MOV[BX],AL;将转换后的低四位值送入缓冲区的第二个地址

INCBX

;----------------------------------------------------------

MOVAL,':

';显示分号

MOV[BX],AL

INCBX

;-------------------------------------------------------

MOVAH,2CH

INT21H

MOVAL,CL;分钟数设定

MOVAH,0

CALLBCTD

PUSHAX

ANDAL,0F0H

MOVCL,4

ROLAL,CL

ORAL,30H

MOV[BX],AL

INCBX

POPAX

ANDAL,0FH

ORAL,30H

MOV[BX],AL

INCBX

;-------------------------------------------------------------------------

MOVAL,':

';显示分号

MOV[BX],AL

INCBX

;-------------------------------------------------------------------------

MOVAH,2CH;秒设定

INT21H

MOVAL,DH

MOVAH,0

CALLBCTD

PUSHAX

ANDAL,0F0H

MOVCL,4

ROLAL,CL

ORAL,30H

MOV[BX],AL

INCBX

POPAX

ANDAL,0FH

ORAL,30H

MOV[BX],AL

INCBX

;----------------------------------------------------------------------

MOVAL,'$';将字符串的结束位送至显示缓冲区的最后一位

MOV[BX],AL

;------------------------------------------------------------------------

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

INT21H

PUSHBX;置光标位置

MOVAH,2

MOVBH,0

MOVDH,0

MOVDL,0

INT10H

POPBX

LEADX,MESS1

MOVAH,9

INT21H

PUSHBX;置光标位置

MOVAH,2

MOVBH,0

MOVDH,17

MOVDL,21

INT10H

POPBX

LEADX,MESS2

MOVAH,9

INT21H

;-----------------------------

CALLDELAY1

MOVAH,1;按任意键结束,调用键盘I/O中断功能号1,获取键值到AL

INT16H

CMPAL,1BH

JZQUIT;是ESC键的话就跳转

JMPDISPLAY

QUIT:

MOVAH,4CH

INT21H

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里

RET

BCTDENDP

;-------------------------------------------

CLEARPROCNEAR

PUSHAX;入栈保护现场

PUSHBX

PUSHCX

PUSHDX

MOVAX,0600H;AH=06(滚动)AL=00(全屏空白)

MOVBH,6AH;背景颜色,白色前景

SUBCX,CX

MOVDX,5F5FH

INT10H

POPDX;出栈恢复现场

POPCX

POPBX

POPAX

RET

CLEARENDP

;-----------------------------------------

DELAY1PROC;精确延迟时间子程序

MOVDX,04FFH;循环次数

UP:

XORCX,CX

A:

NOP

LOOPA

DECDX

JNZUP

RET

DELAY1ENDP

;----------------------------

CODEENDS

ENDMAIN

 

程序截图:

 

七.参考文献:

周明德.《微型计算机原理及应用》.第四版.北京.清华大学出版社

岳克宁主编.《微机原理及接口技术实验指导书》

彭楚武.《微机原理及接口技术》.湖南长沙.湖南大学出版社.2004.

马瑞芳主编.《汇编语言程序设计》.西北工业大学出版社2002年3月

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1