DS1302基本的读写

 

DS1302DALLAS公司的一个时钟芯片,能设置秒、分钟、小时、月、星期、年,且年可以设置到2100年。有时钟/日历寄存器还有31*8位的额外数据暂存寄存器(RAM),可以存储对时间的修正参数或者初始化的标志(前提是DS1302要外接备用电源),如果主机掉电后重新上电时读取RAM中的初始化标志为1的话就不对DS1302初始化了。

 

说到备用电源,可以用3.3v的锂电池或者电源掉电时间短的话(几小时或一天)则可以使用大电容(0.1F以上)供电,只是貌似电容体积太大。

 

DS1302是通过三根线控制读写数据的,RST/SCL/IO.

RST:复位线,所有数据的读写,都需要保持RST1,为0时就会终止当前的数据操作。

SCL:时钟线,提供数据操作的同步时钟。

     写入数据时,写入数据在SCL=0时可以改变而在SCL=1时要保持不变,即数据会在SCL的上升沿写入到DS1302。数据传输是低位在前,高位在后。

     读取数据时,在SCL=1变为SCL=0之后就可以读取数据(注:在写完寄存器后的一个下降沿就可以读取数据),即数据会在SCL的下降沿出现到IO数据线上。同样数据也是低位在前高位在后。

IO:数据线,要发送的八位数据,要从最低位一次移到IO数据线上。

        

时钟/日历寄存器:

:

     1000..R/W是寄存器地址和读写控制位,R/W1为读,为0为写。后面是寄存器里的读写数据,均是以二进制的BCD码存在的。BCD码,0-9对应0000-1001,十位对应10sec,如59对应数据为,CH1011001。下面几个寄存器数据格式亦是如此。CH=1,代表晶振停振,CH=0,代表晶振起振,时钟要工作的话都需要起振的。

:

小时 :

       bit7控制是112小时制,为024小时制,bit51则选择12小时下的PM,为0则是选择24小时的20-23小时段。

:

:

星期 :

:

CONTROL :

          WP写保护位,写入时要置WP=0

还有涓流充电器寄存器,控制锂电池的充电电流。

         DS1302的突发模式是连续读写寄存器,时钟/日历的7个寄存器是必须一下读完的,而其他的寄存器没必要一下读完。

        

         读写时序,贴张图,详见DS1302的资料手册。

 

突发模式的读写没写,连续读写和普通读写就是控制指令的bit5-bit1全为1bit6控制连续读写时钟/日历或RAM

 

控制器:stc89c52

88段共阴数码管,78LS138控制位,74HC573控制数码管的各段,贴上电路图。

 

下面贴上DS1302的普通读写程序:

/*****************************************************************

*********** Name: DS1302

***********               Date: 2014/12/25

***********               Com: FairSun

***********  LOL

******************************************************************/

 

#include <reg51.h>

#include <intrins.h>  //使用_nop_();

 

sbit SCL = P1^6;

sbit IO  &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值