电子时钟课程设计报告.docx

上传人:b****6 文档编号:13828594 上传时间:2023-06-17 格式:DOCX 页数:28 大小:151.64KB
下载 相关 举报
电子时钟课程设计报告.docx_第1页
第1页 / 共28页
电子时钟课程设计报告.docx_第2页
第2页 / 共28页
电子时钟课程设计报告.docx_第3页
第3页 / 共28页
电子时钟课程设计报告.docx_第4页
第4页 / 共28页
电子时钟课程设计报告.docx_第5页
第5页 / 共28页
电子时钟课程设计报告.docx_第6页
第6页 / 共28页
电子时钟课程设计报告.docx_第7页
第7页 / 共28页
电子时钟课程设计报告.docx_第8页
第8页 / 共28页
电子时钟课程设计报告.docx_第9页
第9页 / 共28页
电子时钟课程设计报告.docx_第10页
第10页 / 共28页
电子时钟课程设计报告.docx_第11页
第11页 / 共28页
电子时钟课程设计报告.docx_第12页
第12页 / 共28页
电子时钟课程设计报告.docx_第13页
第13页 / 共28页
电子时钟课程设计报告.docx_第14页
第14页 / 共28页
电子时钟课程设计报告.docx_第15页
第15页 / 共28页
电子时钟课程设计报告.docx_第16页
第16页 / 共28页
电子时钟课程设计报告.docx_第17页
第17页 / 共28页
电子时钟课程设计报告.docx_第18页
第18页 / 共28页
电子时钟课程设计报告.docx_第19页
第19页 / 共28页
电子时钟课程设计报告.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子时钟课程设计报告.docx

《电子时钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《电子时钟课程设计报告.docx(28页珍藏版)》请在冰点文库上搜索。

电子时钟课程设计报告.docx

电子时钟课程设计报告

目录

第一章前言1

第二章题目要求与方案论证2

2.1题目要求2

2.2设计目的2

2.3方案论证2

2.3.1思路2

2.3.2程序设计原理3

2.3.3用到的DOS系统功能3

2.3.4用到的BIOS系统功能4

第三章方案设计6

3.1流程图6

3.2程序代码设计8

3.2.1主程序模块的设计8

3.2.2日期显示子程序模块9

3.2.3时间显示子程序模块12

3.2.4界面显示模块13

第四章结果与分析16

4.1调试过程16

4.2结果16

4.3分析18

第五章总结与体会19

参考文献20

附录21

第一章前言

作为最基本的编程语言之一,汇编语言的重要性勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。

尤其在和硬件关系非常密切的程序或要提高运算速度的程序,即使是C语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。

最重要的是微机原理和接口技术是一门实践性强的学科,不但要求有较高的理论水平,而且还要求有实际的动手能力,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才能比较直观和深刻的理解。

本课程设计的主要目的是提高实践能力,包括提高汇编等语言的编程能力及对接口等硬件的理解分析能力和设计接口电路的能力,在进行课程设计的过程中,可以让学生体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程,从而帮助学生系统地掌握微机原理的接口技术的相关知识,达到将知识融会贯通的目的。

本次课程设计我们组做的是数字显示电子钟,要求和系统时钟一致。

由于水平有限,该设计还存在了很多的不足,希望各位读者的够指出改正。

 

第二章题目要求与方案论证

2.1题目要求

  数字显示电子钟:

利用微机现有资源,编写程序在PC屏幕上显示运行的时钟,要求和系统时钟一致。

2.2设计目的

通过一个学期对《微机原理及接口技术》学习,掌握的知识还停留在理论的上。

但是这是一门实践性较强的课程,让学生在学完该课程之后,通过本课程设计环节教学,加深学生对“微机原理与接口技术”、“汇编语言"等课程知识的掌握与综合运用,,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。

通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。

通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。

提高学生的创新意识及动手操作能力,为后续各门计算机课程的学习,以及毕业后从事微机硬件及软件开发打下基础,积累初步的经验。

2.3方案论证

2.3.1思路

