日历时钟单片机课程设计.docx

上传人:b****4 文档编号:3069975 上传时间:2022-11-17 格式:DOCX 页数:15 大小:79.50KB
下载 相关 举报
日历时钟单片机课程设计.docx_第1页
第1页 / 共15页
日历时钟单片机课程设计.docx_第2页
第2页 / 共15页
日历时钟单片机课程设计.docx_第3页
第3页 / 共15页
日历时钟单片机课程设计.docx_第4页
第4页 / 共15页
日历时钟单片机课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

日历时钟单片机课程设计.docx

《日历时钟单片机课程设计.docx》由会员分享,可在线阅读,更多相关《日历时钟单片机课程设计.docx(15页珍藏版)》请在冰豆网上搜索。

日历时钟单片机课程设计.docx

日历时钟单片机课程设计

本页仅作为文档封面,使用时可以删除Thisdocumentisforreferenceonly-rar21year.March

 

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

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

方案一:

 

方案二:

 

采用方案二。

模块图

 

 

 

 

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

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

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

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

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

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

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

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

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

CLKBIT;时钟信号端

DISPBIT;串出锁存端

DBUFEQU30H;秒的最低位地址

LEDBIT

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;送入计数初值

MOVR5,#00H

;初始化结束

SETBTR0;T0使能

LOOP:

LCALLTEST;扫描键盘

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

LCALLDY1MS

LCALLKEYDONE

NEXTD:

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

DISPLAY:

LCALLTEST;扫描键盘

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

SETB;显示十二小时

LJMPTIMEZHUAN

ERSHISI1:

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

CLR;显示二十四小时

CLRCHANGE2

LJMPTIMEZHUAN

ERSHISI2:

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

CLR

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

LJMPTIMEZHUAN

CHANGE:

CLRCHANGE2

TIMEZHUAN:

LCALLTEST

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

SETB

LJMPZHUAN1

NEXTL:

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

CLR

ZHUAN1:

JB,DAY;=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

JB,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键

SETB

LJMPZHUAN12

NEXTL1:

CJNEA,#0BFH,ZHUAN12

CLR;以上为扫描键盘并设置

ZHUAN12:

JB,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次,每次循环为秒,共*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,

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

当前位置:首页 > 医药卫生 > 基础医学

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

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