DS1302时钟芯片的原理与应用Word文件下载.docx
- 文档编号:1208126
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:18
- 大小:170.69KB
DS1302时钟芯片的原理与应用Word文件下载.docx
《DS1302时钟芯片的原理与应用Word文件下载.docx》由会员分享,可在线阅读,更多相关《DS1302时钟芯片的原理与应用Word文件下载.docx(18页珍藏版)》请在冰点文库上搜索。
多字节读出模式此模块为8个
MOVR1,#RcvDat数据地址覆给R1
ACALLReceive_Byte调用读出数据子程序
以上程序调用了基本数据接收(Receive_Byte)模块及一些内存单元定义,其源程序清单在附录中给
出下面的程序亦使用了这个模块
4.单字节传送方式
例如写入8时12小时模式程序设置如下
Write_Singlebyte:
MOVCommand,#84h;
命令字节为84h
MOVXmtDat,#88h数据内容为88h
RET返回调用本子程序处上面所列出的程序模块Write_EnableWrite_DisableOsc_EnableOsc_Disable与单字节写入模块Write_Singlebyte的程序架构完全相同,仅只是几个入口参数不同本文是为了强调功
能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出,
用户在使用中可灵活简略
下面模块举例说明如何单字节读出小时单元的内容•
Read_Singlebyte:
MOVCommand,#85h;
命令字节为85h
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中
P87LPC762/4主控器总线发送接受数据程序头文件
内存数据定义
BitCntdata30h;
数据位计数器
ByteCntdata31h;
数据字节计数器
Commanddata32h;
命令字节地址
RcvDatDATA40H;
接收数据缓冲区
XmtDatDATA50H;
发送数据缓冲区
端口位定义
IO_DATAbitP1.3;
数据传送总线
SCLKbitP1.4;
时钟控制总线
RSTbitP1.2;
复位总线
发送数据程序
名称:
Send_Byte
描述:
发送ByteCnt个字节给被控器DS1302
命令字节地址在Command中
所发送数据的字节数在ByteCnt中发送的数据在XmtDat缓冲区中
Send_Byte:
CLRRST复位引脚为低电平所有数据传送终止
NOP
CLRSCLK清时钟总线
SETBRST复位引脚为高电平逻辑控制有效
MOVA,Command准备发送命令字节
MOVBitCnt,#08h传送位数为8
S_Byte0:
RRCA将最低位传送给进位位C
MOVIO_DATA,C位传送至数据总线
SETBSCLK时钟上升沿发送数据有效
DJNZBitCnt,S_Byte0位传送未完毕则继续
S_Byte1:
准备发送数据
MOVA,@R0传送数据过程与传送命令相同
MOVBitCnt,#08h
S_Byte2:
RRCA
MOVIO_DATA,C
SETBSCLK
CLRSCLK
DJNZBitCnt,S_Byte2
INCR0发送数据的内存地址加1
DJNZByteCnt,S_Byte1字节传送未完毕则继续
CLRRST逻辑操作完毕清RST
RET
*******************
接收数据程序;
Receive_Byte
描述:
从被控器DS1302接收ByteCnt个字节数据
命令字节地址在Command中
所接收数据的字节数在ByteCnt中接收的数据在RcvDat缓冲区中
***************
Receive_Byte:
CLRRST;
复位引脚为低电平所有数据传送终止
SETBRST;
复位引脚为高电平逻辑控制有效
R_Byte0:
DJNZBitCnt,R_Byte0位传送未完毕则继续
R_Byte1:
准备接收数据
CLRA清类加器
CLRC清进位位C
MOVBitCnt,#08h接收位数为8
R_Byte2:
MOVC,IO_DATA数据总线上的数据传送给C
RRCA从最低位接收数据
SETBSCLK时钟总线置高
CLRSCLK时钟下降沿接收数据有效
DJNZBitCnt,R_Byte2位接收未完毕则继续
MOV@R1,A接收到的完整数据字节放入接收内存缓冲区
INCR1接收数据的内存地址加1
DJNZByteCnt,R_Byte1字节接收未完毕则继续
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<
lr^Infrins.h"
$bittj*!
k=P3*3
4>
it|Jq=PJM
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・・);
读出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)
//<
M«
yl5(l)
urde=vutputbyte()
5=0
rrfunlucxia)
voidnet1302(unsignedchar*p<
U>
//设Kt时间
初值
(unsignedchari
unsignedcharadd=0x80
ktJ302(0x8e・0x00);
将控制奇仔群值设为零.
混高位允许写
for(i=7;
i--);
将七个时间初值写入对
应待存器
|wrJ3O2(add,*pda);
写对应时仲詣拆器的値pd&
++add+=2:
wrj302(0x8e.0x80);
写保护•防止干扰形响时
间值
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
urliim-|i]=撫t
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则能很好地解决这个问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS1302 时钟 芯片 原理 应用