DS1302时钟芯片的原理与应用.docx

上传人:b****2 文档编号:998805 上传时间:2023-04-30 格式:DOCX 页数:18 大小:170.69KB
下载 相关 举报
DS1302时钟芯片的原理与应用.docx_第1页
第1页 / 共18页
DS1302时钟芯片的原理与应用.docx_第2页
第2页 / 共18页
DS1302时钟芯片的原理与应用.docx_第3页
第3页 / 共18页
DS1302时钟芯片的原理与应用.docx_第4页
第4页 / 共18页
DS1302时钟芯片的原理与应用.docx_第5页
第5页 / 共18页
DS1302时钟芯片的原理与应用.docx_第6页
第6页 / 共18页
DS1302时钟芯片的原理与应用.docx_第7页
第7页 / 共18页
DS1302时钟芯片的原理与应用.docx_第8页
第8页 / 共18页
DS1302时钟芯片的原理与应用.docx_第9页
第9页 / 共18页
DS1302时钟芯片的原理与应用.docx_第10页
第10页 / 共18页
DS1302时钟芯片的原理与应用.docx_第11页
第11页 / 共18页
DS1302时钟芯片的原理与应用.docx_第12页
第12页 / 共18页
DS1302时钟芯片的原理与应用.docx_第13页
第13页 / 共18页
DS1302时钟芯片的原理与应用.docx_第14页
第14页 / 共18页
DS1302时钟芯片的原理与应用.docx_第15页
第15页 / 共18页
DS1302时钟芯片的原理与应用.docx_第16页
第16页 / 共18页
DS1302时钟芯片的原理与应用.docx_第17页
第17页 / 共18页
DS1302时钟芯片的原理与应用.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DS1302时钟芯片的原理与应用.docx

《DS1302时钟芯片的原理与应用.docx》由会员分享,可在线阅读,更多相关《DS1302时钟芯片的原理与应用.docx(18页珍藏版)》请在冰点文库上搜索。

DS1302时钟芯片的原理与应用.docx

DS1302时钟芯片的原理与应用

DS1302时钟芯片的原理与应用

1写保护寄存器操作

当写保护寄存器的最高位为0时,允许数据写入寄存器,写保护寄存器可以通过命令字节8E8F来规定禁止写入/读出。

写保护位不能在多字节传送模式下写入Write_Enable:

MOVCommand,#8Eh;命令字节为8E

MOVByteCnt,#1;单字节传送模式

MOVR0,#XmtDat数据地址覆给R0

MOVXmtDat,#00h数据内容为0写入允许

ACALLSend_Byte调用写入数据子程序

RET返回调用本子程序处当写保护寄存器的最高位为1时禁止数据写入寄存器Write_Disable:

MOVCommand,#8Eh;命令字节为8E

MOVByteCnt,#1;单字节传送模式

MOVR0,#XmtDat数据地址覆给R0

MOVXmtDat,#80h数据内容为80h禁止写入

ACALLSend_Byte调用写入数据子程序

RET返回调用本子程序处