先建立显示界面,再根据键盘输入的字符判断是显示日期还是时间,然后调用DOS系统2AH(或2CH)号功能分别将系统的日期(或时间)取出,接着把时间(或日期)转换成ASCII码并存到指定的系统内存区中,最后调用BIOS中断10的13号功能将其在屏幕上显示出来。

2.3.2程序设计原理

首先利用调用BIOS的中断10的0号功能创建显示窗口,选择适当的背景和前景等,使屏幕显示更加完美。

在数据段开辟两个显示缓冲区,分别用来存储系统时间及日期。

根据键盘输入的字符显示相应的内容。

假如输入的是T,则进入时间显示子程序,调用DOS中断21H的2CH号系统功能返回系统时间,再调用字符转换成ASCII码的子程序分别将二进制小时数、分钟数、秒数转换成ASCII码并存入显示缓冲区,方便时间显示时的调用。

调用BIOS的中断10的13号功能,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。

由于获取了的系统时间不会自动刷新,而我们要设计成刷新的方式来不断获取系统的时间,故需调用BIOS的中断16的1号功能,这样才能形成会跳动的电子钟,将不间断地显示时间。

假如输入的是D,则进入日期显示子程序,调用DOS中断21H的2AH号系统功能返回系统日期,再调用字符转换成ASCII码的子程序分别将二进制年数、月数、日数转换成ASCII码并存入显示缓冲区,方便年月日显示时的调用。

调用BIOS的中断10的13号功能,定位光标的开始位置,结合着将日期显示在我们预先定义好的位置上。

由于获取了的系统日期不会自动刷新,而我们要设计成刷新的方式来不断获取系统的日期,故需调用BIOS的中断16的1号功能,这样才能形成会跳动的电子钟,将不间断地显示日期。

 要想程序停止运行,可在键盘按下Q键,这样就可以返回DOS系统。

2.3.3用到的DOS系统功能

A:

中断21H:

1)键盘输入单字符——1号功能的调用

调用格式:

MOVAH,1

INT21H

功能:

调用无入口参数,执行时系统首先等待键盘输入,待程序员按下任何一键,系统先检查是否是Ctrl-Break键。

如果是则退出,否则将键入的字符ASCII码置入寄存器,并在屏幕上显示该字符。

2)取日期——2AH号系统功能调用

入口参数:

AH=2AH

出口参数:

CX=年份(1980~2099)

DH=月份(1~12)

DL=日(1~31)

AL=星期(0~6,0代表星期天)

功能:

调用取出由DOS保持的年、月、日及星期。

CX、DH、DL、AL中都是二进制数,要想在屏幕上显示出来必须变成ASCII码才行。

3)取时间——2CH号系统功能调用

入口参数:

AH=2CH

出口参数:

CH=小时(0~23)

CL=分钟(0~59)

DH=秒(0~59)

DL=1/100秒(0~99)

功能:

调用取出由DOS保存的时间。

CX与DX中都是二进制数,要想在屏幕上显示出来必须变成ASCII码才行。

4)返回操作系统——4CH号系统功能调用

调用格式:

MOVAH,4CH

INT21H

功能:

调用无入口参数,执行结果是结束当前正在执行的程序,并返回DOS操作系统。

2.3.4用到的BIOS系统功能

A:

中断10H:

1)设置显示方式——0号功能调用

入口参数AL=显示方式值

0040×25黑白文本方式

0140×25彩色文本方式

0280×25黑白文本方式

0380×25彩色文本方式

04320×320彩色图形方式

功能:

无出口参数,将显示方式设置为指定形式

2)置光标位置——2号功能调用

入口参数DH=行号

DL=列号

BH=页号

功能:

无出口参数,将光标设置在指定的位置

3)显示字符串——13号功能调用

ES:

BP=串地址

CX=申长度

DH,DL=起始行,列

BH=页号

AL=0,BL=属性串:

char,char,…

AL=1,BL=属性串:

char,char,…

AL=2

串:

char,char,char,attr,…

AL=3

串:

char,char,char,attr,…

功能:

显示字符串并设置显示的属性

B:

中断16H:

1)读键盘缓冲区字节——1号功能调用

调用格式:

MOVAH,01H

   INT16H

功能:

用来查询键盘缓冲区,对键盘扫描但不等待,并设置ZF标志。

