文档详情

DS1302时钟芯片资料

s9****2
实名认证
店铺
DOCX
51.56KB
约5页
文档ID:462819540
DS1302时钟芯片资料_第1页
1/5

DS1302DS1302是美国DALLA铃司推出的一种高性能、低功耗的实时时钟芯片,附加 31字节静态RAM采用 SPI三线接口与CPUS行同步通信,并可采用突发方式一次传送多个字节的时钟信号和 RA微据实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31天时可以自动调整,且具有闰年补偿功能工作电压宽达〜采用双电源供电(主电源和备用电源) ,可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力卜面是标准的接线电路图:VCC2 EX1匚X2匚GND E8 7 6 5 )NomLsd 12 3 4J VCC13 SCLKJ I/OJCEGNDBT1VED5GbE|R.35, IKR.45 1KR55 1FCc|30pfU33.6V1Z. 4VCC2XIX2WDVCC19CIKX21DS1302实时时钟电路引脚功能:引号??脚12)、345678名] 称????Vcc2X1、X2GNDRSTI/OSCLKVcc1功能主电源[接晶振接地复位数据库串行时钟备用电源DS1302有关日历、时间的寄存器共有 12个,其中有7个寄存器(读时 81h〜8Dh,写时80h〜8Ch)是存放秒、分,小时、日、月、年、周数据的,存放的数据格式为 BC加形式它的内部时间寄存器如下:读寄存器写寄存器BIT 7BIT 6BIT 5BIT 4BIT 3BIT 2BIT 1BITO范围61 heohCH10秒秒003B2h1。

分分no-5935h&4h12/2^1011■ M/PM时时1—12^0-2387h66h0010 061-3189h8&h00010 月月1-12SBh8Ah0G000周日1-7BDh8ch10年年00-9S8Fh8EhWPc000000—将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取 实时时间和日期这几个寄存器的说明如下:1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH 当初始上电时该位置为1, 时钟振荡器停止,DS130班于低功耗状态;只有将秒寄存器的该位置改写为 0时,时钟才能开始运行2、控制寄存器(8Fh、8Eh)的位7是写保护位(WP ,其它7位均置为0在任何的对时 钟和RAM勺写操作之前,W取必须为00当WPS为1时,写保护位防止对任一寄存器的写操 作也就是说在电路上电的初始态 W皿1,这时是不能改写上面任何一个时间寄存器的,只 有首先将W敢写为0,才能进行其它寄存器的写操作3、控制寄存器(8Fh、8Eh)的位7是写保护位(WP ,其它7位均置为0在任何的对时钟 和RAM勺写操作之前,WF®必须为00当WF®为1时,写保护位防止对任一寄存器的写操作。

也就是说在电路上电的初始态 WF® 1,这时是不能改写上面任何一个时间寄存器的,只有首 先将WPa写为0,才能进行其它寄存器的写操作下面来说说如果对DS1302a行读写:上面的电路图可以看出,除了电源和接地, DS1302只有三根线和单片机连接,SCLK I/O和RST(有的也写成CE),先看时序图:单字节读CErLTLTLrLnji1 匚比前 Al j A2 ] A3 1M ,而「中6]DI |2 | 面]mJ5[㈣[57]--单字节写CE_/ \$Q^JWJirWUWULFlHJmRH_1 "T词 AO I Al I A2 ; A3 rMm闽 J X 00「D“ t>2 | M | m [d5 ] 痴]D])DS1302的数据读写是通过I/O串行进行的当进行一次读写操作时最少得读写两个字节, 第一个字节是控制字节,就是一个命令,告诉 DS1302是读还是写操作,是对RAM5是对CLOK 寄存器操作,以及操作的地址第二个字节就是要读或写的数据了我们先看单字节写:在进行操作之前先得将 CE (也可说是RST置高电平,然后单片机将 控制字的位0放到I/O上,当I/O的数据稳定后,将SCLKS高电平,DS1302检测到SCLK勺 上升沿后就将I/O上的数据读取,然后单片机将SCLKS为低电平,再将控制字的位1放到I/O 上,如此反复,将一个字节控制字的 8个位传给DS1302接下来就是传一个字节的数据给DS1302当传完数据后,单片机将 CE置为低电平,操作结束。

单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样, 但是单字节读操作在写控制字的最后一个位,SCL侬在高电平时,DS130漪将数据放到I/O上,单片机将SCLK 置为低电平后数据锁存,单机机就可以读取I/O上的数据如此反复,将一个字节的数据读入 单片机读与写操作的不同就在于,写操作是在 SCLK低电平时单片机将数据放到IO上,当SCLK±升沿时,DS1302卖取而读操作是在 SCLK®电平时DS130纵数据到IO上,将SCLK 置为低电平后,单片机就可从IO上读取数据现在我们来看看控制字的内容:7 6 5 4 3 2 1 01RAMA4A3A2A1A0RD7TK丽胃位0就是读写位,当位0为1时,就是告诉DS1302,下面是进行读出操作,而当位 0为0 时就是写入操作位0—位5是要进行操作的DS1302寄存器地址位6就是告诉DS1302是要对RAM!行操作还是对CLK寄存器进彳T操作,0就是对时间寄 存器操作,一般我们都是对时间寄存器进行操作位7就是固定的1为什么是1呢还记得上面说的单字节读操作吗在写控制字的最后一 个位也就是位7时,DS1302已将它的寄存器数据位0放到IO上了,要是控制字的位7是0的 话,DS1302a无法将它的随后的数据放到IO上了。

这样你现在就知道为什么控制字 80H是写秒寄存器,而80H是读秒寄存器了吧! 80H 换成二进制就是而81H的二进制就是,一个是写操作,另一个是读操作嘛!好!我们现在来总结一下,如何对 DS1302进行操作①首先要通过8eH将写保护去掉,这样我们才能将日期,时间的初值写时各个寄存器②然后就可以对80H 82H 84H 86H 88H 8AH 8CH!行初值的写入同时也通过秒寄存器 将位7的CH值改成0,这样DS130加开始走时运行了③将写保护寄存器再写为80H,防止误改写寄存器的值④不断读取80H- 8CH的值,将它们格式化后显示到 LCD或数码管上C语言程序案例"**************DS1302有关子函数 ********************/ void write_byte(uchar dat)// 写一个字节{ACC=dat; //ACC为累加器寄存器RST=1;for(a=8;a>0;a--) //从低位把数据dat 一位一位的送到I/O传送{IO=ACCA0; //IO 是DS1302的一个接口,用和单片机交互数据SCLK=0;SCLK=1;ACC=ACC>>1;}}uchar read_byte() // 读一个字节{RST=1;for(a=8;a>0;a--) {ACC7=IO;SCLK=1;SCLK=0;ACC=ACC>>1;}return (ACC);}void write_1302(uchar add,uchar dat) 〃 向1302芯片写函数,指定写入地址,数据 {RST=0;SCLK=0;RST=1;write_byte(add);// 先写控制字,选择寄存器write_byte(dat);// 给寄存器赋值SCLK=1;RST=0;}uchar read_1302(uchar add) // 从1302读数据函数,指定读取数据来源地址{uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp);}。

下载提示
相似文档
正为您匹配相似的精品文档