单片机数字钟Word格式.docx

上传人:b****7 文档编号:22151341 上传时间:2023-02-02 格式:DOCX 页数:26 大小:678.76KB
下载 相关 举报
单片机数字钟Word格式.docx_第1页
第1页 / 共26页
单片机数字钟Word格式.docx_第2页
第2页 / 共26页
单片机数字钟Word格式.docx_第3页
第3页 / 共26页
单片机数字钟Word格式.docx_第4页
第4页 / 共26页
单片机数字钟Word格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

单片机数字钟Word格式.docx

《单片机数字钟Word格式.docx》由会员分享,可在线阅读,更多相关《单片机数字钟Word格式.docx(26页珍藏版)》请在冰豆网上搜索。

单片机数字钟Word格式.docx

3系统软件设计

1)主流程图:

图6主流程图

流程图说明

初始化:

包括定时器赋初值,初始化各内存单元。

开定时器中断,开CPU中断,送段码表头地址给DPTR。

2)显示子程序流程图

图7显示子程序流程图

3)按键扫描子程序

图8按键扫描子程序流程图

4)模式查询子程序

图9模式查询子程序流程图

图10走时模式流程图

日期显示及调整子程序与闹钟显示及调整子程序流程图与调时模式子程序大同小异。

a)日期显示及调整子程序送给R3/R4/R5的数据为日/月/年,按功能键1日期加1,按功能键2月份加1。

至于数值的合法性在程序里有具体的判断。

b)闹钟显示及调整子程序送给R3/R4/R5的数据为闹钟开关值/闹钟分/闹钟时,按功能键1闹钟分加1,按功能键2闹钟时加1。

图11调时模式流程图

5)闹钟查询子程序

图12闹钟查询子程序流程图

6)定时器中断子程序

数值合法性在程序中处理与判断,流程图中不表现。

图13定时器中断子程序流程图

4系统调试与结果分析

Keil软件调试单片机程序的时候,编译通过并不代表程序是正确的。

编译通过只能说明程序没有语法上的错误。

进行软件仿真或者下载到开发板上进行调试,经常会出现各种各样的错误。

许多超出预期效果的现象往往是一些微小错误引起的。

例如没有现场保护跟恢复现场等,所以养成良好的编程习惯也很重要。

又如有些想达成某些功能而添加的语句,实际上确一点效果也没有。

举个编程中的小问题:

当有按键按下时,为了防止按键跳转,设置软件防抖程序,利用中断控制按键防抖。

仿真结果:

1、时间仿真结果(时间设置为:

1时1分)

图14时间仿真结果

2、日期仿真结果(日期设置为12年6月24日)

图15日期仿真结果

3、闹钟仿真结果(时间设置为1时2分:

注意观察蜂鸣器高低电平变化)

图16闹钟仿真结果

5结论

硬件设计部分:

首先要通过计算与参考资料等决定参数。

而后通过仿真软件Protues和Keil调试,确定参数无误后再开始用Protel画原理图,进而生成PCB板。

软件设计部分:

设计软件首先要考虑要做的功能,确定出合理的算法。

合理的算法不仅要可以实现功能,而且在添加功能的时候要方便灵活。

有的人为了实现某种功能用了各种各样的方法来实现,结果程序结构无法实现,当想要添加功能或者修改其他功能的时候,将修改程序大部分结构,也就是说要破坏程序现有的结构。

在设计过程中我们认识到态度要积极,不要认为很简单就不紧不慢。

很多东西并不是自己设想的那么顺利,有时候一个小问题可以花上你半天甚至一天的时间。

在编写程序过程中我们遇到了许多问题,比如设计闹钟子程序的时候就花了很长时间,最后在我们共同的努力下才完成了对其的设计。

同时,我们也认识到了团队合作很重要,只有大家共同努力才能完成对其的设计。

也让我们明白了对于自己不能太过于自信,态度决定一切。

参考文献:

[1]杨欣,王玉凤,刘湘黔,张延强,51单片机应用实例详解,清华大学出版社

[2]洪志刚,杜维玲,井娥林,单片机应用系统设计,机械工业出版社

[3]潘永雄,新编单片机原理及应用,西安电子科技大学出版社

[4]胡启明,程钢,51单片机应用开发从入门到精通,人民邮电出版社

[5]王守中,51单片机开发入门与典型实例,人民邮电出版社

附录一:

protel原理图

附录二:

protelPCB板图

附录三:

protues电路图

附录四:

程序源代码

YEAR_LEQU31H;

