ds1302学习资料.docx

上传人:b****6 文档编号:6356107 上传时间:2023-01-05 格式:DOCX 页数:15 大小:399.56KB
下载 相关 举报
ds1302学习资料.docx_第1页
第1页 / 共15页
ds1302学习资料.docx_第2页
第2页 / 共15页
ds1302学习资料.docx_第3页
第3页 / 共15页
ds1302学习资料.docx_第4页
第4页 / 共15页
ds1302学习资料.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

ds1302学习资料.docx

《ds1302学习资料.docx》由会员分享,可在线阅读,更多相关《ds1302学习资料.docx(15页珍藏版)》请在冰豆网上搜索。

ds1302学习资料.docx

ds1302学习资料

1DS1302简介:

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5~5.5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。

DS1302的外部引脚分配如图1所示及内部结构如图2所示。

DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。

图1DS1302的外部引脚分配

图2DS1302的内部结构

各引脚的功能为:

Vcc1:

主电源;Vcc2:

备份电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2

SCLK:

串行时钟,输入,控制数据的输入与输出;

I/O:

三线接口时的双向数据线;

CE:

输入信号,在读、写数据期间,必须为高。

该引脚有两个功能:

第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。

DS1302有下列几组寄存器:

①DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如图3所示。

图3DS1302有关日历、时间的寄存器

小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。

当为高时,选择12小时模式。

在12小时模式时,位5是,当为1时,表示PM。

在24小时模式时,位5是第二个10小时位。

秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。

当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。

控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。

在任何的对时钟和RAM的写操作之前,WP位必须为0。

当WP位为1时,写保护位防止对任一寄存器的写操作。

②DS1302有关RAM的地址

DS1302中附加31字节静态RAM的地址如图4所示。

图4

③DS1302的工作模式寄存器

所谓突发模式是指一次传送多个字节的时钟信号和RAM数据。

突发模式寄存器如图5所示。

图5

④此外,DS1302还有充电寄存器等。

2读写时序说明

DS1302是SPI总线驱动方式。

它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。

要想与DS1302通信,首先要先了解DS1302的控制字。

DS1302的控制字如图6。

图6控制字(即地址及命令字节)

控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。

位6:

如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;

位5至位1(A4~A0):

指示操作单元的地址;

位0(最低有效位):

如为0,表示要进行写操作,为1表示进行读操作。

控制字总是从最低位开始输出。

在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。

同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。

数据读写时序如图7。

图7数据读写时序

具体操作见驱动程序。

3电路原理图:

电路原理图如图8,DS1302与单片机的连接也仅需要3条线:

CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。

图8

4驱动程序

//寄存器宏定义

#defineWRITE_SECOND0x80

#defineWRITE_MINUTE0x82

#defineWRITE_HOUR0x84

#defineREAD_SECOND0x81

#defineREAD_MINUTE0x83

#defineREAD_HOUR0x85

#defineWRITE_PROTECT0x8E

//位寻址寄存器定义

sbitACC_7=ACC^7;

//管脚定义

sbitSCLK=P3^5;//DS1302时钟信号7脚

sbitDIO=P3^6;//DS1302数据信号6脚

sbitCE=P3^7;//DS1302片选5脚

//地址、数据发送子程序

voidWrite1302(unsignedcharaddr,dat)

{

unsignedchari,temp;

CE=0;//CE引脚为低,数据传送中止

SCLK=0;//清零时钟总线

CE=1;//CE引脚为高,逻辑控制有效

//发送地址

for(i=8;i>0;i--)//循环8次移位

{

SCLK=0;

temp=addr;

DIO=(bit)(temp&0x01);//每次传输低字节

addr>>=1;//右移一位

SCLK=1;

}

//发送数据

for(i=8;i>0;i--)

{

SCLK=0;

temp=dat;

DIO=(bit)(temp&0x01);

dat>>=1;

SCLK=1;

}

CE=0;

}

//数据读取子程序

unsignedcharRead1302(unsignedcharaddr)

{

unsignedchari,temp,dat1,dat2;

CE=0;

SCLK=0;

CE=1;

//发送地址

for(i=8;i>0;i--)//循环8次移位

{

SCLK=0;

temp=addr;

DIO=(bit)(temp&0x01);//每次传输低字节

addr>>=1;//右移一位

SCLK=1;

}

//读取数据

for(i=8;i>0;i--)

{

ACC_7=DIO;

SCLK=1;

ACC>>=1;

SCLK=0;

}

CE=0;

dat1=ACC;

dat2=dat1/16;//数据进制转换

dat1=dat1%16;//十六进制转十进制

dat1=dat1+dat2*10;

return(dat1);

}

