接口/时钟/PLL
串行时钟电路现在流行起来了,DS1302时钟芯片便是其中最受欢迎的一种主要是因为它的接口简单、价格低廉、使用方便,可以提供秒、分、小时、日期、月、年等信息,并且还有软件自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。今天我们就来了解一下ds1302时钟芯片万年历,主要通过ds1302时钟芯片万年历的原理和应用、操作流程来具体分析,最后奉上DS1302万年历电路展示图。
DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。
是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
最值得谈论的应该就是万年历的应用了,因为它的寄存器让万年历得一个更好的展示。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。
此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。我们说一下关于DS1302万年历的具体操作流程。
第一,首先要通过8eH将写保护去掉,这样我们才能将日期,时间的初值写时各个寄存器。
第二,然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时运行了。
第三,将写保护寄存器再写为80H,防止误改写寄存器的值。
第四,不断读取80H-8CH的值,将他们转化为十进制后显示出来就可以啦,之前我们说过,DS1302读出的数据是BCD码,所以需要转换一下。
/*************时钟显示***************/
void init_1602_ds1302()
{
write_sfm2_ds1302(1,1,shi); //显示时
write_sfm2_ds1302(1,4,fen); //显示分
write_sfm2_ds1302(1,7,miao); //显示秒
write_week(2,12,week);
//write_sfm1(1,14,week); //显示星期
write_sfm3_18B20(1,11,temperature); //显示温度
if(flag_nl == 0) //显示阳历
{
write_sfm2_ds1302(2,2,nian); //显示年
write_sfm2_ds1302(2,5,yue); //显示月
write_sfm2_ds1302(2,8,ri); //显示日
}
else //显示农历
{
write_sfm2_ds1302(2,2,n_nian); //显示年
write_sfm2_ds1302(2,5,n_yue); //显示月
write_sfm2_ds1302(2,8,n_ri); //显示日
}
全部0条评论
快来发表一下你的评论吧 !