基于单片机数字钟的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题四基于单片机的数字钟的设计
一、设计要求
(1)系统实现每日24小时的时钟,用数码管显示时、分、秒。
(2)实现时间的调整。
(3)实现整点报时功能。
二、提交的文件
1、毕业论文
2、原程序或原文件
3、产品调试运行结果
三、资料
3.1 设计思想
单片机控制系统是整个控制系统的核心,它完成整个系统的信息处理及协调功能。本次我们选用ATMEL公司的AT89C51芯片;其功能强大,兼容性好。AT89C51是与8051兼容的CHMOS微控制器。与CHMOS工艺的8051一样,支持软件选择的空闲和掉电两种节电方式。
在AT89C51的P2.0—P2.3是数码管的段选;P2.4—P2.6是数码管的位选。P1.0和P1.1是发光二极管。是显示制式切换后的工作制式.P1.2是蜂鸣器,作闹铃和准点报时用。P0.0—P0.7是按键的判断输入口,是对时间调整\闹铃时间设置,和其他功能的区分。
3.2系统框图
图3-1
第4节硬件设计4.1元器件清单
表4-1 元器件清单表
码管
F3
5.2程序代码
k0 bit p0.0
k1 bit p0.1
k2 bit p0.2
k3 bit p0.3
k4 bit p0.4
k5 bit p0.5
k6 bit p0.6
k7 bit p0.7
xiaoshi data 2ah
fengzhong data 2bh
miao data 2ch
org 0000h
jmp start
org 000bh
jmp tim0
start: mov sp,#70h ;设置堆栈在70H
mov 28h,#00 ;显示寄存器初值为12H mov 2ah,#12h
mov 2bh,#00
mov 2ch,#00
mov tmod,#00000001b
mov th0,#high(65536-4000)
mov tl0,#low(65536-4000)
mov ie,#10000010b
mov r4,#250
setb tr0
loop: jb p0.0,n2
call delay
mov a,2ch
add a,#01h
da a
mov 2ch,a
cjne a,#60h,n1
mov 2ch,#00
n1: jnb p0.0,$
call delay
n2: jb p0.1,n4
call delay
mov a,2bh
add a,#01h
da a
mov 2bh,a
cjne a,#60h,n3
mov 2bh,#00
n3: jnb p0.1,$
call delay
n4: jb p0.2,loop
call delay
mov a,2ah
add a,#01
da a
mov 2ah,a
cjne a,#24h,n5
mov 2ah,#00
n5: jnb p0.2,$
call delay
jmp loop
tim0: mov th0,#high(65536-4000) mov tl0,#low(65536-4000) push acc
push psw
djnz r4,x2
mov r4,#250
call clock
call disp
x2: call saomiao
pop psw
pop acc
reti
saomiao: mov r0,#28h
inc @r0
cjne @r0,#6,x3
mov @r0,#0
x3: mov a,@r0
add a,#20h
mov r1,a
mov a,@r0
swap a
orl a,@r1
mov p2,a
ret
clock: mov a,2ch
add a,#1
da a
mov 2ch,a
cjne a,#60h,x4
mov 2ch,#00
mov a,2bh
add a,#1
da a
mov 2bh,a
cjne a,#60h,x4
mov 2bh,#00
mov a,2ah
add a,#1
da a
mov 2ah,a
cjne a,#24h,x4
mov 2ah,#00
x4: ret
disp: mov r1,#20h mov a,2ch mov b,#10h div ab
mov @r1,b inc r1
mov @r1,a inc r1
mov a,2bh mov b,#10h div ab
mov @r1,b inc r1
mov @r1,a inc r1
mov a,2ah mov b,#10h div ab
mov @r1,b inc r1
mov @r1,a ret
delay: mov r6,#60
d1: mov r7,#248 djnz r7,$
djnz r6,d1 ret
end