//初始化DS1302

voidInitial(void)

{

Write1302(WRITE_PROTECT,0X00);//禁止写保护

Write1302(WRITE_SECOND,0x56);//秒位初始化

Write1302(WRITE_MINUTE,0x34);//分钟初始化

Write1302(WRITE_HOUR,0x12);//小时初始化

Write1302(WRITE_PROTECT,0x80);//允许写保护

}

51单片机综合学习系统之DS1302时钟应用篇《电子制作》2008年10月站长原创,如需引用请注明出处

大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了使用AD模数转换的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习DS1302时钟的基本原理与应用实例。

先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:

分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。

主体系统如图1所示,其配套书本教程《单片机快速入门》如图2所示。

图151单片机综合学习系统主机部分图片

图251单片机综合学习系统配套书本教程——《单片机快速入门》

上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、板载的DS1302时钟芯片,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。

在很多单片机系统中都要求带有实时时钟电路,如最常见的数字钟、钟控设备、数据记录仪表,这些仪表往往需要采集带时标的数据,同时一般它们也会有一些需要保存起来的重要数据,有了这些数据,便于用户后期对数据进行观察、分析。

本小节就介绍市面上常见的时钟芯片DS1302的应用。

DS1302是美国DALLAS公司推出的一款高性能、低功耗、带内部RAM的实时时钟芯片(RTC),也就是一种能够为单片机系统提供日期和时间的芯片。

通过本小节的学习,我们将会把RTC相关的一些技术粗略介绍一下,然后介绍DS1302与单片机之间的软硬件应用。

DS1302时钟芯片简介

DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:

复位(RST)、I/O数据线、串行时钟(SCLK)。

时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。

DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。

 

DS1302的内部结构

DS1302的外部引脚功能说明如图3所示:

图3DS1302封装图

X1,X2

32.768kHz晶振引脚

GND

RST

复位

I/O

数据输入/输出

SCLK

串行时钟

VCC1

电池引脚

VCC2

主电源引脚

DS1302的内部结构如图4所示,主要组成部分为:

移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。

虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。

图4DS1302的内部结构图

DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。

不过对我们目前而言,最需要熟悉的是和时钟相关部分的功能,对于其它参数请参阅数据手册。

DS1302的工作原理

DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。

数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。

时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。

DS1302的寄存器和控制命令

对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。

日历、时间寄存器及控制字如表1所示:

寄存器名称

7

6

5

4

3

2

1

0

1

RAM/CK

A4

A3

A2

A1

A0

RD/W

秒寄存器

1

0

0

0

0

0

0

分寄存器

1

0

0

0

0

0

1

小时寄存器

1

0

0

0

0

1

0

日寄存器

1

0

0

0

0

1

1

月寄存器

1

0

0

0

1

0

0

星期寄存器

1

0

0

0

1

0

1

年寄存器

1

0

0

0

1

1

0

写保护寄存器

1

0

0

0

1

1

1

慢充电寄存器

1

0

0

1

0

0

0

时钟突发寄存器

1

0

1

1

1

1

1

表1:

日历、时钟寄存器与控制字对照表

最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。

DS1302内部寄存器列表如表2所示:

寄存器名称

命令字

取值范围

各位内容

7

6

5

4

3

2

1

0

秒寄存器

80H

81H

00-59

CH

10SEC

SEC

分寄存器

82H

83H

00-59

0

10MIN

MIN

小时寄存器

84H

85H

01-12或00-23

12/24

0

A

HR

HR

日期寄存器

86H

87H

01-28,29,30,31

0

0

10DATE

DATE

月份寄存器

88H

89H

01-12

0

0

0

10M

MONTH

周寄存器

8AH

8BH

01-07

0

0

0

0

0

DAY

年份寄存器

8CH

8DH

00-99

10YEAR

YEAR

表2:

DS14302内部主要寄存器分布表

DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。

单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。

物理上,DS1302的通讯接口由3个口线组成,即RST,SCLK,I/O。

其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。

具体的读写时序参考图5,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:

平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。

图5DS1302的命令字结构

DS1302的软硬件设计实例

本例将实现对DS1302的读写操作,将时钟数据在LED数码管上显示出来。

调试时将功能选择开关调到DS1302的状态上。

图6DS1302实验演示图

硬件原理图

图10-46硬件原理图

程序流程图

图10-47软件流程图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1