年份的低位

MONTHEQU32H;

月份

DAYEQU33H;

日期

DAY_MAXEQU34H;

每月最大天数

HOUREQU35H;

时钟

MINUTEEQU36H;

分钟

SECONDEQU37H;

秒钟

BOTTONEQU38H;

键值

FLAGEQU39H;

模式标记/0走时/1调时/2日期显示及调整/3闹钟调整及闹钟开关/

BEEPHEQU40H;

闹钟时钟

BEEPMEQU41H;

闹钟分钟

ENBEEPEQU42H;

闹钟开关

ORG0000H

AJMPMAIN

ORG0003H

AJMPINTZ

ORG001BH

AJMPSERVE

MAIN:

CLRA

MOVR2,#14H

MOVTMOD,#10H;

设为模式1,定时器1

MOVMONTH,#06;

月份赋6

MOVDAY,#24H;

日期赋24

MOVYEAR_L,#12H;

年份赋12年

MOVHOUR,A;

小时清零

MOVMINUTE,A;

分钟清零

MOVSECOND,A;

秒钟清零

MOVFLAG,A;

初始化模式

CLRP3.7;

开蜂鸣器

MOVENBEEP,#01H;

闹钟默认开

MOVBEEPH,#00H;

闹钟初值00:

00:

00

MOVBEEPM,#00H

MOVTH1,#4CH;

赋定时初值

MOVTL1,#00H

SETBET1;

开中断

SETBIT0

SETBEX0

SETBEA

SETBTR1;

启动T1

MOVDPTR,#TAB;

送段码表头

DIS:

LCALLDISPLAY;

重复调用显示子程序

LCALLNEXT;

查询当前模式

LCALLBEEP;

查询闹钟开关

SJMPDIS

SERVE:

PUSHPSW;

保护现场

PUSHACC

MOVTH1,#4CH

MOVTL1,#00H;

重新赋计数初值

DJNZR2,BRIDGE;

未满20次,返回

AJMPBREAK1

BRIDGE:

LJMPRETURN

BREAK1:

MOVR2,#14H;

重置中断次数

MOVA,#01H;

秒加1

ADDA,SECOND

DAA;

转为BCD码

MOVSECOND,A

CJNEA,#60H,BRIDGE;

未满60秒,返回

MOVSECOND,#00H;

秒清零

分加1

ADDA,MINUTE

MOVMINUTE,A

CJNEA,#60H,RETURN;

未满60分,返回

MOVMINUTE,#00H;

时加1

ADDA,HOUR

MOVHOUR,A

CJNEA,#24H,RETURN;

未满24小时,返回

MOVHOUR,#00H;

小时清零

MOVA,MONTH

CJNEA,#1H,JUDGE2;

不是1月,转跳

AJMPSETDAT_MAX1

JUDGE2:

CJNEA,#3H,JUDGE3;

不是3月,转跳

JUDGE3:

CJNEA,#5H,JUDGE4;

不是5月,转跳

AJMPSETDAT_MAX1

JUDGE4:

CJNEA,#7H,JUDGE5;

不是7月,转跳

JUDGE5:

CJNEA,#8H,JUDGE6;

不是8月,转跳

JUDGE6:

CJNEA,#10H,JUDGE7;

不是10月,转跳

JUDGE7:

CJNEA,#12H,SETDAT_MAX2;

不是12月,转跳

SETDAT_MAX1:

MOVDAY_MAX,#32H;

天上限为31

AJMPCONTINUE;

返回

SETDAT_MAX2:

CJNEA,#2H,SETDAT_MAX3;

不是2月,跳转

MOVDAY_MAX,#29H;

2月,天上限28

SETDAT_MAX3:

MOVDAY_MAX,#31H;

天上限为30

CONTINUE:

天加1

ADDA,DAY

MOVDAY,A

CJNEA,DAY_MAX,RETURN;

未满天数上限,返回

MOVDAY,#01H;

天数置1

月份加1

ADDA,MONTH

MOVMONTH,A

CJNEA,#13,RETURN;

未满12月,返回

MOVMONTH,#01H;

月份置1

年低位加1

ADDA,YEAR_L

MOVYEAR_L,A

CJNEA,#99,RETURN;

未满99年,返回

MOVYEAR_L,#00H;

年低位清零

RETURN:

POPACC

POPPSW;

恢复现场

RETI;

中断返回

;

========显示子程序==========

DISPLAY:

PUSHPSW

MOVA,R3

ANLA,#0FH

MOVCA,@A+DPTR

