日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx

上传人:b****9 文档编号:23325759 上传时间:2023-05-16 格式:DOCX 页数:17 大小:79.47KB
下载 相关 举报
日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx_第1页
第1页 / 共17页
日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx_第2页
第2页 / 共17页
日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx_第3页
第3页 / 共17页
日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx_第4页
第4页 / 共17页
日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx

《日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx》由会员分享,可在线阅读,更多相关《日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx(17页珍藏版)》请在冰豆网上搜索。

日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图.docx

日历时钟单片机课程设计附汇编程序+方案图+模块图+ddb模拟图

;山东科技大学信电通信07-1lfj作品lifaji@

方案一:

 

方案二:

 

采用方案二。

模块图

 

 

 

;-------------------------按键说明-------------------------

;--------------------------1键——进入可调状态-------------------------

;-------------------------2键——结束返回-------------------------

;-------------------------3键——秒加1/日加1-------------------------

;-------------------------4键——分加1/月加1-------------------------

;-------------------------5键——显示24小时制/时加1/年加1-------------------------

;-------------------------6键——显示12小时制-------------------------

;-------------------------7键——可调时间-------------------------

;-------------------------8键——可调日期-------------------------

CLKBITP1.6;时钟信号端

DISPBITP1.7;串出锁存端

DBUFEQU30H;秒的最低位地址

LEDBITP1.1

CHANGE2BIT21H;加12的标志位

AD1EQU40H;秒

AD2EQU41H;分

AD3EQU42H;时

AD4EQU43H;天

AD5EQU44H;月

AD6EQU45H;年

;初始化存储单元结束

ORG0000H

LJMPMAIN

ORG000BH;T0中断入口

LJMPINT

ORG0030H

MAIN:

MOVR0,#AD1

MOVR7,#06H

LOOP0:

MOVA,#00H

MOV@R0,A

INCR0

DJNZR7,LOOP0;R0~R7清零

MOVAD1,#37H

MOVAD2,#22H

MOVAD3,#0CH

MOVAD4,#08H

MOVAD5,#08H

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

34:

56,日期为08年08月08日

MOVIE,#82H;允许T0中断

MOVTMOD,#01H;T0允许工作

MOVTH0,#4CH

MOVTL0,#00H;送入计数初值0.05s

MOVR5,#00H

;初始化结束

SETBTR0;T0使能

LOOP:

LCALLTEST;扫描键盘

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

LCALLDY1MS

LCALLKEYDONE

NEXTD:

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

DISPLAY:

LCALLTEST;扫描键盘

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

SETBPSW.1;显示十二小时

LJMPTIMEZHUAN

ERSHISI1:

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

CLRPSW.1;显示二十四小时

CLRCHANGE2

LJMPTIMEZHUAN

ERSHISI2:

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

CLRPSW.1

SETBCHANGE2;CHANGE2=1表示把十二表示法转换成二十四小时

LJMPTIMEZHUAN

CHANGE:

CLRCHANGE2

TIMEZHUAN:

LCALLTEST

CJNEA,#7FH,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,TIMEZHUAN1

 

LJMPTIMEZHUAN2

TIMEZHUAN1:

;判断时间是否大于12

MOVA,AD3

MOVB,#0CH

SUBBA,B

JCNORMALT

MOVAD3,A

LJMPNORMALT

TIMEZHUAN2:

JNBCHANGE2,NORMALT;判断是否加12

MOVA,AD3

ADDA,#

 

MOVAD3,A

CLRCHANGE2

NORMALT:

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

LOOP2:

MOVR6,#08H

MOVA,@R0

MOVDPTR,#TAB

MOVCA,@A+DPTR;显示秒

CLRC

LOOP3:

RRCA

CLRCLK

MOVDISP,C

SETBCLK

DJNZR6,LOOP3

INCR0

DJNZR7,LOOP2

RET

KEYDONE:

;人工手动调整日历

AGAINB:

LCALLDY250MS;防抖250ms

LCALLTEST

CJNEA,#7FH,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:

INCR5

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

MOVR5,#00H

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,#0Ah,ZAIJIANCHA

AJMPBAOSHI

ZAIJIANCHA:

CJNEA,#0Bh,ZHENGCHANG

BAOSHI:

CLRLED;以上为两个报时开灯

ZHENGCHANG:

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

LJMPSANSHIYI

PAN1:

CJNEA,#03H,PAN3

LJMPSANSHIYI

PAN3:

CJNEA,#04H,PAN4

LJMPSANSHI

PAN4:

CJNEA,#05H,PAN5

LJMPSANSHIYI

PAN5:

CJNEA,#06H,PAN6

LJMPSANSHI

PAN6:

CJNEA,#07H,PAN7

LJMPSANSHIYI

PAN7:

CJNEA,#08H,PAN8

LJMPSANSHIYI

PAN8:

CJNEA,#09H,PAN9

LJMPSANSHI

PAN9:

CJNEA,#10H,PAN10

LJMPSANSHIYI

PAN10:

CJNEA,#11H,SANSHIYI

LJMPSANSHI

SANSHIYI:

MOVA,AD4;月份:

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

CJNEA,#20H,NEXTS

MOVAD4,#01H

AJMPJIXUYUE

SANSHI:

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,#4CH

MOVTL0,#00H

RETI

DY250MS:

;延迟防抖250ms

MOVR4,#0FAH

LOOP8:

LCALLDY1MS

DJNZR4,LOOP8

RET

DY1MS:

;延迟防抖1ms

MOVR5,#0B0H

LOOP7:

MOVR7,#2AH

DJNZR7,$

DJNZR5,LOOP7

RET

;键盘扫描子程序

TEST:

MOVR7,#08H

SETBP1.7

CLRP1.7;低电平锁存

NOP

NOP

SETBP1.7;高电平输出

MOVA,#0FFH

AGAIN3:

CLRP2.3

NOP

NOP

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

SETBP2.3

RLCA;键盘状态存入A

DJNZR7,AGAIN3;扫描八个按键

RET

TAB:

DB88H,0EBH,4CH,49H,2BH,19H,18H,0CBH,08H,09H

;子程序功能索引:

;TEST——扫描键盘

;DDISP——显示

;NEXTS——重新赋初值

;DY1MS——延迟防抖1ms

 

END

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

当前位置:首页 > PPT模板 > 其它模板

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

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