武汉理工大学《单片机原理与应用》课程设计说明书
1 DS1302 实时时钟
(1) 时钟芯片 DS1302 的工作原理:
DS1302 在每次进行读、写程序前都必须初始化,先把 SCLK 端置 “0”,接着把 RST
端置“1”,最后才给予 SCLK 脉冲;读/写时序如下图所示。为 DS1302 的控制字,此控制
字的位 7 必须置 1,若为 0 则不能把对 DS1302 进行读写数据。对于位 6,若对程序进行读
/写时 RAM=1,对时间进行读/写时,CK=0。位 1 至位 5 指操作单元的地址。位 0 是读/写
操作位,进行读操作时,该位为 1;该位为 0 则表示进行的是写操作。控制字节总是从最
低位开始输入/输出的。表 6 为 DS1302 的日历、时间寄存器内容:“CH”是时钟暂停标志位,
当该位为 1 时,时钟振荡器停止,DS1302 处于低功耗状态;当该位为 0 时,时钟开始运
行。“WP”是写保护位,在任何的对时钟和 RAM 的写操作之前,WP 必须为 0。当“WP”为
1 时,写保护位防止对任一寄存器的写操作。
(2) DS1302 的控制字节
DS1302 的控制字如表-1 所示。控制字节的高有效位(位 7)必须是逻辑 1,如果它为
0,则不能把数据写入 DS1302 中,位 6 如果 0,则表示存取日历时钟数据,为 1 表示存取
RAM 数据;位 5 至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要进行写操
作,为 1 表示进行读操作,控制字节总是从最低位开始输出
1
RAM
/ CK
表-1 DS1302 的控制字格式
A4
A3
A2
A1
A0
RD
/WR
(3) 数据输入输出(I/O)
在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1302,数据输
入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读
出 DS1302 的数据,读出数据时从低位 0 位到高位 7。如下图 1 所示
1
武汉理工大学《单片机原理与应用》课程设计说明书
图 1 DS1302 读/写时序图
(4) DS1302 的寄存器
DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD
码形式,其日历、时间寄存器及其控制字见表-2。
表-2 DS1302 的日历、时间寄存器
写寄
存器
80H
82H
84H
86H
88H
8AH
8CH
8EH
读寄
存器 Bit7
81H
CH
83H
85H
12/ 24
0
0
0
87H
89H
8BH
8DH
8FH WP
Bit6
Bit4
Bit3
Bit2
Bit1
Bit0
秒
分
时
日
月
年
星期
0
0
0
0
0
10 月
时
0
0
Bit5
10 秒
10 分
10
AM /PM
10 日
0
0
0
0
0
0
0
0
10 年
此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM
相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组
态为一个 8 位的字节,其命令控制字为 C0H~FDH,其中奇数为读操作,偶数为写操作;
另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节,
命令控制字为 FEH(写)、FFH(读)。
2
武汉理工大学《单片机原理与应用》课程设计说明书
2 方案论证与设计
2.1 控制器部分方案设计
硬件控制电路主要用了 AT89C52 芯片处理器、1602LCD 显示器、DS1302 实时时钟、
DB18B20 温度传感器。根据各自芯片的功能互相连接成电子万年历的控制电路。软件控制
程序主要有主控程序、电子万年历的时间控制程序、时间显示及温度显示程序等组成。设
计框图如图 2.1 所示
1602 液晶显示
蜂鸣器
AT89C52
主控模块
独立键盘电路
DS1302 时钟电路
DS18B20 实时环境温度采
集电路
2.2 显示部分的方案论证
图 2.1 框图设计
方案一:采用 8 段数码管虽经济实惠,但操作比液晶显示来说略显繁琐。
方案二:液晶显示方式。液晶显示效果出众,可以运用菜单项来方便操作,比较简单,
所以,最后选择液晶显示方案。显示电路图如图 2.2 所示。
2.3 实时时钟电路设计
图 2.2 液晶显示电路
图 2.3 是 DS1302 与单片机的连接,其中 Vcc1 为后备电源,Vcc2 为主电源。在主电
源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供
电。当 Vcc2 大于 Vcc1+0.2V 时,Vcc2 给 DS1302 供电。当 Vcc2 小于 Vcc1 时,DS1302
由 Vcc1 供电。X1 和 X2 是振荡源,外接 32.768KHz 晶振。
3
武汉理工大学《单片机原理与应用》课程设计说明书
2.4 温度采集模块设计
图 2.3 DS1302 时钟电路
如图 2.4 所示,采用数字式温度传感器 DS18B20,它是数字式温度传感器,具有测量精
度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用 P3.7 与
DS18B20 的 I/O 口连接加一个上拉电阻,Vcc 接电源,Vss 接地。
图 2.4 DS18B20 温度采集模块
2.5 功能按钮设计
当按钮被按下时,该按钮对应的 I/O 口被拉为低电平,松开时按钮对应的 I/O 口由内部的
上拉电阻将该 I/O 拉为高电平,如图 2.5 所示:
图 2.5 键盘电路设计
4
武汉理工大学《单片机原理与应用》课程设计说明书
2.6 总体电路图
5
武汉理工大学《单片机原理与应用》课程设计说明书
3 软件设计流程
3.1 系统总流程图
系统总体流程图如图 3.1 所示,系统流程图设计分析如下:首系统初始化,系统运行,
当有设置键按下时进入时间修改模式,无按键按下时读取时间温度等数据送入显示器显
示。在时间修改模式下设置时间完成后再将时间送入显示器显示。
3.2 温度程序流程图
图 3.1 系统流程图
温度读取程序流程图如图 3.2 所示。流程图分析:开始进入初始化 DS18B20,就是通
过主机拉低单线产生复位脉冲然后释放总线,如果有应答就发起 ROM 命令,当成功执行
操作命令后,就使用温度转换,当温度转换完成后又初始化 DS18B20 是否有应答脉冲,若
有就发起读暂存器和 CRC 命令,同时读出第一第二字节即温度数据。
6
武汉理工大学《单片机原理与应用》课程设计说明书
3.3 DS1302 时钟程序流程图
图 3.2 温度读取程序流程图
时钟流程图如图 3.3 所示,流程图分析:DS1302 开始计时时,首先进行初始化,当有
中断信号时,读取时钟芯片的时间数据送入液晶显示。这时若有设置键按下,进行时间修
改,完成后将时间数据送入 1302 芯片,若没有按键按下,直接送入 EPROM 中,送入液晶
显示。
7
武汉理工大学《单片机原理与应用》课程设计说明书
图 3.3 时钟程序流程图
DS1302 时钟部分子程序
void write_byte(uchar dat)//写一个字节
{
ACC=dat;
RST=1;
for(a=8;a>0;a--)
{
IO=ACC0;
SCLK=0; //产生上升沿写入数据,从低位写入
SCLK=1;
ACC=ACC>>1;
8