DS1302时钟芯片资料_第1页
DS1302时钟芯片资料_第2页
DS1302时钟芯片资料_第3页
DS1302时钟芯片资料_第4页
DS1302时钟芯片资料_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DS1302DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM采用SPI三线接口与CPUS行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。CCZ 匸X1 EX2 CGND匸1S2 vccl27J SCLK35I/O45F面是标准的接线电路图:引脚功能:引脚号jT2、345678名 称Vcc2XI、X2GNDR

2、STI/OSCLKVcc1功能主电源接32.768Hz晶振接地复位数据库串行时钟备用电源存放秒、分,小时、日、月、年、周数据的,存放的数据格式为BCD码形式它的内部时间寄存器如下:读再存器写蚕:S器BIT 7BITSBITSBIT 4B订3BJT2BIT 1BITO范El61 heohCH10秒秒oc曲83hB2h1C分10-5985hB4h12/2 lA11时时1-120-23u KVPMJ.li66h0010 0613189hB&h00010 同月1-12SBh8Ah060001-7 8Dh8Ch10年00-998FhSEhWPC000000将初始设置的时间、日期数据写入这几个寄存器,然后

3、再不断地读取这几个寄存器来获取 实时时间和日期。这几个寄存器的说明如下:1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH。当初始上电时该位置为1,时 钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为 0时,时钟才能开 始运行。2、控制寄存器(8Fh、8Eh)的位7是写保护位(WP,其它7位均置为0。在任何的对时钟 和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态 WP是 1,这时是不能改写上面任何一个时间寄存器的,只有首 先将WF改写为0,才能进行其它寄存器的写操作。3、控制寄存器(8Fh、8E

4、h)的位7是写保护位(WP,其它7位均置为0。在任何的对时钟 和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态 WP是 1,这时是不能改写上面任何一个时间寄存器的,只有首 先将WF改写为0,才能进行其它寄存器的写操作。下面来说说如果对DS1302进行读写:上面的电路图可以看出,除了电源和接地,DS1302只有三根线和单片机连接,SCLK I/O和RST(有的也写成CE,先看时序图:单字节读Q一-一-1a ;1 1iib41厂u4-nTTLTLTLTL 二*1 !111AQAl A2 iA4 R/C 1 X DO DI I WD3

5、 D4 D5SCLKI/O1AO I 阳 I A2 人3 闪財刖H 1X1 I D2 | D3 I 04D5 | D6 D?DS1302的数据读写是通过I/O串行进行的。当进行一次读写操作时最少得读写两个字节, 第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作,以及操作的地址。第二个字节就是要读或写的数据了。我们先看单字节写:在进行操作之前先得将 CE(也可说是RST置高电平,然后单片机将 控制字的位0放到I/O上,当I/O的数据稳定后,将SCLKS高电平,DS1302检测到SCLK的 上升沿后就将I/O上的数据读取,然后单片机将SCLKS

6、为低电平,再将控制字的位1放到I/O 上,如此反复,将一个字节控制字的8个位传给DS1302接下来就是传一个字节的数据给 DS1302 当传完数据后,单片机将CE置为低电平,操作结束。单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK还在高电平时,DS1302就将数据放到I/O上,单片机将SCLK 置为低电平后数据锁存,单机机就可以读取I/O上的数据。如此反复,将一个字节的数据读入 单片机。读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上,当SCLK上升沿时,DS1302卖取。而读操作是在 SCLK高电平时DS

7、1302放数据到IO上,将SCLK 置为低电平后,单片机就可从IO上读取数据。现在我们来看看控制字的内容:76543210RAM阳A3A2AlAORD7TKW位0就是读写位,当位0为1时,就是告诉DS1302下面是进行读出操作,而当位 0为0 时就是写入操作。位0 位5是要进行操作的DS1302寄存器地址。位6就是告诉DS1302是要对RAM进行操作还是对CLK寄存器进行操作,0就是对时间寄存器 操作,一般我们都是对时间寄存器进行操作。位7就是固定的1。为什么是1呢。还记得上面说的单字节读操作吗?在写控制字的最后一个位也就是位7时,DS1302已将它的寄存器数据位0放到10上了,要是控制字的位

8、7是0的话, DS1302就无法将它的随后的数据放到10上了。这样你现在就知道为什么控制字 80H是写秒寄存器,而80H是读秒寄存器了吧! 80H换成 二进制就是10000000。而81H的二进制就是10000001, 一个是写操作,另一个是读操作嘛! 好!我们现在来总结一下,如何对 DS1302进行操作。 首先要通过8eH将写保护去掉,这样我们才能将日期,时间的初值写时各个寄存器。 然后就可以对80H 82H 84H 86H 88H 8AH 8CH进行初值的写入。同时也通过秒寄存器 将位7的CH值改成0,这样DS1302就开始走时运行了。 将写保护寄存器再写为80H,防止误改写寄存器的值。

9、不断读取80H- 8CH的值,将它们格式化后显示到 LCD或数码管上。C语言程序案例/*DS1302有关子函数 *写一个字节void write_byte(uchar dat)ACC=dat;/ACC为累加器寄存器RST=1;for(a=8;a0;a-)/从低位把数据dat 一位一位的送到I/O传送IO=ACCA0;/IO是DS1302的一个接口,用和单片机交互数据SCLK=0;SCLK=1;ACC=ACC1;uchar read_byte() /读一个字节RST=1;for(a=8;a0;a-)ACC7=IO;SCLK=1;SCLK=O;ACC=ACC1;return (ACC);void write_1302(uchar add,uchar dat)/向1302芯片写函数,指定写入地址,数据RST=0;SCLK=0;RST=1;write_byte(add);先写控制字,选择寄存器write_byte(dat);给寄存器赋值SCLK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论