若有按键操作(即键盘缓冲区不空),则ZF=0,AL中存放的是输入的ASCII码,AH中存放输入字符的扩展码。

若无键按下,则标志位ZF=1。

第三章方案设计

3.1流程图

图1:

主程序流程图图2:

显示时间子程序流程图

 

图3:

显示时间子程序流程图

 

3.2程序代码设计

根据设计思路及流程图,设计系统为主-子程序结构,通过子程序调用和嵌套完成对时间、日期的显示。

因此自然分成三个部分——主程序、日期显示子程序、时间显示子程序。

另外界面显示在本程序占较大比例故作一独立模块单独设计。

于是,程序代码的设计共分四个主要的模块进行——主程序模块、日期显示子程序模块、时间显示子程序和界面显示模块。

3.2.1主程序模块的设计

根据设计思路本程序主要实现从键盘输入“D”可显示系统当前日期及星期几;输入“T”可显示系统当前时间;输入“Q”返回操作系统。

主程序模块主要完成对键盘键入字符判别及分别调用日期显示子程序和时间显示子程序。

依次要求设计如下代码:

CODESEGMENT;代码段

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA;装填数据段、附加段

MOVDS,AX

MOVES,AX

·

·

·

INT21H

MOVAH,1;从键盘输入单字符

INT21H

CMPAL,44H;AL='D'?

JNESHIJIAN

CALLDATE;显示日期

SHIJIAN:

CMPAL,54H;AL='T'?

JNEEXIT

CALLTIME;显示时间

EXIT:

CMPAL,51H

JNESTART

MOVAH,4CH;返回DOS状态

INT21H

CODEENDS

ENDSTART

本段成程序完成当键盘键入“D”时调用日期显示子程序DATE,键入“T”时调用时间显示子程序TIME。

字符判断程序包含在一循环内可实现字符的连续判别。

3.2.2日期显示子程序模块

日期显示子程序模块设计功能为实时调用系统日期并将日期信息转化为ASCII码存入日期缓存显示之。

系统日期调用应用2AH号系统功能。

将年、月、日及星期存入CX、DH、DL、AL。

其都是二进制数,要想在屏幕上显示出来必须变成ASCII码才行。

为此首先编写一个将二进制转换为ASCII码并存入日期缓存的子程序BCDASC1:

BCDASC1PROCNEAR;日期数值转换成ASCII码字符子程序

PUSHBX

CBW

MOVBL,10

DIVBL

ADDAL,'0'

INCSI

ADDAH,'0'

MOVWORDPTRDBUFFER1[SI],AX

INCSI

POPBX

RET

BCDASC1ENDP

调用此子程序可使日期显示子程序大为简化。

显示日期时,年、月、日得显示只需将其转存AL调用BCDASC1即可。

但年的显示需将其高两位,低两位分开调用BCDASC1。

如年的显示:

MOVAX,CX;将年的高两位,低两位分开

MOVBX,100

DIVBL

MOVBL,AH

CALLBCDASC1;年份高两位转换成ASCII存入缓存

MOVAL,BL

CALLBCDASC1;年份低两位转换成ASCII存入缓存

在调用BCDASC1时注意日期缓存指针SI的变化,通过这种方法依次将年份高两位、年份低两位、月份、日期存入日期缓存DBUFFER1。

星期显示时,考虑到星期的表达有别于年、月、日。

年、月、日可直接用数字表示,而星期习惯用英文缩写表示。

这样星期显示单独编程。

首先在数据段定义星期字符串:

DBUFFER2DB'Sun.Mon.Tue.Wed.Thu.Fri.Sat.'

根据AL值对星期字符串指针DI做偏移找到星期显示地址。

由于寄存器有限需先将AX保存如DI内。

星期实现代码:

MOVAX,DI;恢复AX

XORAH,AH;偏移星期地址

SHLAL,1

SHLAL,1

LEADI,DBUFFER2

ADDDI,AX

实现找到星期显示地址。

完成后应用INT10H的13号功能将年、月、日及星期显示与银幕制定位置。

代码如下:

MOVBP,串地址

MOVDX,制定位置

MOVCX,串长

MOVBX,004EH

