求DS1302和超级电容构成的电源备份电路?

本文

ds1302讲解编(ds1302编程)ds1302讲解编(ds1302编程)


ds1302讲解编(ds1302编程)


ds1302讲解编(ds1302编程)


将介绍实时时钟DS1302与超级电容的应用实例,有助于设计人员使用超级电容完成时钟保持、数据保持等电路的设计。---Dallas半导体公司的DS1302涓流充电时钟芯片是一个可编程3线串行接口时钟芯片,可用超级电容或可充电电池备份系统的时间和日期,还提供31字节的非易失SRAM用于数据存储。由DS1302和超级电容构成的电源备份电路如图1所示:

DS1302的VCC2接主电源,VCC1接超级电容正极。针对不同的电源备份系统,如可充电的镍氢电池、镍镉电池,还有容量不同的超级电容,DS1302专门提供了可编程涓流充电电路,以适应不同的充电电流要求,充电电路如图2所示:

通过设置电路内的DS和RS控制位,可设置不同的充电电流IMAX。例如控制字是10100101,则表示选通了一只二极管,同时选通阻值为2kΩ的R1,IMAX计算公式如式1,式中的VDrop是二极管的电压降。IMAX=(VCC2-n·VDrop)/R

n=1,2

(1)

表1列出了IMAX计算值,对应VCC2的值是4.5V、5.0V、5.5V,有1只二极管和2只二极管两种情况,电阻值为2kΩ、42kΩ和82kΩ。充电过程

作为电源备份的元件,超级电容的充、放电特性是关注的重点,结合DS1302的可编程充电电路,在下面给出充电时电压V(t)及电流I(t)与时间的函数及放电时电压V(t)与时间的函数。

超级电容端电压与时间的函数可表示为式2。

V(t)=VMAX

[1-e(-t/RC)]

(2)

V(t)为超级电容端电压,VMAX等于VCC2减去n·VDrop,R为内部涓流充电电阻,C是超级电容的容量。超级电容两端电压充电到VMAX的95%所需时间见表2。

充电电流与时间的函数可表示为式3。

I(t)=VMAX/R·e(-t/RC)

(3)

I(t)为充电电流。

超级电容充电特性曲线如图3所示:

放电过程

要知道DS1302使用超级电容放电的时间,则需要了解DS1302的特性参数ICC1T(时间保持电流),ICC1T呈线性变化,这意味着DS1302可以表示为阻性负载RL,超级电容通过此负载来放电。根据DS1302数据手册,在VCC1为2.5V时,ICC1T为0.3μA,这样RL约为8.3MΩ。在不考虑超级电容自放电影响的情况下,超级电容放电特性可表示为式4。

V(t)=VMAX·e(-t/RLC)

(4)

RL为DS1302负载阻抗。电容放电至2V,根据上面公式计算的放电时间值见表3。

超级电容放电电压特性曲线见图4:

有木有大佬帮我解释一下这段ds1302时钟芯片程序是什么意思?

在前面的课程中我们已经了解到了不少关于时钟的概念,比如我们用的单片机的主时钟是11.0592M、I2C总线有一条时钟信号线SCL等,这些时钟本质上都是一个某一频率的方波信号。那么除了这些在前面新学到的时钟概念外,还有一个我们早已熟悉的不能再熟悉的时钟概念——年-月-日 时:分:秒,就是我们的钟表和日历给出的时间,它的重要程度我想就不需要多说了吧,在单片机系统里我们把它称作实时时钟,以区别于前面提到的几种方波时钟信号。实时时钟,有时也被称作墙上时钟,很形象的一个名词,对吧,大家知道他们讲的一回事就行了。本章,我们将学习实时时钟的应用,有了它,你的单片机系统就能在漫漫历史长河中找到自己的时间定位啦,可以在指定时间干某件事,或者记录下某事发生的具体时间,等等。除此之外,本章还会学习到C语言的结构体,它也是C语言的精华部分,我们通过本章先来了解它的基础,后面再逐渐达到熟练、灵活运用它,你的编程水平会提高一个档次哦。 15.1 BCD码的学习 在我们日常生产生活中用的多的数字是十进制数字,而单片机系统的所有数据本质上都是二进制的,所以聪明的前辈们就给我们创造了BCD码。

89C51单片机ds1302C编程问题

void write_ds1302(uchar add) //单字节写

{uchar i;

for(i=0; i<8; i++)

{SCLK = 0;

IO = add & 0x01;//读出ADD的位数值并赋值给IO口,

add = add >> 1;//吧ADD的值右移一位,清除掉已经传送给1302的位的值

SCLK = 1;

}}

读也是同样的意思

DS1302的介绍和引脚图

DS1302 :

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。

DS1302是时钟芯片,有计时的作用,和日常接触的电子表不多,可以对年月日、时分秒、星期计时。

可以用单片机往DS1302里面写入时间进行时间设置,也可以用单片机从DS1302中读取时间,读出来的时间也可以放在液晶上显示。这样就可以实现一块电子表的功能了。

DS1302引脚图:

单片机1302编程问题 读取数据求大神解释

if语句中DS1302_IO不一定始终是1,该项脚作为输入脚必须先置1,所以前面有一句DS1302_IO=1,

置1只是为了正确输入,如果此时DS1302输出为0,则将DS1302_IO拉低,就变成0了,注意看看51单片机书上关于引脚特性的描述。

DS1302_IO是DS1302的一个输入输出端口,它与单片机的一个IO口相接,如果读1302的话,必须先把此IO口置高,也就是 DS1302_IO=1;当1302输出低时,此端口的电位会被拉成低,那ucdat就不会是你说的始终是11111111了。

时钟芯片DS1302功能及具体介绍

摘 要:介绍美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路DS1302的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。给出DS1302在读写中的C51程序及流程图,以及在调试过程中的注意事项。

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

1 引言

现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。

2 DS1302的结构及工作原理

DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的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始终是输入端。

2.2 DS1302的控制字节

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

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

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

2.4 DS1302的寄存器

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

此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读作,偶数为写作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

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

DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。图3示出DS1302与89C2051的连接图,其中,时钟的显示用LCD。

3.1 DS1302与CPU的连接

实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。 LCD还可以换成LED,还可以使用卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有3-4线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2μA (典型值),省电模式时小于1μA,工作电压为2.4V~3.3V,显示清晰。

3.2 DS1302实时时间流程

图4示出DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对DS1302的基本作进行编程:

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

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

在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个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,则能很好地解决这个问题。