多功能电子钟课程设计报告文档格式.docx

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

多功能电子钟课程设计报告文档格式.docx

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

多功能电子钟课程设计报告文档格式.docx

5.若高位为0,则高位可灭零显示。

二、实验效果

1.常态以时间显示

2.编程使该电子钟有4个键,分别为校正键,“十”键,切换键及显示键。

3.正常显示的状态下,“+”键和显示键无效,校正状态下切换键无效。

4.四个键的作用分别为:

①校正键,在正常的状态下,第一次按下校正键表示校正月发功能,此时显示当日的日期及月显示闪烁。

第二次按下此键表示校日的功能,显示当前日期并且日闪烁显示。

第三次按下此键表示校时的功能,此时显示当前时间并且时闪烁显示。

第四次按下校正键表示校分功能,显示当前时间并且分闪烁显示。

②“+”键,功能为当前校正的内容在每按一下此键的情况下不进位的在该闪烁的内容上加“1”。

③确定键,使校正的内容生效并且返回正常显示时间的状态下。

④切换键,表示切换当前显示的模式,如:

当前显示的是时间,则按一下切换键则切换到日期的显示状态,反之亦成立。

如在按下切换键的状态下,5秒后没任何操作则返回到正常显示时间的状态。

三.实验思路(原理)

由以上分析可知要使日期及时间显示出来,首先想到的是要将它们存放起来,然后再将其送往数码管显示出来,这里又牵涉到一个问题,怎样将它们存放起来又要存到哪儿去?

这就要我们给它们分配存储单元以备送往显示,例如准备四个存储单元30H~33H分别存储月、日、时和分,送往显示时要为其准备显示缓冲存储区,如3AH、3BH,月、时送3AH缓存,日、分送3BH缓存备送显示,接下来就是相关方式初始化为内容显示作准备,其中包括时间/日期(T/D)标志的置位,校正标志的清除及定时期/计数期工作方式及初始化。

选好工作方式及计算出初值,打开中断申请标志位允许显示及校正中断服务程序的调用,然后,设计程序将显示缓存区的内容分解成BCD码送入43H~40H并以备显示,在该状态下要检查当前状态是否处于校正状态,若不是则将其静态显示出来,若是处于校正状态下,查看2FH.3是否为0,若是则送往静态显示,若不是的话,将对应的校正内容的BCD码单元送入DAH再显示出校正状态。

校正中断服务程序设计的思路:

首先判断其是否处于校正状态,若不是处于校正状态,再检查是否有按下时间/日期显示切换键。

如果已按下该键则取反T/D显示标志位,在该情况下又要判断其标志位的状态,T/D若为1则将时间内容送入显示缓冲区以待显示,若其值为0则将日期内容送入显示缓冲区以待显示。

在没有按下显示切换键的情况下,确认是否要按下校正键,若不按下,则同样判断时间/日期显示的标志位值,若为“1”则显示时间,为“0”则显示日期。

若按下校正键,则此时切换键无效,在该情况下,若按一下校正键则校正指针SP的值相应的做加“1”操作,指向下一个要校正的内容,此后判断21H.0的值,若为0则将日期内容送入显示缓存区,若为1则将时间内容送入显示缓存区以待显示。

显示后返回先前状态,若在校正状态下按下“+”键,则校正指针相对应的校正内容单元加1,值满不进位的加1,而后同样判断20H.0的值,情况与上面相同,而在校正状态下按确定键,则清楚校正标志而置位时间/日期显示标志,将时间显示的内容送入显示缓存区以备显示。

返回到正常状态下(显示时间状态)。

4.实验流程图

(1).时间中断服务程序

5.实验程序

ORG0000H;

程序入口地址

LJMPMAIN

ORG000BH

SJMPITOP

ORG0030H

MAIN:

CLRA

MOV30H,A;

程序初始化,计数单元设初值

MOV32H,#59

MOV34H,#23

MOV36H,#01H

MOV38H,#01H

MOV66H,#03H

MOV67H,#03H

MOV40H,#00H

MOV2FH,#0AH

CLR20H.1

CLR20H.2

CLR20H.3

CLR20H.4

MOVTMOD,#01H;

设置计数器的计数方式

MOVTL0,#0B0H;

给计数器装初值

MOVTH0,#3CH

CLRPT0;

中断允许设置

SETBTR0

SETBET0

SETBEA

HERE:

SJMPHERE

ITOP:

MOVTL0,#0B0H

MOVTH0,#3CH

LCALLDISP;

调用显示子程序

DJNZ2FH,LOOP

MOV2FH,#0AH;

秒计时初值设置

CPL20H.1

JB20H.1,LOOP1

