51单片机课程设计之日历闹钟.docx

上传人:b****1 文档编号:2828676 上传时间:2023-05-04 格式:DOCX 页数:16 大小:70.57KB
下载 相关 举报
51单片机课程设计之日历闹钟.docx_第1页
第1页 / 共16页
51单片机课程设计之日历闹钟.docx_第2页
第2页 / 共16页
51单片机课程设计之日历闹钟.docx_第3页
第3页 / 共16页
51单片机课程设计之日历闹钟.docx_第4页
第4页 / 共16页
51单片机课程设计之日历闹钟.docx_第5页
第5页 / 共16页
51单片机课程设计之日历闹钟.docx_第6页
第6页 / 共16页
51单片机课程设计之日历闹钟.docx_第7页
第7页 / 共16页
51单片机课程设计之日历闹钟.docx_第8页
第8页 / 共16页
51单片机课程设计之日历闹钟.docx_第9页
第9页 / 共16页
51单片机课程设计之日历闹钟.docx_第10页
第10页 / 共16页
51单片机课程设计之日历闹钟.docx_第11页
第11页 / 共16页
51单片机课程设计之日历闹钟.docx_第12页
第12页 / 共16页
51单片机课程设计之日历闹钟.docx_第13页
第13页 / 共16页
51单片机课程设计之日历闹钟.docx_第14页
第14页 / 共16页
51单片机课程设计之日历闹钟.docx_第15页
第15页 / 共16页
51单片机课程设计之日历闹钟.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

51单片机课程设计之日历闹钟.docx

《51单片机课程设计之日历闹钟.docx》由会员分享,可在线阅读,更多相关《51单片机课程设计之日历闹钟.docx(16页珍藏版)》请在冰点文库上搜索。

51单片机课程设计之日历闹钟.docx

51单片机课程设计之日历闹钟

(三)题目三:

日历时钟设计

1.利用MCS-51内部定时器定时,编程实现年、月、日、时、分、秒的显示,显示格式为:

年月日:

08-06-24

时分秒:

09-12-35

也可自行设定显示格式,两部分可按键切换显示。

2.能按键调整日期、时间的数值。

3.能设置报警时间,报警时间可设置两个以上。

4.其它扩展功能:

如12小时制/24小时制等。

CLKBITP1.6;时钟信号端

DISPBITP1.7;串出锁存端

DBUFEQU30H;秒的最低位地址

LEDBITP1.1

TW2BIT21H;加12的标志位

AD1EQU50H;秒

AD2EQU51H;分

AD3EQU52H;时

AD4EQU53H;天

AD5EQU54H;月

AD6EQU55H;年

;初始化存储单元结束

ORG0000H

LJMPMAIN

ORG001BH;T1断入口

LJMPINT_INT1

ORG0030H

MAIN:

MOVR0,#AD1

MOVR7,#06H

LOOP0:

MOVA,#00H

MOV@R0,A

INCR0

DJNZR7,LOOP0;R0~R7清零

MOVAD1,#23H

MOVAD2,#0CH

MOVAD3,#09H

MOVAD4,#18H

MOVAD5,#06H

MOVAD6,#08H;初始化时间为9:

12:

35,日期为08年6月24日

SETBEA

SETBET1;允许T1中断

MOVTMOD,#10H;T1许工作,选择方式1

MOVTH0,#3CH

MOVTL0,#0B0H;送入计数初值0.05s

MOVR5,#14H;定时1s,初始化结束

SETBTR1;开启T1

LOOP:

LCALLKEY;扫描键盘

MOVP0,A

CJNEA,#0FEH,NEXT1;0FEH为1键

LCALLDY1MS

LCALLKEYDONE

NEXT1:

SJMPLOOP;扫描键盘看是否需要调整日历

DISPLAY:

LCALLKEY;扫描键盘

CJNEA,#0DFH,L1;0DFH为6键

SETBPSW.1;显示十二小时

LJMPM

L1:

CJNEA,#0EFH,L2;0EFH为5键

CLRPSW.1;显示二十四小时

CLRTW2

LJMPM

L2:

CJNEA,#0CFH,L;0CFH为5+6键

SETBPSW.1

SETBTW2;TW2=1表示把十二表示法转换成二十四小时

LJMPM

L:

CLRTW2

M:

LCALLKEY

CJNEA,#9FH,NEXTL;7FH为8键

SETBPSW.5

LJMPZHUAN1