以上程序调用了基本数据发送(Send_Byte模块及一些内存单元定义,其源程序清单在附录中给出下面的程序亦使用了这个模块

2时钟停止位操作当把秒寄存器的第7位时钟停止位设置为0时起动时钟开始Osc_Enable:

MOVCommand,#80h;命令字节为80

MOVByteCnt,#1;单字节传送模式

MOVR0,#XmtDat数据地址覆给R0

MOVXmtDat,#00h数据内容为0振荡器工作允许

ACALLSend_Byte调用写入数据子程序

RET返回调用本子程序处

当把秒寄存器的第7位时钟停止位设置为1时,时钟振荡器停止DS1320进入低功耗方式

Osc_Disable:

MOVCommand,#80h;命令字节为80

MOVByteCnt,#1;单字节传送模式

MOVR0,#XmtDat数据地址覆给R0

MOVXmtDat,#80h数据内容为80h振荡器停止

ACALLSend_Byte调用写入数据子程序

RET返回调用本子程序处

3.多字节传送方式

当命令字节为BE或BF时DS1302工作在多字节传送模式,8个时钟/日历寄存器从寄存器0地址开始连续读写从0位开始的数据,当命令字节为FE或FF时DS1302工作在多字节RAM传送模式31个

RAM寄存器从0地址开始连续读写从0位开始的数据

例如写入00年6月21日星期三13时59分59秒程序设置如下

Write_Multiplebyte:

MOVCommand,#0BEh;命令字节为BEh

MOVByteCnt,#8;多字节写入模式此模块为8个

MOVR0,#XmtDat数据地址覆给R0

MOVXmtDat,#59h秒单元内容为59h

MOVXmtDat+6,#0年单元内容为00h

MOVXmtDat+7,#0写保护单元内容为00h

ACALLSend_Byte调用写入数据子程序

RET返回调用本子程序处读出寄存器0-7的内容程序设置如下

Read_Multiplebyte:

MOVCommand,#0BFh;命令字节为BFh

MOVByteCnt,#8;多字节读出模式此模块为8个

MOVR1,#RcvDat数据地址覆给R1

ACALLReceive_Byte调用读出数据子程序

RET返回调用本子程序处

以上程序调用了基本数据接收(Receive_Byte)模块及一些内存单元定义,其源程序清单在附录中给

出下面的程序亦使用了这个模块

4.单字节传送方式

例如写入8时12小时模式程序设置如下

Write_Singlebyte:

MOVCommand,#84h;命令字节为84h

MOVByteCnt,#1;单字节传送模式

MOVR0,#XmtDat数据地址覆给R0

MOVXmtDat,#88h数据内容为88h

ACALLSend_Byte调用写入数据子程序

RET返回调用本子程序处上面所列出的程序模块Write_EnableWrite_DisableOsc_EnableOsc_Disable与单字节写入模块Write_Singlebyte的程序架构完全相同,仅只是几个入口参数不同本文是为了强调功

能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出,

用户在使用中可灵活简略

下面模块举例说明如何单字节读出小时单元的内容•

Read_Singlebyte:

MOVCommand,#85h;命令字节为85h

MOVByteCnt,#1;单字节传送模式

MOVR1,#RcvDat数据地址覆给R1

ACALLReceive_Byte调用读出数据子程序

RET返回调用本子程序处

亶I更團

DS1302应用电路原理图P87LPC764单片机选取内部振荡及内部复位电路附录数据发送与接收模块源程序清单

;CPU工作频率最大不超过20MHz

・********************************************************************

J

************************

;P87LPC762/4主控器发送接受数据程序

;说明本程序是利用Philips公司的P87LPC764单片机任何具有51内核或其它合适的单片机都可在此

作为主控器的普通I/O口(如P1.2/P1.3/P1.4实现总线的功能对总线上的器件本程序采用DS1302

进行读写操作命令字节在Command传送字节数在ByteCnt中所发送的数据在XmtDat中所接收

的数据在RcvDat中

・********************************************************************

J

************************

;P87LPC762/4主控器总线发送接受数据程序头文件

;内存数据定义

BitCntdata30h;数据位计数器

ByteCntdata31h;数据字节计数器

Commanddata32h;命令字节地址

RcvDatDATA40H;接收数据缓冲区

XmtDatDATA50H;发送数据缓冲区

;端口位定义

IO_DATAbitP1.3;数据传送总线

SCLKbitP1.4;时钟控制总线

RSTbitP1.2;复位总线

・********************************************************************

J

************************

;发送数据程序

;名称:

Send_Byte

;描述:

发送ByteCnt个字节给被控器DS1302

;命令字节地址在Command中

;所发送数据的字节数在ByteCnt中发送的数据在XmtDat缓冲区中

・********************************************************************

J

************************

Send_Byte:

CLRRST复位引脚为低电平所有数据传送终止

NOP

CLRSCLK清时钟总线

NOP

SETBRST复位引脚为高电平逻辑控制有效

NOP

MOVA,Command准备发送命令字节

MOVBitCnt,#08h传送位数为8

S_Byte0:

RRCA将最低位传送给进位位C

MOVIO_DATA,C位传送至数据总线

NOP

SETBSCLK时钟上升沿发送数据有效

NOP

CLRSCLK清时钟总线

DJNZBitCnt,S_Byte0位传送未完毕则继续

NOP

S_Byte1:

准备发送数据

MOVA,@R0传送数据过程与传送命令相同

MOVBitCnt,#08h

S_Byte2:

RRCA

MOVIO_DATA,C

NOP

SETBSCLK

NOP

CLRSCLK

DJNZBitCnt,S_Byte2

INCR0发送数据的内存地址加1

DJNZByteCnt,S_Byte1字节传送未完毕则继续

NOP

CLRRST逻辑操作完毕清RST

RET

・********************************************************************

J

*******************

;接收数据程序;

;名称:

Receive_Byte

;描述:

从被控器DS1302接收ByteCnt个字节数据

;命令字节地址在Command中

;所接收数据的字节数在ByteCnt中接收的数据在RcvDat缓冲区中

・********************************************************************

J

***************

Receive_Byte:

CLRRST;复位引脚为低电平所有数据传送终止

NOP

CLRSCLK清时钟总线

NOP

SETBRST;复位引脚为高电平逻辑控制有效

MOVA,Command准备发送命令字节

MOVBitCnt,#08h传送位数为8

R_Byte0:

RRCA将最低位传送给进位位C

MOVIO_DATA,C位传送至数据总线

NOP

SETBSCLK时钟上升沿发送数据有效

NOP

CLRSCLK清时钟总线

DJNZBitCnt,R_Byte0位传送未完毕则继续

NOP

R_Byte1:

准备接收数据

CLRA清类加器

CLRC清进位位C

MOVBitCnt,#08h接收位数为8

R_Byte2:

NOP

MOVC,IO_DATA数据总线上的数据传送给C

RRCA从最低位接收数据

SETBSCLK时钟总线置高

NOP

CLRSCLK时钟下降沿接收数据有效

DJNZBitCnt,R_Byte2位接收未完毕则继续

MOV@R1,A接收到的完整数据字节放入接收内存缓冲区

INCR1接收数据的内存地址加1

DJNZByteCnt,R_Byte1字节接收未完毕则继续

NOP

CLRRST逻辑操作完毕清RST

RET

END

实时时钟电路DS1302的原理及应用

2009-04-1520:

06

摘要:

介绍美国DALLAS^司推出的具有涓细电流充电能力的低功耗实时时钟电

路DS1302的结构、工作原理及其在实时显示时间中的应用。

它可以对年、月、

日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。

给出DS1302在

读写中的C51程序及流程图,以及在调试过程中的注意事项。

关键词:

时钟电路;实时时钟;单片机;应用

1引言

现在流行的串行时钟电路很多,如DS1302DS1307、PCF8485等。

这些电路的接口简单、价格低廉、使用方便,被广泛地采用。

本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。

采用

普通32.768kHz晶振。

2DS1302的结构及工作原理

DS1302是美国DALLAS^司推出的一种高性能、低功耗、带RAM勺实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V〜5.5V。

采用三线接口与CPUS行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31X8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

2.1引脚功能及结构

图1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较

大者供电。

当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768kHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

RST俞入有

两种功能:

首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。

当RST为高电平时,所有的

数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电运行时,在Vcc>2.5V之前,RST必须保持低电平。

只有在SCLK为低电平时,才能将RST置为高电平。

I/O为串行数据输入输出端(双向),后面有详细说明。

SCLK始终是输入端。

X二\«;

7SCtX

*5

5貯】

2.2DS1302的控制字节

DS1302的控制字如图2所示。

控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

1

A4

A3

A2

・制

2出1越2的拾制华节

2.3数据输入输出(I/O)

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

同样,在紧跟8位的控制指令字后的下一个SCLKB冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

2.4DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。

喪|日历、时间番存嚣及韓控制宇

ft忡内疔

;<0

toil

grit

00-59

f.H工

CH;r5*#

K-lll

ni12^

EXl-23

1b34010HR

Hit

MAlf

.u>.H

noinn.MT

月斛祸

01-12

(1001UM

MOXIU

tMI

IHH

HI-U7

nr»(»0a

in、

KCH

NllH

flu®

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

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

DS1302与RAM相关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM勺31个字节,命令控制字为FEH写)、FFH读)。

3DS1302实时显示时间的软硬件

DS1302与CPU勺连接需要三条线,即SCLK(7)、1/0(6)、RST(5)。

图3示出DS1302与89C2051的连接图,其中,时钟的显示用LCD

3.1DS1302与CPU勺连接

实际上,在调试程序时可以不加电容器,只加一个32.768kHz的晶振即可。

是选择晶振时,不同的晶振,误差也较大。

另外,还可以在上面的电路中加入DS18B20同时显示实时温度。

只要占用CPU一个口线即可。

LCD还可以换成LED还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块

LCM101内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM可显示任意字段笔划,具有3-4线串行接口,可与任何单片机、IC

接口。

功耗低,显示状态时电流为2卩A(典型值),省电模式时小于1卩A,工作电压为2.4V〜3.3V,显示清晰。

芒3rt'iwcn追慢曲电席申用用

1S4専此时町,1"

3.2DS1302实时时间流程

图4示出DS1302的实时时间流程。

根据此流程框图,不难采集实时时间。

下面结合流程图对DS1302的基本操作进行编程:

*inrhi

$bittj*!

k=P3*3

4>it|Jq=PJM

4>itI=P3*5

sbilBIT7=ACC7

ibi(BiTO=ACCD

voidinpullnlr(umifnedcharucda)//8位数厳打A«ft

lurKignrdrlhiri;

ACC将雯‘q人的数放入ACC

动数掘«r迭

for(i=8;i>0;i-);循环8次,7JA8位数据.;从低位到高位

{ijo=BITO;将ACC-0的值賦给时钟数据线l_j*lk=0

"Ik=1:

住时钟线的上升沿写入1位数据

ACC二ACO1;将岛I位数据移至ACCP

unsignedcharoutputbyte(void)//8位数据读出晒数

(unsignedchari;

Ln4=1;启动数据传送

for(i=8;i>0;i・・);读出8位数据,从低位到岛位

{ACC=ACC»I;将前一下降沿读岀的数据右移1位.从而该次读出的数放人ACU7

tJo=l;PI口输人之前置丨・

tjrlk=I

21k=0:

时钟线下降沿读出1位数据

BIT7=tjo;cannotusePl*7=ijoforPT7not

;avarient

return(ACC)

//delay15

(1)

inputbyte(ucda)

520

Uq=1

I

unsignedcharre」302(unsignedcharadd)//读岀对应寄存器内容

(unsignedcharucda

5t=0

5=0

IJK»I

inpuibyte(add)

//

urde=vutputbyte()

5=0

rrfunlucxia)

I

voidnet1302(unsignedchar*p//设Kt时间

初值

(unsignedchari

unsignedcharadd=0x80

ktJ302(0x8e・0x00);将控制奇仔群值设为零.

混高位允许写

for(i=7;i>0;i--);将七个时间初值写入对

;应待存器

|wrJ3O2(add,*pda);写对应时仲詣拆器的値pd&++add+=2:

1

wrj302(0x8e.0x80);写保护•防止干扰形响时

;间值

I

voidgelJ302(unsignedcharcurtimel])//读取当曹时间值

{unbiiEhrdchiirhj

(wsipiedcharodd=0x81

khuUfpithar?

u-r

forti=0;i<7;i+*>

IcurtirocliI■peJJOitarkl);i®对应时钟4F存器的trt

-etidinirli]

j=s«o4:

将BCD吗转化成席心十进制Stj*-10

wc二s4・i'&(H0F

sec+=j

add*-2

根据本人在调试中遇到的问题,特作如下说明:

DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7必须为逻辑1,如果D7=0则禁止写DS1302即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5-D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出)。

在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。

若进行单字节传送,8位命令字节传送结束之后,在下8个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。

DS1302与RAM!

关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。

要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。

虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。

可以用老式电脑主板上的3.6V充电电池。

如果断电时间较

短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。

100卩F就可

以保证1小时的正常走时。

DS1302在第一次加电后,必须进行初始化操作。

初始化后就可以按正常方法调整时间。

4结论

DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。

DS1302可以

用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现

该数据的时间同时记录。

这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。

传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。

但是,如果在系统中采用时钟芯片DS1302则能很好地解决这个问题

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2