没有合适的资源?快使用搜索试试~ 我知道了~
基于AT89C51单片机的电子钟设计
需积分: 40 24 下载量 173 浏览量
2009-12-21
10:32:00
上传
评论
收藏 138KB DOC 举报
温馨提示
试读
17页
本设计采用C语言程序设计,使单片机控制数码管显示年、月、日、时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。时、分、秒的计数结果经过数据处理可直接送显示器显示。当计时发生误差的时候可以用校时电路进行校正。时计数器计满24小时后自动向日计数器进一,日计数器需判断平年、闰年和大月、小月,当日计数器计满时,向月计数器进位,月计数器计满12月向年计数器进位。设计采用的是年、月、日、时、分、秒显示,单片机对数据进行处理同时在数码管上显示。
资源推荐
资源详情
资源评论
基于 AT89C51 单片机的电子钟设计
1 系统电路设计
1.1 系统总体设计思路
此设计原理框图如下所示,电路包括四个部分:单片机,键盘,锁存及显
示电路,掉电保护电路。
图 1.1 单片机实现数码管显示电子钟总框图
对于各部分:
(1) 单片机发送的信号经过锁存电路最终在数码管上显示出来。
(2) 单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。
(3) 掉电保护电路保证系统掉电时时钟不会停止。
(4) 为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正
数码管上显示的时间。
1.2 工作原理
设计的电路主要由四大模块构成:掉电保护电路,单片机控制电路,显示
电路以及校正电路。
本设计采用 C 语言程序设计,使单片机控制数码管显示年、月、日、时、
分、秒,当秒计数计满 60 时就向分进位,分计数器计满 60 后向时计数器进位,
小时计数器按“23 翻 0”规律计数。时、分、秒的计数结果经过数据处理可直接
送显示器显示。当计时发生误差的时候可以用校时电路进行校正。时计数器计
满 24 小时后自动向日计数器进一,日计数器需判断平年、闰年和大月、小月 ,
当日计数器计满时,向月计数器进位,月计数器计满 12 月向年计数器进位。
设计采用的是年、月、日、时、分、秒显示,单片机对数据进行处理同时在数
码管上显示。
2 单元电路设计
2.1 单片机电路设计
本设计采用 AT89C52 单片机进行设计,它 是一种低功耗,高性能的
CMOS8 位微处理器,内部有 8K 字节的程序存储器和 256 字节的数据存储单
元,32 个 I/O 端口,3 个 16 位定时/计数器,8 个中断源。
时钟电路是单片机系统的心脏,它控制着单片机的工作节奏。本设计采用
51 单片机
锁存器
数码管显示
独
立
键
盘
掉电保护电路
内部时钟方式,12MHz 的石英晶体振荡器。电路图如下
12
Y1
12MHz
C1
30pf
C2
30pf
XTAL1
XTAL2
图 2.1 时钟电路
复位电路由单片机引脚 RST 接入,只要 RST 端保持 10ms 以上的高电平,
就能使单片机有效地复位,本设计采用上电复位和手动复位两种方式。电路图
如下
R2
10K
VCC
R1
1K
S1
C1
10uf
RST
图 2.2 复位电路
2.2 掉电保护电路设计
本设计采用如下掉电保护电路,当电源供电正常时,一方面给单片机供电 ,
另一方面给电池充电,当电源断电时,电池放电,继续给单片机供电,保证其
正常工作。在电源掉电时,为了不使低电平影响到单片机的 VCC 端,在电源与
单片机的 VCC 端加一二极管。
VCC
D1
R1
10K
Battery
VCC
图 2.3 掉电保护电路
2.3 独立键盘设计
此键盘是为设置时间而设计的人机交互装置。虽然矩阵键盘操作方便,但
其硬件电路和软件都较复杂,考虑各方面因素,最终决定采用独立键盘,这样
的话只需三个按键即可。电路如下图所示
set
add
minus
P3.5
P3.6
P3.7
图 2.4 键盘电路
其中,按下 set 键进入时间设置方式,此时默认设置秒,按 add 键进行加 1 设
置,按 minus 键进行减 1 设置,再次按下 set 键进入分设置,以此类推,直至
年设置完成后再次按下 set 键,进入正常模式。
2.4 显示电路设计
由于要显示年、月、日、时、分、秒,因此需 14 个 8 段数码管进行显示
为了节省单片机的 I/O 端口,本设计采用动态扫描的方式进行显示。电路图如
下
OE
1
D1
2
D2
3
D3
4
D4
5
D5
6
D6
7
D7
8
D8
9
GND
10
LE
11
Q8
12
Q7
13
Q6
14
Q5
15
Q4
16
Q3
17
Q2
18
Q1
19
VCC
20
U1
SN74HC573AN
VCC
P00
P01
P02
P03
P04
P05
P06
P07
P20
a
b
c
d
e
f
g
h
OE
1
D1
2
D2
3
D3
4
D4
5
D5
6
D6
7
D7
8
D8
9
GND
10
LE
11
Q8
12
Q7
13
Q6
14
Q5
15
Q4
16
Q3
17
Q2
18
Q1
19
VCC
20
U2
SN74HC573AN
VCC
P00
P01
P02
P03
P04
P05
P06
P07
P21
WE1
WE2
WE3
WE4
WE5
WE6
WE7
WE8
OE
1
D1
2
D2
3
D3
4
D4
5
D5
6
D6
7
D7
8
D8
9
GND
10
LE
11
Q8
12
Q7
13
Q6
14
Q5
15
Q4
16
Q3
17
Q2
18
Q1
19
VCC
20
U2
SN74HC573AN
VCC
P00
P01
P02
P03
P04
P05
P06
P07
P22
WE9
WE10
WE11
WE12
WE13
WE14
a
b
c
d
e
f
g
dp
2
1
4
3
DS1
a
b
c
d
e
f
g
dp
2
1
DS2
a
b
c
d
e
f
g
dp
2
1
DS3
a
b
c
d
e
f
g
dp
2
1
DS4
a
b
c
d
e
f
g
dp
2
1
DS5
a
b
c
d
e
f
g
dp
2
1
DS6
a b c d e f g h a b c d e f g h
a b c d e f g h a b c d e f g h a b c d e f g h
a b c d e f g h
WE1
WE2
WE3
WE4
WE5
WE6
WE7
WE8
WE9
WE10
WE11
WE12
WE13
WE14
图 2.5 显示电路
其中,单片机的 P0 口与三个锁存器并行连接,P2.0,P2.1,P2.2 分别作为它
们的片选信号,锁存器 U1 的输出连接 7 段显示的 8 个引脚,锁存器 U2,U3 的
输出分别作为 14 个 7 段显示的位选信号。
3 软件设计
本设计的软件部分采用 C 语言编写,并将其模块化,在主程序中进行调用。
在主程序中首先要完成初始化工作,然后进入循环阶段,它包括对年月日时分
秒的动态扫描子函数以及时钟设置子函数的循环调用,虽然主程序不断调用设
置子函数,但只有当按下 set 键时才真正进入设置函数的内部,由于设置函数
并不影响显示函数,因此设置时间日期的同时,可以在数码管上实时观测。这
样一来,主程序实际上主要完成数码管的动态扫描过程,与此同时,内部定时
器在不断地工作着,每到 1s 就进入中断子程序,由 CPU。首先对电子钟的主
程序进行分析,然后对各个子函数进行说明,主程序的流程图如下
图 3.1 主程序流程图
以下对各个模块的子函数进行说明。
3.1 初始化子函数
此函数中要对各个变量和定时器进行初始化,具体流程图如下
开始
初始化
年月日时分秒动
态扫描显示
设置
N
N
Y
设置时间子函数
剩余16页未读,继续阅读
资源评论
yzp8596519
- 粉丝: 2
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功