NEXTL:

CJNEA,#0BFH,ZHUAN1;0BFH为7键

CLRPSW.5

ZHUAN1:

JBPSW.5,DAY;PSW.5=0调整时间,为1则调整日期

MOVA,AD1;调整时间键码分离

MOVB,#0AH

DIVAB

MOVR0,#DBUF

MOV@R0,B

INCR0

MOV@R0,A

MOVA,AD2

MOVB,#0AH

DIVAB

INCR0

MOV@R0,B

INCR0

MOV@R0,A

JBPSW.1,M1

LJMPM2

M1:

;判断时间是否大于12

MOVA,AD3

MOVB,#0CH

SUBBA,B

JCN1

MOVAD3,A

LJMPN1

M2:

JNBTW2,N1;判断是否加12

MOVA,AD3

ADDA,#00H

MOVAD3,A

CLRTW2

N1:

MOVA,AD3

MOVB,#0AH

DIVAB

INCR0

MOV@R0,B

INCR0

MOV@R0,A

SJMPDDISP

DAY:

;调整日期键码分离

MOVA,AD4

MOVB,#0AH

DIVAB

MOVR0,#DBUF

MOV@R0,B

INCR0

MOV@R0,A

MOVA,AD5

MOVB,#0AH

DIVAB

INCR0

MOV@R0,B

INCR0

MOV@R0,A

MOVA,AD6

MOVB,#0AH

DIVAB

INCR0

MOV@R0,B

INCR0

MOV@R0,A

DDISP:

;显示,串入并出的方式,上升沿写入

MOVR0,#DBUF

MOVR7,#06H

MOVDPTR,#TABLE

LOOP2:

MOVA,@R0

MOVCA,@A+DPTR

MOVR6,#08H;显示秒

;CLRC

LOOP3:

CLRCLK

RRCA

MOVDISP,C

SETBCLK

DJNZR6,LOOP3

INCR0

DJNZR7,LOOP2

RET

KEYDONE:

;人工手动调整日历

AGAINB:

LCALLDY250MS;防抖250ms

LCALLKEY

CJNEA,#9FH,NEXTL1;7FH为8键

SETBPSW.5

LJMPZHUAN12

NEXTL1:

CJNEA,#0BFH,ZHUAN12

CLRPSW.5;以上为扫描键盘并设置PSW.5

ZHUAN12:

JBPSW.5,NEXT6B;判断调整日期还是时间

CJNEA,#0FDH,NEXTA;0FDH为2键,如果按键值为FDH则结束

LJMPBACK

NEXTA:

CJNEA,#0FBH,NEXTB;0FBH为3键

INCAD1;秒加1

MOVA,AD1

CJNEA,#3CH,AGAINA

MOVAD1,#00H

SJMPAGAINA

NEXTB:

CJNEA,#0F7H,NEXTC;0F7H为4键

INCAD2;分加1

MOVA,AD2

CJNEA,#3CH,AGAINA

MOVAD2,#00H

SJMPAGAINA

NEXTC:

CJNEA,#0EFH,AGAINA;0EFH为5键

INCAD3;时加1

MOVA,AD3

CJNEA,#18H,AGAINA

MOVAD3,#00H

NEXTT:

SJMPAGAINA

NEXT6B:

CJNEA,#0FDH,NEXTAB;JIESHUJIAN;0FDH为2键

LJMPBACK

NEXTAB:

CJNEA,#0FBH,NEXTBB;0FBH为3键

INCAD4;日加1

MOVA,AD4

CJNEA,#20H,AGAINA

MOVAD4,#01H

SJMPAGAINA

NEXTBB:

CJNEA,#0F7H,NEXTCB;0F7H为4键

INCAD5;月加1

MOVA,AD5

CJNEA,#0DH,AGAINA

MOVAD5,#01H

SJMPAGAINA

NEXTCB:

CJNEA,#0EFH,AGAINA;0EFH为5键

INCAD6;年加1

MOVA,AD6

CJNEA,#64H,AGAINA

MOVAD6,#00H

AGAINA:

LCALLDISPLAY

LJMPAGAINB

BACK:

RET

INT_INT1:

DJNZR5,NEXTS1;循环20次,每次循环为0.05秒,共0.05*20=1秒

MOVR5,#14H

LCALLDISPLAY;满一秒后的显示

LJMPMEND

NEXTS1:

LJMPNEXTS;满一秒后的显示

