单片机课程设计数字时钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北电力大学
科技学院
单片机课程设计报告
(20 —20 年度第学期)
题目:电子时钟(LCD)
院系:动力工程系
题目:数字时钟
专业班级:
学号:
姓名:
指导老师:
一、功能
能实现定时、时间的调整(只能加不能减)、闹钟的设定(只能加不能减),当闹钟按键按下就进入闹钟设定,再按下那个键就进入时间显示,并且闹钟响铃时间是10秒钟。
其整个设计的电路图如下:
其中显示的是8个8段LED显示,单片机是80C51,外部晶振是12MHZ,其中和晶振连接的是两个47pF的电容。单片机的p1.0~p1.3作为地址总线起到控制作用,p1.7在电路中用一个灯泡代替,在实际中接喇叭,起到闹钟的作用。P0.0~p0.7作为数据总线,把单片机的信号输入到显示器上,p2.0~p2.7作为单片机的额数据总线,其作用在显示总起到位选的作用,决定8段LED的亮灭。最下面的那个是RESPACK-8排阻,在电路中防止输入到显示的电压很小,是为输出提供电源的装置,配合显示器的显示。
在整个程序中时间的秒、分、时的计数分别存放在20H、21H、22H,闹钟的秒、分、时的计数分别存放在40H、41H、42H。
实现定时闹钟的程序有以下几个部分组成:
二、流程图
1、定时程序(时间的设定)
其程序流程图如下:
3、显示的流程图(因为显示的刚好是8个,所以不要去考虑左移的个数,直接
4、闹钟设定
三、总程序
ORG 0000H
MOV P0,#00H
MOV P2,#00H
MOV SP,#60H
CLR 20H
CLR 21H
CLR 22H
CLR 40H
CLR 41H
CLR 42H
MOV DPTR,#TAB
VV: MOV R6,#1
MM: MOV R5,#4
NN: MOV R4,#100
BB: JNB P1.3,LPP
SJMP LL
LPP: JNB P1.3,LPP0
SETB 30H
AAC: MOV R3,#1
AAB: MOV R2,#4
AAA: MOV R1,#100
CC0: JNB P1.0,CC1 ;判断p1.0是否为按下
SJMP DD0
CC1: JNB P1.0,LPP1 ;判断p1.0是否松开,松开秒钟加1 MOV A,40H
ADD A,#01H
DA A
CJNE A,#60H,CC2
CLR A
CC2: MOV 40H,A
DD0: JNB P1.1,DD1 ;判断p1.1是否按下
SJMP EE0
DD1: JNB P1.1,LPP2 ;判断p1.1是否松开,松开分钟加1 MOV A,41H
ADD A,#01H
DA A
CJNE A,#60H,DD2
CLR A
DD2: MOV 41H,A
EE0: JNB P1.2,EE1 ;判断p1.2是否按下
SJMP HH1
EE1: JNB P1.2,LPP3 ;判断p1.2是否松开,松开时钟加1 MOV A,42H
ADD A,#01H
DA A
CJNE A,#24H,EE2 CLR A
EE2: MOV 42H,A
HH1:LCALL LP
JNB P1.3,LP1
DJNZ R1,CC0
DJNZ R2,AAA
DJNZ R3,AAB
LCALL B2
SJMP AAC
LP1:JNB P1.3,LPP4 LL: CLR 30H
LCALL C0
DJNZ R4,BB
DJNZ R5,NN
DJNZ R6,MM
LCALL B2
SJMP VV
LPP0:LCALL LP
NOP
NOP
NOP
SJMP LPP
LPP1:LCALL LP
NOP
NOP
NOP
SJMP CC1
LPP2:LCALL LP
NOP
NOP
NOP
SJMP DD1
LPP3:LCALL LP
NOP
NOP
NOP
SJMP EE1
LPP4:LCALL LP
NOP
NOP
NOP
SJMP LP1
C0: JNB P1.0,C1 ;判断p1.0是否为按下
SJMP D0
C1: JNB P1.0,LLP ;判断p1.0是否松开,松开秒钟加1
MOV A,20H
ADD A,#01H
DA A
CJNE A,#60H,C2
CLR A
C2: MOV 20H,A
D0: JNB P1.1,D1 ;判断p1.1是否按下
SJMP E0
D1: JNB P1.1,LLP1 ;判断p1.1是否松开,松开分钟加1
MOV A,21H
ADD A,#01H
DA A
CJNE A,#60H,D2
CLR A
D2: MOV 21H,A
E0: JNB P1.2,E1 ;判断p1.2是否按下
AJMP H0
E1: JNB P1.2,LLP2 ;判断p1.2是否松开,松开时钟加1
MOV A,22H
ADD A,#01H
DA A
CJNE A,#24H,E2
CLR A
E2: MOV 22H,A
H0: LCALL LP
RET
LLP: LCALL LP
NOP ;3个空指令是消除松开时执行指令的时间差 NOP
NOP
SJMP C1
LLP1:LCALL LP
NOP
NOP
NOP
SJMP D1
LLP2:LCALL LP
NOP
NOP
NOP
SJMP E1