MOVAX,1301H

INT10H

此段可将字符串安制定长度,制定颜色,制定位置显示与银幕。

以上程序段均包含于如下循环中:

DATEPROCNEAR;显示日期子程序

DISPLAY:

MOVAH,2AH;取日期,CX:

年份;DH:

;份;DL:

日期;AL:

星期

INT21H

·

·

·

MOVAH,02H;设置光标位置位03*00

MOVDX,0300H

MOVBH,0

INT10H

CALLDELAY;调用延时程序

MOVAH,01H;读键盘缓冲区字符到AL寄存器

INT16H

JEDISPLAY;键盘缓冲区AL不变跳至DISPLAY循环

JMPSTART

RET

DATEENDP

此循环可保时间信息连续刷新直到键盘键入字符。

 

3.2.3时间显示子程序模块

此模块与日期显示模块类似,同样有二进制转换为ASCII码并存入时间缓存的子程序BCDASC,和外循环结构。

具体程序如下:

TIMEPROCNEAR;显示时间子程序

DISPLAY1:

MOVSI,0

MOVBX,100

DIVBL

MOVAH,2CH;取时间,CH:

小时;CL:

分;DH:

INT21H

MOVAL,CH

CALLBCDASC;小时转换成ASCII存入时间缓存

INCSI

MOVAL,CL

CALLBCDASC;分钟转换成ASCII存入时间缓存

INCSI

MOVAL,DH

CALLBCDASC;秒转换成ASCII存入时间缓存

MOVBP,OFFSETDBUFFER;系统时间为黄色

MOVDX,0D0DH

MOVCX,20

MOVBX,004EH

MOVAX,1301H

INT10H

MOVAH,02H;设置光标位置

MOVDX,0300H

MOVBH,0

INT10H

CALLDELAY;调用延时程序

MOVAH,01H;读键盘缓冲区字符到AL寄存器

INT16H

JEDISPLAY1;键盘缓冲区AL不变跳至DISPLAY循环

JMPSTART

MOVAX,4C00H

INT21H

RET

TIMEENDP

此部分程序完成对系统时间的调用并显示并能实时刷新时间。

3.2.4界面显示模块

为了使显示界面更加友好将界面设计成如下样式:

图4显示界面

以上界面的实现通过如下程序实现:

DATASEGMENT;数据段

SPACEDB1000DUP('');定义25*40个空格

PATTERNDB3DUP('*'),0C9H,26DUP(0CDH),0BBH,3DUP('*')

;定义显示区图形

