单片机简易数字电子钟设计.docx
《单片机简易数字电子钟设计.docx》由会员分享,可在线阅读,更多相关《单片机简易数字电子钟设计.docx(19页珍藏版)》请在冰豆网上搜索。
单片机简易数字电子钟设计
单片机课程设计报告
数字电子钟设计
姓名:
古名壬
专业:
10级电气自动化
班级:
电气二班
学号:
1040632209
指导老师:
朱星华老师
完成时间:
2012-6-17
一、前言
随着电子技术的发展,单片机技术的日趋成熟,在我们的生活中,随处可见单片机的身影,在控制领域,单片机也因其精确性及数字化逐步取代传统的模电控制手段。
作为电气自动化的学生,学习单片机技术不仅能加深对自动控制的理解,用新的技术实现自动控制,而平时做一些小制作更能为我们的大学生活增添一份光彩!
这次课程设计是用单片机实验箱的硬件基础上设计一个电子钟,限于硬件的限制,只要在实验箱上调试成功即可。
本次设计以8051内核单片机作为主控芯片,用四位数码管实现时间的显示,并且具有调校、闹铃的功能。
二、设计方案
硬件电路如下图所示:
1、单片机基本组成电路:
电源,晶振电路,复位电路等
2、显示:
串口工作于方式0,即移位寄存器方式,以级联方式驱动四位数码管静态显示。
3、3位独立按键:
为了实现调校功能,至少要有两个按键以上才能更方便地调校时间,因此在本次设计中采用了三位独立按键,一个用来作调校切换,另外两个作加减,但在实际制作了,为了简化电路及节约硬件资源,可以使用两位独立按键。
4、程序用汇编语言编写,并分多个模块分别调用,提高了程序的编写效率及可移植性。
三、程序流程图
1、主流程:
2、按键扫描:
(其它两个键一样)
N
Y
N
Y
3、按键处理:
N
Y
N
Y
N
5、拆分时间的十位及个位:
N
Y
5、显示:
N
Y
6、闹铃
N
Y
四、RAM的分配
秒:
分:
时:
分个位:
分十位:
时个位:
时十位:
延时用:
延时用:
闹铃时:
闹铃分:
蜂鸣标志:
SECEQU30H
MINEQU31H
HOUEQU32H
AMILEQU40H
AMIHEQU41H
AHOLEQU42H
AHOHEQU43H
NEQU44H
MEQU45H
BELHEQU48H
BELMEQU49H
FMBZEQU50H
五、程序清单
SECEQU30H
MINEQU31H
HOUEQU32H
AMILEQU40H
AMIHEQU41H
AHOLEQU42H
AHOHEQU43H
NEQU44H
MEQU45H
WEIEQU46H
BELHEQU48H
BELMEQU49H
FMBZEQU50H
NZKGEQU52H;闹钟开关
K1BITP3.2
K2BITP3.3
K3BITP3.4
BELLBITP2.7
ORG00H
LJMPMAIN
ORG0BH
LJMPTIMER1
ORG28H
MAIN:
MOVR1,#30H
START:
MOV@R1,#0
INCR1
CJNER1,#55H,START
SETBBELL
MOVSCON,#00H;初始化
MOVTMOD,#01H
MOVTH0,#HIGH(65536-50000)
MOVTL0,#LOW(65536-50000)
SETBEA
SETBET0
SETBTR0
LOOP:
LCALLSMKEY
LCALLCLKEY
CJNER7,#20,LOOP0
MOVR7,#0
INCSEC
MOVA,SEC
CJNEA,#60,LOOP0
MOVSEC,#0
INCMIN
MOVA,MIN
CJNEA,#60,LOOP0
MOVMIN,#0
INCHOU
MOVA,HOU
CJNEA,#24,LOOP0
MOVHOU,#0
LOOP0:
;LCALLDELAY10
MOVA,BELH
CJNEA,#0,NEXT09
MOVA,BELM
CJNEA,#0,NEXT09
MOVNZKG,#0
JMPNEXT08
NEXT09:
MOVNZKG,#1
NEXT08:
MOVA,BELH
CJNEA,HOU,NEXT10
MOVA,BELM
CJNEA,MIN,NEXT10
MOVFMBZ,#1
LCALLFENGM
JMPNET11
NEXT10:
SETBBELL
NET11:
LCALLWORK_T
MOVA,AHOH
CJNEA,#0,XIANS
MOVAHOH,#10
XIANS:
LCALLDISPLAY2
LCALLDISPLAY
AJMPLOOP
FENGM:
PUSHACC
MOVA,NZKG
CJNEA,#1,FMRET
MOVA,FMBZ
CJNEA,#1,FMRET
CLRC
MOVA,#4
SUBBA,R3
JNCFMRET
CPLBELL
FMRET:
POPACC
RET
TIMER1:
PUSHACC
MOVTH0,#HIGH(65536-50000)
MOVTL0,#LOW(65536-50000)
INCR7;定时
INCR3;闪烁标志
CJNER3,#8,NET
MOVR3,#0
NET:
POPACC
RETI
WORK_T:
PUSHACC
MOVA,MIN
MOVB,#10
DIVAB
MOVAMIH,A
MOVAMIL,B
MOVA,HOU
MOVB,#10
DIVAB
MOVAHOH,A
MOVAHOL,B
POPACC
RET
DISPLAY2:
PUSHACC
LCALLDELAY10;静态显示
MOVR0,#40H
MOVR2,#4
LOOP1:
MOVDPTR,#DUTAB
MOVA,@R0
MOVCA,@A+DPTR
MOVR4,A
CJNER2,#2,DIS3
MOVA,#10
CLRC
SUBBA,R7
MOVA,R4
JNCDIS3
CLRACC.7
DIS3:
MOVSBUF,A
JNBTI,$
CLRTI
;DECR0
INCR0
DJNZR2,LOOP1
POPACC
RET
DELAY:
PUSHPSW
MOVM,#20
DEL:
MOVN,#100
DJNZN,$
DJNZM,DEL
POPPSW
RET
DELAY10:
PUSHPSW
LCALLDELAY
LCALLDELAY
POPPSW
RET
SMKEY:
MOVR6,#0
PUSHACC
PUSHPSW
SETBC
MOVK1,C
MOVC,K1
JCKK2;K1没有按下,看K2
LCALLDELAY10
SETBC
MOVC,K1
JCKK2
JNBK1,$
MOVR6,#1
AJMPRETURN
KK2:
SETBC
MOVK2,C
MOVC,K2
JCKK3
LCALLDELAY10
SETBC
MOVC,K2
JCKK3
JNBK2,$
MOVR6,#2
AJMPRETURN
KK3:
SETBC
MOVK3,C
MOVC,K3
JCRETURN
LCALLDELAY10
SETBC
MOVC,K3
JCRETURN
JNBK3,$
MOVR6,#3
RETURN:
POPPSW
POPACC
RET
OVER0:
AJMPOVER
CLKEY:
MOVA,R6
CJNEA,#1,OVER0
JS:
LCALLSMKEY
CJNER6,#1,NEX1
INCA
NEX1:
CJNER6,#2,ELS
CJNEA,#1,INCM
INCHOU
MOVR5,HOU
CJNER5,#24,NEXT1
MOVHOU,#0
INCM:
CJNEA,#2,INCBH
INCMIN
MOVR5,MIN
CJNER5,#59,NEXT1
MOVMIN,#0
INCBH:
CJNEA,#3,INCBM
INCBELH
MOVR5,BELH
CJNER5,#24,NEXT1
MOVBELH,#0
INCBM:
CJNEA,#4,ELS
INCBELM
MOVR5,BELM
CJNER5,#59,NEXT1
MOVBELM,#0
NEXT1:
MOVR6,#0
ELS:
CJNER6,#3,XS
CJNEA,#1,DECM
DECHOU
MOVR5,HOU
CJNER5,#255,DECM
MOVHOU,#23
DECM:
CJNEA,#2,DECBH
DECMIN
MOVR5,MIN
CJNER5,#255,XS
MOVMIN,#59
DECBH:
CJNEA,#3,DECBM
DECBELH
MOVR5,BELH
CJNER5,#0,XS
MOVMIN,#23
DECBM:
CJNEA,#4,XS
DECBELM
MOVR5,BELM
CJNER5,#0,XS
MOVBELM,#59
XS:
MOVR4,A
MOVA,#4
SUBBA,R3
MOVA,R4
JNCQM
PUSHMIN
PUSHHOU
CJNEA,#3,NET0
MOVMIN,BELM
MOVHOU,BELH
JMPSANBEL
NET0:
CJNEA,#4,SANBEL
MOVMIN,BELM
MOVHOU,BELH
SANBEL:
LCALLWORK_T
POPHOU
POPMIN
LCALLDISPLAY
LCALLDISPLAY2
LCALLDELAY10
JMPSMK
QM:
CJNEA,#1,SANH
MOVAHOL,#10
MOVAHOH,#10
LCALLDISPLAY
LCALLDISPLAY2
LCALLDELAY10
JMPSMK
SANH:
CJNEA,#2,SANBH
MOVAMIL,#10
MOVAMIH,#10
LCALLDISPLAY
LCALLDISPLAY2
LCALLDELAY10
JMPSMK
SANBH:
CJNEA,#3,SANBL
PUSHMIN
PUSHHOU
MOVHOU,BELH
MOVMIN,BELM
LCALLWORK_T
MOVAHOL,#10
MOVAHOH,#10
LCALLDISPLAY
LCALLDISPLAY2
LCALLDELAY10
POPHOU
POPMIN
JMPSMK
SANBL:
CJNEA,#4,SMK
PUSHMIN
PUSHHOU
MOVHOU,BELH
MOVMIN,BELM
LCALLWORK_T
MOVAMIL,#10
MOVAMIH,#10
LCALLDISPLAY
LCALLDISPLAY2
LCALLDELAY10
POPHOU
POPMIN
SMK:
CJNEA,#5,JS00
MOVR7,#0
MOVSEC,#0
CLRA
OVER:
SETBBELL
RET
JS00:
AJMPJS
DUTAB:
DB0C0H,0F9H,0A4H,0B0H,99H,092H,082H,0F8H,80H,90H,0FFH
END
六、设计总结:
通过这次课程设计,更加深刻地了解了8051单片机的工作原理,加深了对汇编语言的掌握。
但在本次设计中,还有很多没有完善的地方,比如,校准时间的程序没有用指针操作,所以导至程序冗余。
七、参考资料:
李全力《单片机原理及应用》清华大学出版社。