电子日历设计计算机组成技术大作业.docx

上传人:b****6 文档编号:15448062 上传时间:2023-07-04 格式:DOCX 页数:18 大小:336.38KB
下载 相关 举报
电子日历设计计算机组成技术大作业.docx_第1页
第1页 / 共18页
电子日历设计计算机组成技术大作业.docx_第2页
第2页 / 共18页
电子日历设计计算机组成技术大作业.docx_第3页
第3页 / 共18页
电子日历设计计算机组成技术大作业.docx_第4页
第4页 / 共18页
电子日历设计计算机组成技术大作业.docx_第5页
第5页 / 共18页
电子日历设计计算机组成技术大作业.docx_第6页
第6页 / 共18页
电子日历设计计算机组成技术大作业.docx_第7页
第7页 / 共18页
电子日历设计计算机组成技术大作业.docx_第8页
第8页 / 共18页
电子日历设计计算机组成技术大作业.docx_第9页
第9页 / 共18页
电子日历设计计算机组成技术大作业.docx_第10页
第10页 / 共18页
电子日历设计计算机组成技术大作业.docx_第11页
第11页 / 共18页
电子日历设计计算机组成技术大作业.docx_第12页
第12页 / 共18页
电子日历设计计算机组成技术大作业.docx_第13页
第13页 / 共18页
电子日历设计计算机组成技术大作业.docx_第14页
第14页 / 共18页
电子日历设计计算机组成技术大作业.docx_第15页
第15页 / 共18页
电子日历设计计算机组成技术大作业.docx_第16页
第16页 / 共18页
电子日历设计计算机组成技术大作业.docx_第17页
第17页 / 共18页
电子日历设计计算机组成技术大作业.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子日历设计计算机组成技术大作业.docx

《电子日历设计计算机组成技术大作业.docx》由会员分享,可在线阅读,更多相关《电子日历设计计算机组成技术大作业.docx(18页珍藏版)》请在冰点文库上搜索。

电子日历设计计算机组成技术大作业.docx

电子日历设计计算机组成技术大作业

电子日历设计

——计组大作业

作者:

***

学校:

哈尔滨工业大学

学院:

***************

班级:

*******

学号:

***********

 

日期:

2013年12月26日

 

电子日历设计

--计算机组成技术大作业

(哈尔滨工业大学,**学院,***班,***,学号:

****)

摘要:

电子日历具有性能稳定、精确度高、成本低、易于产品化,以及方便、实用等特点。

本次设计可分为两部分:

硬件系统、软件系统。

硬件主要有:

8088CPU,38译码器,LED数码管显示器等。

通过键盘的按键来决定显示的是年、月、日,还是时、分、秒。

利用Proteus仿真软件进行仿真测试。

本论文主要分为以下几部分:

1、问题描述;2、设计过程:

硬件电路原理(LED显示)、软件设计思想及流程图(包括软件设计思想、程序设计模块、汇编源程序);3、功能仿真及测试。

关键词:

电子日历;LED数码管;Proteus仿真

近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。

多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。

单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。

但是却很少知道它的内部结构以及工作原理。

由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来,通过按键可以进行定时、校时功能。

输出设备显示器可以用液晶显示技术和数码管显示技术。

一、问题描述

在现今的电子日历具有性能稳定、精确度高、成本低、易于产品化,以及方便、实用等特点。

本次设计可分为两部分:

硬件系统、软件系统。

利用LED显示器能显示出当前的时间包括年月日时分秒并且能计算出闰年的功能的电子日历装置。

由于LED显示器只有六个数码管,所以不能同时显示年月日和时分秒。

所以通过键盘的按键来决定显示的是年、月、日,还是时、分、秒,利用单片机将RC复位电路、动态显示电路、电源电路、去抖电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。

二、设计过程

2.1硬件电路原理

实现电子钟计时的基本方法:

(1)计数初值计算:

把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。

假设使用T/C0,方式1,50ms定时,fosc=12MHz。

则初值X满足(216-X)×1/12MHz×12μs=50000μs

X=15536→0011110010110000→3CB0H

(2)采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);

(3)从秒到分和从分到时的计时是通过累加和数值比较实现。

2.1.1LED显示

6个LED数码显示可以采用P0、P2口实现。

此次设计是基于MCS-51对LED的接口,选用八段共阳LED。

八段LED显示管由八只发光二极管组成,编号是a,b,c,d,e,f,g和SP,分别与同名管脚相连。

八段LED数码显示管原理很简单,是通过同名管脚上所加电平的高低来控制发光二极管是否点亮从而现实不同的字形的。

如图2.1为共阳八段LED数码显示管原理图。

图2.2中,所有发光二极管阳极共连后接到G脚。

正常显示时G脚接+5V,各发光二极管是否点亮取决于a~SP各引脚上是否是低电平0伏。

2.1LED显示结构2.2LED显示原理

 

2.1.2电路原理设计

2.3电路原理图

2.2软件设计思想及流程图