DB3DUP('*'),0BAH,1DUP('DATE:

'),21DUP(20H),0BAH,3DUP('*')

DB3DUP('*'),0BAH,1DUP('TIME:

'),21DUP(20H),0BAH,3DUP('*')

DB3DUP('*'),0BAH,1DUP('WEEK:

'),21DUP(20H),0BAH,3DUP('*')

DB3DUP('*'),0C8H,26DUP(0CDH),0BCH,3DUP('*')

DBUFFERDB'',7DUP(':

'),12DUP('');时间缓冲区

DBUFFER1DB'',10DUP('/'),9DUP('');日期缓冲区

DBUFFER2DB'Sun.Mon.Tue.Wed.Thu.Fri.Sat.';星期缓存区

STRDB0DH,0AH,'PLEASEINPUTDATE(D)ORTIME(T)ORQUIT(Q),$'

;提示信息

·

·

·

MOVAX,0001H;设置显示方式为彩色文本方式

INT10H

MOVAX,DATA;装填数据段、附加段

MOVDS,AX

MOVES,AX

MOVBP,OFFSETSPACE;显示25*40空格

MOVDX,0B00H;起示位置是0B行00列

MOVCX,1000;串长为1000

MOVBX,0040H;文本底色为红色

MOVAX,1300H

INT10H

MOVBP,OFFSETPATTERN;显示矩形条

MOVDX,0B00H;起示位置是0B行00列

MOVCX,200;串长为1000

MOVBX,003EH;设置矩形条为黄色

MOVAX,1301H

INT10H

LEADX,STR;显示提示信息

MOVAH,9

···

显示界面主要通扩展ASCII码特殊字符的排列来实现。

并用INT10H的13号功能显示。

 

第四章结果与分析

4.1调试过程

1)编译源文件,命名为SHIZHONG.ASM,并保存于D盘

2)键入命令MASMD:

\SHIZHONG.ASM生成一个OBJ文件,检查源程序中的错误,并改正。

3)键入连接命令LINKD:

\SHIZHONG.OBJ,再次键入HULILNGWEI回车,即可显示结果。

 

4.2结果

当键盘输入T时结果如下:

图5输入T时界面显示

 

当键盘输入D时结果如下:

图6输入D时界面显示

当键盘输入Q时结果如下:

图7输入Q时界面显示

4.3分析

经验证,当从键盘输入T时,电子钟只显示时间,且与PC机系统时间保持一致,随PC机变化而变化;当从键盘输入D时,电子钟只显示日期和星期,且与PC机系统保持一致;当从键盘输入Q时,返回DOS系统。

当不停地键入字符D或T时,电子钟可以不停的刷新。

综上所述,本次课程设计基本达到课题要求,实现了和系统时钟一致。

此外,我们在此基础上加以拓展,首先是创建了华丽的显示见面,其次是实现了查询功能,最后是我们所设计的数字显示电子钟还可以显示星期。

总的来说,本次设计还是比较成功的。

 

第五章总结与体会

很快两个星期的课程设计就结束了,在本次实践中我们学到了很多宝贵的知识和经验。

本次课程设计并不是一帆风顺的,期间-我们遇到过一些问题,有过喜悦,也有过失落,曾一度热情高涨,也曾一度情绪低落,从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我们回味无长。

通过近两周的课程设计,课程设计的基本目的达到了,我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的合作,我感觉我和同学们之间的距离更加近了;我想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋。

也许有人不喜欢这类的工作,也许有人认为设计的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就可。

这个时代不欢迎孤独的英雄,因为一个人的能力毕竟有限,惟有善于合作的团队才能发挥出最大的能量。

在这次课程设计中,我真正体会到了合作的重要性。

在这次程序设计中我们四个人在一起,从要实现的功能到流程图的绘制,从程序的编写到程序的检查,从程序的调试到实验报告的写作,其间每一个过程都凝聚了我们组的力量。

在遇到棘手的问题时,我们总是一起讨论,一起把问题解决。

这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师和同学的帮助下,终于游逆而解。

同时,在别人的身上我们学也到很多实用的知识,在此对给过我帮助的老师和各位同学表示衷心的感谢!

  

参考文献

[1]朱金钧,麻新旗.微型计算机原理及应用技术(第二版).机械工业出版社,2005

[2]杨立,赵丑民,曲凤娟.微型计算机原理与接口技术学习与实验指导(第一版).中国水利水电出版社,2008

附录

程序源代码:

STACKSEGMENTSTACK;堆栈段

DW200DUP(?

STACKENDS

DATASEGMENT;数据段

SPACEDB1000DUP('');定义25*40个空格

PATTERNDB3DUP('*'),0C9H,26DUP(0CDH),0BBH,3DUP('*');定义显示区图形

DB3DUP('*'),0BAH,1DUP('DATE:

'),21DUP(20H),0BAH,3DUP('*')

DB3DUP('*'),0BAH,1DUP('TIME:

'),21DUP(20H),0BAH,3DUP('*')

DB3DUP('*'),0BAH,1DUP('WEEK:

'),21DUP(20H),0BAH,3DUP('*')

DB3DUP('*'),0C8H,26DUP(0CDH),0BCH,3DUP('*')

DBUFFERDB'',7DUP(':

'),12DUP('');时间缓冲区

DBUFFER1DB'',10DUP('/'),9DUP('');日期缓冲区

DBUFFER2DB'Sun.Mon.Tue.Wed.Thu.Fri.Sat.';星期缓存区

STRDB0DH,0AH,'PLEASEINPUTDATE(D)ORTIME(T)ORQUIT(Q),$'

;提示信息

DATAENDS

CODESEGMENT;代码段

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA;装填数据段、附加段

MOVDS,AX

MOVES,AX

MOVAX,0001H;设置显示方式为

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2