首页 > 编程知识 正文

时钟模块ds1302的使用,ds1302时钟芯片手册

时间:2023-05-06 00:03:57 阅读:125010 作者:834

另一方面,说明DS1302时钟芯片是美国DALLAS公司推出的具有涓流电流充电能力的低功耗实时时钟芯片。 可以计时年、月、日、周、时、分、秒,具有闰年补偿等多种功能。 DS1302芯片包括用于存储实时时钟/日历的31字节静态RAM,它可以通过简单的串行接口与微处理器通信,并将当前时钟存储在RAM中。 DS1302芯片将在不到31天的月末自动调整,闰年将自动校正。 因为有AM/PM指示器,所以时钟以12小时制或24小时制工作。

2 .芯片参数1 .芯片特征实时时钟计算年、月、日、时、分、秒、星期,到2100年有闰年调节功能318位的通用临时存储RAM串行输入输出。 在最小引脚数2.0V~5.5v的宽电压范围下工作,在2.0v下工作电流小于300nA读写时钟或RAM数据时,1字节或多字节(突发模式)的数据传输方式8引脚DIP封装或可选的8引脚表面安装

DS1302采用三线接口双向数据通信接口,RST为芯片引脚,低电平有效; slk是时钟芯片,为通信提供时钟源; I/O是用于收发数据的数据输入输出端子。

DS1302还采用双电源供电模式,VCC1连接备用电源,在VCC2主电源故障时保存时间和日期数据。

三.参考电路

DS1302芯片的基本电路如上图所示,其中Y2为32.768k外部晶体振荡,为芯片提供时钟源; P2是备用电池,保证主电源断开后芯片继续工作; D1是二极管,保证电压单向导通,避免主电源电压高热破坏备用电池; R6是上拉电阻,提高信号传输的稳定性。

四.控制程序1 .时钟数据读写地址

上图是DS1302芯片的时钟数据的读取和写入地址。为了实现芯片的控制,在这些地址写入数据或读取数据。 其中:

读地址为0x81 (秒)、0x83 (分钟)、0x85 (小时)、0x87 (天)、0x89 (月)、0x8b )、0x8d (年) );

地址写为0x80 (秒)、0x82 (分钟)、0x84 (分钟)、0x86 (天)、0x88 (月)、0x8a )、0x8c (年)

2 .控制时序DS1302控制软件的最基本操作是写函数和读函数,其次是实现初始化函数。

(1)读取时机

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * uchar ds 1302 read (ucharn,dat,dat1; RST=0; _nop_ (); SCLK=0; //首先将SCLK设为低电平。 _nop_ (); RST=1; //然后使RST(CE )成为高电平。 _nop_ (); for(n=0; n8; 开始传输n//8位地址指令{DSIO=addr0x01; //从低位传输addr=1; SCLK=1; //当数据处于上升边缘时,DS1302返回数据_nop_ (); SCLK=0; //DS1302下降沿时,数据_nop_ (); }_nop_ (); for(n=0; n8; 读取n//8位数据{dat1=DSIO; //从最低位开始dat=(dat1)|)| (dat17 ); SCLK=1; _nop_ (); SCLK=0; //DS1302下降沿时,数据_nop_ (); }RST=0; _nop_ (); //以下是DS1302复位的稳定时间,是必需的。 SCLK=1; _nop_ (); DSIO=0; _nop_ (); DSIO=1; _nop_ (); 返回日期; (2)写入定时

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * void ds 1302 write ({ uchar naddr,uchar dat ) ) _nop_ (); SCLK=0; //首先将SCLK设为低电平。 _nop_ (); RST=1; //然后使RST(CE )成为高电平。 _nop_ (); for(n=0; n8; 开始传输n//8位地址指令{DSIO=addr0x01; //从低位传输addr=1; SCLK=1; //当数据处于上升边缘时,DS1302返回数据_nop_ (); SCLK=0; _nop_ (); (for ) n=0; n8; 写入n//8位数据{DSIO=dat0x01; dat=1; SCLK=1; //当数据处于上升边缘时,DS1302返回数据_nop_ (); SCLK=0; _nop_ (); } RST=0; //数据传输结束_nop_ (; (3)初始化/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。 ds 1302写入(0X00,0X00 ); //禁止写保护意味着关闭写保护功能for (n=0; n7; (n ) /写入7字节时钟信号)分分秒时日月周年(ds1302write ) write_RTC_addr[n],TIME[n] ); } ds 1302写入(0x80,0x80 ); //开启写保护功能} 3.由于通过参考例程实现了DS1302的驱动程序,因此可以实现DS1302的报时功能。

//---DS1302时分秒的地址命令------------秒时分日月周年最低有效读写位的写入和读取----------//uchar code read _ RTC _ addr [7] uchar codewrite _ RTC _ addr [7]={0x 80,0x 82,0x 84,0x 86,0x 88,0x8a,0x8c}; //---DS1302时钟初始化2013年1月1日星期二12时00分00秒。 ------------存储顺序为秒时分日月周年,存储格式为BCD码---//uchar time [7]={ 0,0,0x 12,0x 01,0 x02,0 x02,0x 13 };/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * void ds 1302 rereled for(n=0; n7; n (读取//7字节时钟信号)分分秒时日月周年(time [ n ]=ds 1302 read (read _ RTC _ addr [ n ] ); }}void main () {LcdInit ); Ds1302Init (; wile(1) { ds 1302读时间}; //读取此时的时间LCD显示器(; //查看时间}DS1302有关相关资料和例程,请关注公众号,并通过首页回复http://www.Sina.com/获取资料

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。