2.2.1软件设计思想

程序的设计主要有T0中断服务程序,动态显示程序,数字分离程序,键盘扫描程序,键处理程序,设置时间,设置年月日初值,判闰年程序,清除显示缓冲区程序这几个功能模块。

运用汇编语言,设计一个简单的电子日历,在6位LED七段显示器动态的显示出来年、月、日、和时、分、秒,实现计时,秒到60,分加1;分到60,时加1;在通过键盘按键的切换小时到24时,天加1;由于公历是比较有规律的,1、3、5、7、8、10、12月为大月,每月31天;4、6、9、11月为小月,每月只有30天;而2月份,则要根据当前的年份来决定,平年,2月份有28天,闰年,2月份有29天。

所以处理2月份天数前要先判断是平年还是闰年。

因为每个月份的天数不同,则需要设置一个月值表,通过查表找到相应月的天数,先判断到哪个月份,再从月份表中查出此月份的天数值。

实现月加1,月到12,年再加1.,还需请注意:

平年与闰年的二月份的天数不同,平年二月28天,闰年的二月29天。

2.2.2程序设计模块

1.模块设计

本程序采用模块化设计的方法,主要由主函数,显示模块,判断是否闰年模块,提取系统日期模块组成

以下是对各个模块的说明:

(1)主函数。

主函数体现着本程序设计的基本思路。

从程序流程图上可以看到主函数执行的过程,这里不再赘述。

需要注意的是主程序中有一段循环结构,其作用是为了等待停止中断服务的申请,即键盘按键,一旦检测到有键盘按键,则跳出循环,根据按键的内容来判断下一步应要做什么。

(2)显示模块。

程序中INITJM子程序,作为显示界面的初始化程序,主要实现显示输入字符提示语和显示当前日期的提示语,根据光标定位的不同分别将其显示在不同的位置。

 

2.主要模块流程图

2-2-1主程序流程图

3.数字分离程序

R0为计时单元地址,R1为显示缓冲区地址。

因为时分秒,都需分离,则设置R2的循环次数为3。

先将41H单元内的时传送给累加器A,再与0F与,保留低四位,这样就使得时的低位被分离出来了。

分离后送与显示缓冲区R1的50H单元。

再将41H单元内的时传送给累加器A,使高低位交换。

交换之后,再与0F进行与运算。

使时的高位也分离出来,并送给显示缓冲区的51H单元内。

分和秒的分离方法与时一样,最终的分离结果为:

时分秒在50H—55H内显示。

同理,年月日,其分离方法也是同时分秒的分离原理一样。

 

其分离程序的流程图如下所示:

2-2数字分离流程图

4.设置年月日初值程序

先清除显示区的内容,因为年是四位,而月日是一起显示也是4位,所以将R0指向显示区53H单元并设置循环次数为4,再调用键盘扫描程序,判断是否有键按下设置年,然后将R0指向30H单元,键值区。

等到输入四个数,即年份。

这是年份在数码管上的显示,再将其低、高两位分别存放在46H,47H存储区内。

其设置月日的方法与设置年的方法也是一样的,但将日月分别存放在44H、45H存储区里。

2-3设置年月日初值程序流程图

5.动态显示程序

动态显示程序实现的功能是将年月日,时分秒在LED管中显示出来。

使用第一组工作寄存器组,再调用数字分离程序,数字分离程序能将键入的数值在LED数码管正确显示出来。

然后设置循环次数为6再将其存入R2中,,再将R3,R0分别指向地址为01H和50H。

将显示管字型表首址放入DPTR中再将50H单元的内容送到A中,接着R0加1,查字型码表。

循环6次查字型码表即可在LED上显示出时分秒,年月日。

2-4动态显示程序流程图

6.判断闰年

因为年是四位,而月日是一起显示也是4位。

让A指向46H单元,判断里面的内容是不是世纪年,若是世纪年,则要判断能不能被400整除。

能就是闰年,不能就不是;若不是世纪年,要判断能不能被4整除,不能被100整除。

满足这两个条件就是闰年,不满足就不是。

在判断过程中,使用A中的高低位互换,再让A中的内容与03H相与,若结果为0,则是闰年,若不为0,则不是闰年。

 

2-5判断闰年流程图

2.2.3汇编源程序

主程序

LP1:

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

INT21H

CMPAL,'M';AL='M'?

JNELP5

CALLDATE;显示系统日期

LP2:

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

INT21H

CMPAL,'M';AL='M'?

JNELP5

CALLTIME;显示系统时间

LP3:

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

INT21H

CMPAL,'M';AL='M'?

JNELP4

CALLSTOPWATCH;显示秒表

LP4:

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

INT21H

CMPAL,'M';AL='M'?

JNELP5

CALLRING

LP5:

CMPAL,'Q';AL='Q'?

JNELP1

MOVAH,4CH;返回DOS状态

INT21H

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

;显示日期子程序

DATEPROCNEAR

DISPLAY:

MOVAH,2AH;取日期CX:

