欢迎来到天天文库
浏览记录
ID:61419170
大小:322.00 KB
页数:8页
时间:2021-01-28
《DS1302实时时钟芯片.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、DS1302实时时钟芯片DS1302简介DS1302是美国DALLAS公司推出的一种高性能、低功耗能提供涓流充电的时钟芯片。内含一个实时时钟/日历和31个字节的静态RAM,采用SPI三线接口与单片机进行同步通信。实时时钟可以对年、月、日、周、日、时、分、秒进行计时,一个月小于31天时可以自动调整,且具有闰年补偿功能。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力,当主电源掉电后由后备电源进行供电,主电源再次上电后,对后备电源进行充电。DS1302引脚功能实物图图3DS1302封装图X
2、1,X232.768kHz晶振引脚GND接地引脚RST复位引脚I/O数据输入/输出引脚SCLK串行时钟引脚VCC1后备电池引脚VCC2主电源引脚Vcc1、Vcc2—DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2—外接32.768kHz晶振。GND—接地。RST—在读、写数据期间,必须输入高电平,通过把RST置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令字节序列送入移位寄存器;其次,RST提供终止
3、单字节或多字节数据的传送手段,当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O—串行数据输入输出端。SCLK—控制数据的输入与输出。DS1302接线图注:CE口是RST引脚DS1302的寄存器lDS1302有关日历/时间的寄存器共有12个,其中有7个寄存器分别存储秒、分、时、日、月、周、年的数据,数据格式为BCD码。其读、写地址如下图:秒寄存器(81h、80h)的最高位(BIT7)
4、定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。小时寄存器(85h、84h)的最高位(BIT7)用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式,当为低时,选择24小时模式。在12小时模式时,BIT5位是AM/PM选择位,当为1时,表示PM。在24小时模式时,BIT5位是第二个10小时位。控制寄存器(8Fh、8Eh)的最高位(BIT7)是写保护位(WP),其它位均置为0。在任何对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位禁止对任一寄存器的写操作
5、。lDS1302有关31字节RAM的地址lDS1302的工作模式寄存器所谓突发模式是指一次性读/写多个字节的时钟数据和RAM数据。在时钟突发模式下可一次性依次读/写有关日历/时间的8个寄存器(从秒寄存器到控制寄存器)的数据;在RAM突发模式下,可一次性依次读/写RAM31个字节的数据。lDS1302的充电寄存器充电寄存器要根据外围电路来设置,寄存器地址是0x90,其高4位为1010时充电(其他组合均不能充电),低4位的首2位是选择内部降压二极管的个数的,01代表在充电回路串入1个二极管,10代表串入2个(注:即使高4位位1010,但低4位的首2位是00或11时,充电功能被
6、禁止);最后2位可设定串入的电阻的数值:00为0欧,01为2k欧,10为4k欧,11为8k欧。充电原理图如下:原理图DS1302的控制DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字节,还需要读取相应寄存器的数据。DS1302控制字节格式如下:l最高位(位7)必须是逻辑1,如果是0,则不能向DS1302写入数据l位6为0表示存取日历/时间数据,为1表示存取RAM数据l位5-位1(A4-A0)表示操作单元的地址l最低位(位0)为0进行写操作,为1进行读操作一个完整的控制字节就是由以上内容组成。由于DS1302只有一个I/O口,所以数据是串行传输的,每次只传输一位
7、。控制字节总是从最低位开始由单片机输出(即DS1302接收)。在控制字节输入后的下一个SCLK时钟的上升沿,数据被写入DS1302,数据的输入也是从最低位开始。同样,在控制字节输入后的下一个SCLK时钟的下降沿,读出DS1302的数据,数据的读出也是从最低位开始读。DS1302读/写时序图如下:写数据读数据注意:写数据是在SCLK的上升沿,读数据是在SCLK的下降沿DS1302实列列1用C语言编程,Proteus进行仿真,用52单片机结合DS1302实时时钟芯片在两位数码管上显示秒的内容:程序代码如下:#include
此文档下载收益归作者所有