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

上传人:b****4 文档编号:27047334 上传时间:2023-06-26 格式:DOCX 页数:11 大小:81.87KB
下载 相关 举报
电子时钟课程设计报告.docx_第1页
第1页 / 共11页
电子时钟课程设计报告.docx_第2页
第2页 / 共11页
电子时钟课程设计报告.docx_第3页
第3页 / 共11页
电子时钟课程设计报告.docx_第4页
第4页 / 共11页
电子时钟课程设计报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

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

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

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

电子时钟课程设计报告

目 录

1. 前言  2

2.题目要求与方案论证  2

2.1题目要求  2

2.2设计目的  2

2.3方案论证  3

2.3.1思路  3

2.3.2程序设计原理  3

2.3.3用到的DOS系统功能  4

2.3.4用到的BIOS系统功能  5

3.方案设计  6

3.1流程图  6

3.2程序代码设计  8

3.2.1主程序模块的设计  8

3.2.2日期显示子程序模块  9

3.2.3时间显示子程序模块  11

3.2.4界面显示模块  12

4.结果与分析  14

4.1调试过程  14

4.2结果  15

4.3分析  16

5.总结与体会  16

参考文献  17

附录  18

 

1. 前言

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

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

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

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

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

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

2.题目要求与方案论证

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号功能的调用

调用格式:

MOV AH,1

INT  21H

功能:

调用无入口参数,执行时系统首先等待键盘输入,待程序员按下任何一键,系统先检查是否是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号系统功能调用

调用格式:

MOV AH,4CH

INT  21H

功能:

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

2.3.4用到的BIOS系统功能

A:

中断10H:

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

入口参数  AL=显示方式值

00   40×25  黑白文本方式    

01   40×25  彩色文本方式    

02   80×25  黑白文本方式    

03   80×25  彩色文本方式    

04  320×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.方案设计

3.1流程图

图1:

主程序流程图          图2:

显示时间子程序流程图

图3:

显示时间子程序流程图

3.2程序代码设计

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

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

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

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

3.2.1主程序模块的设计

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

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

依次要求设计如下代码:

CODESEGMENT                ;代码段

ASSUME  CS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

    MOV  AX,DATA          ;装填数据段、附加段

MOV  DS,AX

MOV  ES,AX

INT    21H

MOV  AH,1             ;从键盘输入单字符

INT    21H

CMP  AL,44H             ;AL='D'?

JNE    SHIJIAN

CALL DATE             ;显示日期  

SHIJIAN:

  CMP  AL,54H             ;AL='T'?

JNE    EXIT

CALL TIME             ;显示时间  

EXIT:

  CMP  AL,51H

JNE  START

MOV  AH,4CH           ;返回DOS状态

INT  21H

CODEENDS  

END  START

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

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

3.2.2日期显示子程序模块

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

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

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

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

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

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

PUSH BX

CBW

MOV BL,10

DIV   BL

ADD AL,'0'

INC   SI

ADD AH,'0'

MOV WORDPTRDBUFFER1[SI],AX

INC SI

POP BX

RET

BCDASC1  ENDP

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

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

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

 

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

当前位置:首页 > 解决方案 > 其它

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

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