DH:

DL=年:

月:

日AL=星期

INT21H

MOVSI,0

MOVAX,CX

MOVBX,100

DIVBL

MOVBL,AH

CALLBCDASC1;日期数值转换成相应的ASCII码字符

MOVAL,BL

CALLBCDASC1

INCSI

MOVAL,DH

CALLBCDASC1

INCSI

MOVAL,DL

CALLBCDASC1

MOVBP,OFFSETDBUFFER1

MOVDX,0C0DH

MOVCX,20

MOVBX,004EH

MOVAX,1301H

INT10H

MOVAH,02H;设置光标位置

MOVDX,0300H

MOVBH,0

INT10H

MOVBX,0018H

REPEA:

MOVCX,0FFFFH;延时

REPEAT:

LOOPREPEAT

DECBX

JNZREPEA

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

INT16H

JEDISPLAY

JMPLP2

MOVAX,4C00H

INT21H

RET

DATEENDP

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

;显示时间子程序

TIMEPROCNEAR

DISPLAY1:

MOVSI,0

MOVBX,100

DIVBL

MOVAH,2CH;取时间CH:

CL=时:

分DH:

DL=秒:

1/100秒

INT21H

MOVAL,CH

CALLBCDASC;将时间数值转换成ASCII码字符

INCSI

MOVAL,CL

CALLBCDASC

INCSI

MOVAL,DH

CALLBCDASC

MOVBP,OFFSETDBUFFER

MOVDX,0C0DH

MOVCX,20

MOVBX,004EH

MOVAX,1301H

INT10H

MOVAH,02H

MOVDX,0300H

MOVBH,0

INT10H

MOVBX,0018H

RE:

MOVCX,0FFFFH

REA:

LOOPREA

DECBX

JNZRE

MOVAH,01H

INT16H

JEDISPLAY1

JMPLP3

MOVAX,4C00H

INT21H

RET

TIMEENDP

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

;显示秒表子程序

STOPWATCHPROCNEAR

DISPLAY2:

PUSHA

MOVSI,0

MOVBX,100

DIVBL

;CALLWATCH

DISP3:

MOVAX,DATA

MOVDS,AX

MOVAL,WHOUR

CALLBCDASC2;将时间数值转换成ASCII码字符

INCSI

MOVAL,WMIN

CALLBCDASC2

INCSI

MOVAL,WSEC

CALLBCDASC2

MOVAL,WMSEC

INCSI

CALLBCDASC2

MOVBP,OFFSETDBUFFER2

MOVDX,0C0DH

MOVCX,20

MOVBX,004EH

MOVAX,1301H

INT10H

MOVAH,02H

MOVDX,0300H

MOVBH,0

INT10H

MOVBX,0018H

RE2:

MOVCX,0FFFFH

REA2:

LOOPREA2

DECBX

JNZRE2

MOVAH,01H

INT16H

JEDISPLAY2

POPA

JMPLP4

MOVAX,4C00H

INT21H

RET

STOPWATCHENDP

 

三、测试

利用Proteus仿真软件进行仿真测试,测试结果如下:

3.1Proteus仿真图

四、总结

“纸上得来终觉浅,绝知此事要躬行”,在以前学习的大部分时光里,我们都在埋头课本,努力学习理论文化知识。

这次硬件部件设计与调试实践,使我学习了很多的东西。

使我对所学的知识进行了系统的复习和巩固。

同时,通过本次课程设计,培养和锻炼了我的设计能力及文件的搜索能力,这一点非常重要,不仅对我以后的学习有帮助,还可以为以后的学习、工作打下一定的基础。

这一次的课设对我的帮助很大,使我真正的认识到了理论与实际的区别,这将成为我的学习目标和动力,更进一步的挖掘自己的能力,使自己获得进一步的提高。

在汇编语言的编写过程中,我受益良多。

以前没怎么接触过汇编语言,在很大程度上觉得自己无法编写出完整的程序。

通过不断地查阅资料,求助同学,终于大致完成了汇编语言的编写。

在组织电路图的过程中使我也学会了如何搭建单片机的硬件电路,如何根据硬件电路图来编制相误码的程序,使我对硬件课程的学习有了更浓的兴趣,使我对我所学的这个方向服了更浓的兴趣。

经过这次的练习,我会更加严格要求自己,认真对待每一个课设,认真学好计算机控制这门课,争取有一个新的提高。

五、参考文献

[1]李建忠编著.单片机原理及应用.西安:

西安电子科技大学出版社,2002

[2]李群芳,肖看编著.单片机原理、接口及应用.北京:

清华大学出版社,2005

[3]于海生编著.微型计算机控制技术.北京:

清华大学出版社,2008

[4]戴梅萼,史嘉权编著.微型计算机技术及应用(第3版).北京:

清华大学出版社,2008

[5]江晓安,董秀峰编著.数字电子技术(第二版).西安:

西安电子科技大学出版社,2005

 

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

当前位置:首页 > 求职职场 > 简历

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

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