MEND:

MOVA,AD1

CJNEA,#0AH,LAREMEND

SETBLED;满十秒关蜂鸣器,否则继续

LAREMEND:

INCAD1

MOVA,AD1

CJNEA,#3CH,NEXTS2

LJMPMEND1

NEXTS2:

LJMPNEXTS;以上为看是否修改秒,满60,分加一否则跳转继续

MEND1:

MOVAD1,#00H

INCAD2

MOVA,AD2

CJNEA,#3CH,NEXTS3

LJMPMEND2

NEXTS3:

LJMPNEXTS;以上为看是否修改分,满60,时加一否则跳转继续

MEND2:

MOVAD2,#00H

INCAD3

MOVA,AD3

CJNEA,#08h,NEXT

AJMPDIANLIANG

NEXT:

CJNEA,#0Bh,NORMAL

DIANLIANG:

CLRLED;以上为两个蜂鸣器报警

NORMAL:

MOVA,AD3

CJNEA,#18H,NEXTS4;不满二十四小时跳出

LJMPMEND3;满二十四后跳到清零小时继续加天

NEXTS4:

LJMPNEXTS

MEND3:

MOVAD3,#00H

INCAD4

MOVA,AD5

CJNEA,#02H,JIXUTIAN;判断是否为二月份

MOVA,AD6

MOVB,#4H

DIVAB

MOVA,B

JZRUNNIAN;判断是否为闰年

PINGNIAN:

MOVA,AD4;平年

CJNEA,#1DH,NEXTS

MOVAD4,#01H

AJMPJIXUYUE

RUNNIAN:

MOVA,AD4;闰年

CJNEA,#1EH,NEXTS

MOVAD4,#01H

AJMPJIXUYUE

JIXUTIAN:

;不为二月,再查看是那个月

MOVA,AD5

CJNEA,#01H,PAN1

LJMPDAYUE

PAN1:

CJNEA,#03H,PAN3

LJMPDAYUE

PAN3:

CJNEA,#04H,PAN4

LJMPXIAOYUE

PAN4:

CJNEA,#05H,PAN5

LJMPDAYUE

PAN5:

CJNEA,#06H,PAN6

LJMPXIAOYUE

PAN6:

CJNEA,#07H,PAN7

LJMPDAYUE

PAN7:

CJNEA,#08H,PAN8

LJMPDAYUE

PAN8:

CJNEA,#09H,PAN9

LJMPXIAOYUE

PAN9:

CJNEA,#10H,PAN10

LJMPDAYUE

PAN10:

CJNEA,#11H,DAYUE

LJMPXIAOYUE

DAYUE:

MOVA,AD4;月份:

1,3,5,7,8,10,12

CJNEA,#20H,NEXTS

MOVAD4,#01H

AJMPJIXUYUE

XIAOYUE:

MOVA,AD4;月份:

2,4,6,8,11

CJNEA,#1FH,NEXTS

MOVAD4,#01H

JIXUYUE:

INCAD5;满月后加年

CJNEA,#0DH,NEXTS

MOVAD5,#01H

INCAD6

MOVA,AD6

CJNEA,#64H,NEXTS;年满100后清零

MOVAD6,#00H

NEXTS:

;再赋初值

MOVTH0,#3CH

MOVTL0,#0B0H

RETI

DY250MS:

;延迟防抖250ms

MOVR4,#0FAH

LOOP8:

LCALLDY1MS

DJNZR4,LOOP8

RET

DY1MS:

;延迟防抖1ms

MOVR5,#0FAH

LOOP7:

MOVR7,#70H

DJNZR5,LOOP7

RET

;键盘扫描子程序

KEY:

;SETBP1.7

CLRP1.7;低电平锁存

NOP

NOP

SETBP1.7

MOVR7,#07H;高电平输出

MOVA,#0FFH

AGAIN3:

CLRP2.3

NOP

NOP

SETBP2.3

MOVC,P3.5;把p3.5的状态存入C

RLCA;键盘状态存入A

DJNZR7,AGAIN3;扫描七个按键

RET

TABLE:

DB42H,0F6H,13H,92H,0A6H,8AH,0AH,0F2H,02H,82H;0123456789

;子程序功能索引:

;KEY--扫描键盘

;DDISP--显示

;NEXTS--重新赋初值

;DY1MS--延迟防抖1ms

END

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

当前位置:首页 > PPT模板 > 商务科技

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

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