DS1302编程操作
1、DS1302有关日历、时间的寄存器
这张表是DS1302内部的7个与时间、日期有关的寄存器图和一个写保护寄存器,我们要做的就是将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时间和日期。这几个寄存器的说明如下:
1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH).当初始上电时该位置为1,时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为0时,时钟才能开始运行。ﻫ2、小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是 ,当为1时,表示PM。在24小时模式时,位5是第二个10小时位
3、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在对任何的时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。
2、我们现在就来编程看一下,如何对DS1302进行操作把时钟信息显示在1602LCD上。
1 首先要通过8EH将写保护去掉,将日期, 然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时运了。
3 将写保护寄存器再写为80H,防止误改写寄存器的值.
4 不断读取80H-8CH的值,将它们格式化后显示到1602LCD液晶上
void Init_DS1302(void)
{ﻩ
WriteSet1302(0x8E,0x00); //根据写状态寄存器命令字,写入不保护指令
WriteSet1302(0x80,((0/10)〈〈4|(0%10))); //根据写秒寄存器命令字,写入秒的初始值
ﻩWriteSet1302(0x82,((0/10)〈<4|(0%10))); //根据写分寄存器命令字,写入分的初始值
WriteSet1302(0x84,((12/10)〈<4|(12%10))); //根据写小时寄存器命令字,写入小时的初始值
WriteSet1302(0x86,((16/10)<〈4|(16%10))); //根据写日寄存器命令字,写入日的初始值
ﻩWriteSet1302(0x88,((11/10)〈<4|(11%10))); //根据写月寄存器命令字,写入月的初始值
WriteSet1302(0x8c,((8/10)〈<4|(8%10))); //根据写小时寄存器命令字,写入小时的初始值
}
3、DS1302有关RAM的地址DS1302中附加31字节静态RAM的地址
4、DS1302的工作模式寄存器
所谓突发模式是指一次传送多个字节的时钟信号和RAM数据.
突发模式寄存器
5、DS1302充电寄存器
寄存器地址是08H 读操作是91H 写操作是90H
4-7位: TCS=1010 能充电
ds1302编程手册 来自淘豆网m.daumloan.com转载请标明出处.