MOVP2,#0DFH;

位选P2.5口显示秒低位

MOVP0,A;

段选显示数字

LCALLDELAY

SWAPA

MOVCA,@A+DPTR

MOVP2,#0EFH;

位选P2.4口显示秒高位

MOVP0,A

MOVA,R4

MOVP2,#0F7H;

位选P2.3口显示分低位

MOVP2,#0FBH;

位选P2.2口显示分低位

LCALLDELAY

MOVA,R5

MOVP2,#0FDH;

位选P2.1口显示时低位

MOVP2,#0FEH;

位选P2.0口显示时低位

POPPSW

RET

===========按键中断==========

INTZ:

KEY:

MOVP1,#0FFH

MOVA,P1

CPLA

ANLA,#07H;

判断是否有按键按下

JNZKEY1

RETI

KEY1:

MOVA,P1

ANLA,#07H

JNZKEY2

KEY2:

MOVBOTTON,A

JBACC.0,SETMODE

SETMODE:

MOVA,FLAG

INCA

MOVFLAG,A

CJNEA,#04H,I1

MOVFLAG,#00H

AJMPEXIT

I1:

LCALLNEXT

EXIT:

RETI

==========模式查询程序======

NEXT:

MOVA,FLAG

CJNEA,#00H,SETTIME

SETBTR1

MOVR3,SECOND

MOVR4,MINUTE

MOVR5,HOUR

MOVA,BOTTON

JBACC.1,STOP

JBACC.2,STOP

=========闹钟开关/查询===========

BEEP:

MOVA,FLAG

CJNEA,#00H,STOP

MOVA,ENBEEP

CJNEA,#01H,STOP

BEEPLAY:

MOVA,HOUR

CJNEA,BEEPH,STOP

MOVA,MINUTE

CJNEA,BEEPM,STOP

CLRP3.7;

闹钟开启

STOP:

SETBP3.7;

闹钟关闭

MOVBOTTON,#00H

=============调时程序=============

SETTIME:

CLRTR1

CJNEA,#01H,SETDATE

MOVR5,HOUR

JBACC.1,MIN

JBACC.2,HOR

MIN:

MOVA,#01H;

DAA

CJNEA,#60H,BACK

MOVMINUTE,#00H

MOVBOTTON,#00H

HOR:

DAA

CJNEA,#24H,BACK

MOVHOUR,#00H

BACK:

========日期显示及调整子程序=======

SETDATE:

CJNEA,#02H,SETBEEP

MOVR3,DAY

MOVR4,MONTH

MOVR5,YEAR_L

MOVA,BOTTON

JBACC.1,DAYS

JBACC.2,MO

DAYS:

CJNEA,#1H,JUDGEA;

AJMPSETDAT_MAXA

JUDGEA:

CJNEA,#3H,JUDGEB;

JUDGEB:

CJNEA,#5H,JUDGEC;

AJMPSETDAT_MAXA

JUDGEC:

CJNEA,#7H,JUDGED;

JUDGED:

CJNEA,#8H,JUDGEE;

JUDGEE:

CJNEA,#10H,JUDGEF;

JUDGEF:

CJNEA,#12H,SETDAT_MAXB;

SETDAT_MAXA:

MOVDAY_MAX,#32H;

AJMPCONTINUE1;

SETDAT_MAXB:

CJNEA,#2H,SETDAT_MAXC;

不是2月,转跳

MOVDAY_MAX,#29H

SETDAT_MAXC:

CONTINUE1:

MOVA,#01H;

CJNEA,DAY_MAX,BACK1

MOVDAY,#01H

MO:

MOVA,#01H

CJNEA,#13H,BACK1

MOVMONTH,#01H

BACK1:

============闹钟调整程序===========

SETBEEP:

MOVR3,ENBEEP

MOVR4,BEEPM

MOVR5,BEEPH

JBACC.1,SETM

JBACC.2,SETH

SETM:

闹钟分加1

ADDA,BEEPM

MOVBEEPM,A

CJNEA,#60H,BACK2

SETH:

MOVA,#01H;

闹钟时加1

ADDA,BEEPH

MOVBEEPH,A

CJNEA,#24H,BACK2

MOVBEEPH,#00H

BACK2:

============延时子程序=============

DELAY:

MOVR0,#06H

DELAY1:

MOVR1,#0B2H

DJNZR1,$

DJNZR0,DELAY1

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H;

段码

DB92H,82H,0F8H,80H,90H

END

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

当前位置:首页 > 高等教育 > 农学

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

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