DS1302的驱动程序.docx

上传人:scccc 文档编号:13553613 上传时间:2022-01-16 格式:DOCX 页数:6 大小:16.23KB
返回 下载 相关 举报
DS1302的驱动程序.docx_第1页
第1页 / 共6页
DS1302的驱动程序.docx_第2页
第2页 / 共6页
DS1302的驱动程序.docx_第3页
第3页 / 共6页
DS1302的驱动程序.docx_第4页
第4页 / 共6页
DS1302的驱动程序.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《DS1302的驱动程序.docx》由会员分享,可在线阅读,更多相关《DS1302的驱动程序.docx(6页珍藏版)》请在三一文库上搜索。

1、v1.0可编辑可修改DS1302的驱动一、芯片介绍DALLA裳司推出的专用时钟芯片 DS130的含有一个实时时钟/日历和31字 节静态RAM ,通过简单的串行接口与单片机进行通信。实时时钟 /日历电路提供 秒、分、时、日、星期、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM指示决定采用24或12小时格式。时钟/RAM的读/写数据 以一个字节或多达31个字节的字符组方式通信,DS1302工作时功耗很低保持数 据和时钟信息时功率小于1mW采用普通晶振。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三 个口线:RES复位;I/O数据线;SCL牌行时钟,

2、其引脚图如图2-8所示。VcciSCLKX2匚 GNDCDS13028-PINDIP(300MIL)图2-8 DS1302引脚图其中vCc为后备电源,VccM主电源。在主电源关闭的情况下,也能保持时钟 的连续运行。DS130哂Vcc1或Vcc2两者中的较大者供电。当 Vcc2大于Vcc1 +时, Vcc2DS130纵电。当Vcc2小于Vcc1时,DS130%Vcc1供电。X1和X2是振荡源, 外接晶振。RS碇复位/片选线,通过把RST俞入驱动置高电平来启动所有的数据 传送。RST俞入有两种功能:首先,RST8通控制逻辑,允许地址/命令序列送入 移位寄存器;其次,RSTI供终止单字节或多字节数据

3、的传送手段。当RS叨高电平时,所有的数据传送被初始化,允许对DS1302s行操作。如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc学 之前,RSTZ、须保持低电平。只有在SCLK;低电平时,才能将RSTS为高电平,I/O 为申行数据输入输出端,SCLK台终是输入端。1) DS1302勺控制字节2) DS1302的控制字如图2-9所示。1RAMA4A3A2A1A0W/CK/R图2-9 DS1302的控制字节控制字节的最高有效位必须是逻辑1,如果它为0,则不能把数据写入DS1302 中,位6如果为0,则表示存取日历时钟数据,为1表示存取RA瞰据;

4、位5至位1指 示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操 作,控制字节总是从最低位开始输出。3) DS1302勺数据输入输出4) 在控制指令字输入后的下一个SCLK寸钟的上升沿时,数据被写入DS1302数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个 SCLKc冲的下P1沿读出DS1302勺数据,读出数据时从低位0位到高位7。5) DS1302勺寄存器6) DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BC画形式,其日历、时间寄存器及其控制字如表2-12所示。表2-12日历、时间寄存器及其控制字寄存器 名称命令字取

5、值范围各位内容写操作读操作76543210秒寄存器80H81H059CH秒十位秒个位分寄存器82H83H0590分十位分个位时寄存器84H85H023 或012T010AP时时个位日寄存器86H87H028,29 ,30,3100日十位日个位月寄存器88H89H1 12000月月个位周寄存器8AH8BH1700000星期年寄存器8CH8DH099年十位年个位其中CHfc时钟停止位,CH=0g荡器工彳允许;CH二振荡器工作停止。T为12 小时制与24小时制选择位,T=M24小时制;T=1为12小时制。A叫12小时制的上 下午指示位,AP=(午;AP=1J下午。止匕外,DS1302还有年份寄存器、

6、控制寄存器、充电寄存器、时钟突发寄存 器及与RA邮关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外 的所有寄存器内容。DS1302与RAW关的寄存器分为两类:一类是单个RA晔元, 共31个,每个单元组态为一个8位的字节,其命令控制字为C0H FDH其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM?存器,此方式下可一次性读写所有的RAlMfi31个字节,命令控制字为FEH(W)、FFHQ)。二、驱动程序分析接口定义:sbit IO=P3A4;/ 定义为DS1302勺数据输出输入口 ;sbit RST=P3A1;/定义为DS1302勺复位信号输入口 ;sbit CLK=P3A5

7、; / 定义为DS1302勺用行时钟信号输入口。1) DS1302?存器写操作SCL时钟的上升沿时,数据被写入DS130Z数据输入从低位即位0开始。在 对寄存器写操作是应先指明寄存器的地址。各寄存器的地址详见表2-12 oDS13021操作驱动函数代码如下:void WriteByte_1302(uchar d)uchar i;RST=1;启动写操作for(i=0;i=1;寄存器写操作驱动函数代码如下:void D_W1302(uchar add,uchar Data) RST=0;CLK=0;delay_us(10);RST=1;WriteByte_1302(add);/ 指明寄存器地址Wr

8、iteByte_1302(Data);/写寄存器CLK=1;RST=0;2) DS1302U存器读操作SCLK时钟的下降沿时,数据被读出 DS1302,数据输入从低位即位0开始 在对寄存器读操作时应先指明寄存器的地址。各寄存器的地址详见表2-12 oDS130菠操作驱动函数:uchar ReadByte_1302() uchar i;uchar rdata=0x00;IO=1;RST=1;for(i=0;i=1;if(IO) rdata|=0x80;return(rdata);寄存器读操作驱动函数代码如下:uchar D_R1302(uchar add)uchar Data;RST=0;CLK

9、=0;delay_us(1);RST=1;WriteByte_1302(add);Data=ReadByte_1302();CLK=1;RST=0;return(Data);2) DS130豉取时间和设置时间功能模块从DS1302H取时间是通过 void gettime_1302(uchar times12)实现的。入 口参数uchar times12用来存储从DS130获取的时间和日期,从数据第0位开始 分别存储秒、分、时、日、月、星期、年的个位和十位。具程序代码如下:void gettime_1302(uchar times14)uchar i,j=0;uchar time6;uchar

10、add=0x81;for(i=0;i=4;times2*i+1=(timei&0x0f);又tDS130殁置时间由void set_1302(uchar *p)来实现,入口参数uchar *p设置时间数组首地址指针。数组p共7个元素分别对应秒、分、时、日、月、 星期、年。程序代码如下:void set_1302(uchar *p)uchar i;uchar add=0x80;D_W1302(0x8e,0x00);/写控制寄存器位0x00, WP=允许for(i=0;i7;i+,p+,add+=2)D_W1302(add,*p);D_W1302(0x8e,0x80);/ 写保护DS13021动程序各函数包含于头文件中,在主函数中加入宏定义#include。6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1