MOV40H,#0FFH

AJMPLOOP2

LOOP2:

INC30H;

计时程序

MOVA,#78H

CJNEA,30H,LOOP;

判断秒是否已到

MOV30H,#00H

INC32H

MOVA,#3CH

CJNEA,32H,LOOP;

判断分是否已到

MOV32H,#00H

INC34H

MOVA,#18H

CJNEA,34H,LOOP;

判断时是否已到

MOV34H,#00H

INC30H

MOVA,#32

判断月是否已到

MOV30H,#01H

INC37H

MOVA,#DDH

CJNEA,38H,LOOP;

判断年是否已到

MOV38H,#01H

LOOP:

RETI

DISP:

JB20H.2,LOOP3;

显示子程序

MOV62H,32H;

显示内容送显示缓冲单元,如下类似

MOV64H,34H

SJMPLOOP4

LOOP3:

MOV62H,32H

LOOP4:

MOVA,62H

MOVB,#0AH

DIVAB

MOV63H,A

MOV62H,B

MOVA,64H

DIVAB;

使进制调整,备显示

MOV65H,A

MOV64H,B

MOVR4,#64H

MOVR0,#65H

MOVSCON,#00H

SEND:

MOVA,@R0

JNEMIE00

MOVA,#10H

MIE00:

JNB20H.4,MIE0

JNB20H.3,MIE0

MIE0:

MOVDPTR,#TAB;

查找显示内容程序,用于显示

MOVCA,@A+DPTR

MOVSUBF,A

JNBTI,$

CLRTI

DECR0

JNB20H.4,MIE1;

判断显示内容

JNB20H.3,MIE1

JNB2FH.3,MIE1

MIE1:

MOVDPTR

ADDA,40H

MOVSBUF,A

DECR0

MOVA,@R0

JNEMIE11

MIE11:

JNB20H.4,MIE2

JNB20H.3,MIE2

JNB2FH.3,MIE2

MIE2:

MOVDPTR,#TAB

MOVCA,A+@DPTR

JNB20H.4,MIE3

JNB20H.3,MIE3

JNB2FH.3MIE3

MIE3:

JNBSBUF,A

RET

KEY:

MOVA,P1;

判键按下.子程序

CJNEA,#0FFH,KEYIN

LJMPEXIT

KEYIN:

LCALLDEL10MS;

.调用延时程序

MOVA,P1

CJNEA,#FFH,KEY00

KEY00:

JNBACC.4,KEY1;

.判断哪个键按下

JNBACC.5,KEY2

JNBACC.6,KEY3

JNBACC.7,KEY4

KEY1:

确定哪个键按下。

如下类似

CJNEA,#0FFH,KEY1

CPL20H.2

KEY2:

MOVA,P1

CJNEA,#0FFH,KEY2

SETB20H.4

INC66H

ANL66H,#03H

MOVA,66H

ONE:

CJNEA,#00H,TWO;

调式程序,判断该调试的内容。

CPL20H.3

SJMPEXIT

TWO:

CJNEA,#01H,THR

THR:

CJNEA,#02H,FOR

FOR:

CJNEA,#03H,ONE

KEY3:

MOVA,P1

CJNEA,#0FFH,KEY3

JNB20H。

4,EXIT

MOVA,66H

YUE:

CJNEA,#00H,RISHU;

月调试程序

INC38H

MOVA,#13

CJNEA,38H,EXIT

RISHU:

CJNEA,#01H,SHI;

日期调试子程序

INC36H

MOVA,#32H

CJNEA,36H,EXIT

MOV36H,#01H

SHI:

CJNEA,,#02H,FEN;

时调试子程序

CJNEA,#34H,EXIT

FEN:

CJNEA,#03H,YUE

CJNEA,3H,EXIT

KEY4:

CJNEA,#0FFH,KEY4

MOV66H,#03H

EXIT:

RET

DEL10MS:

MOVR7,#0AH;

延时10MS子程序

DL:

MOVR6,#077H

DL1:

DJNZR6,#0FFH

DJNZR7,DL

TAB:

DB09H7DH07H15H71H91H81H

DB3DH01H11H21H09H8BH

DB45H83H0A3H0FFH0F7H

六.实验心得

通过本次实验发现自己很多的不足,也就在这次实验中学到了很多东西,包括一些基本的编程,比如延时,显示等等,也更加熟悉了程序的基本结构,子程序的调用和中断程序的使用,在本次实验中实验还是有一点误差,主要原因是在设计程序时,在计时过程中,没有考虑到指令执行所用的时间造成计时的误差。

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

当前位置:首页 > 职业教育 > 职高对口

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

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