1、21、时钟 IC_DS1302 的应用之一基础知识2009-05-07 14:49在网上看了很久,发现初学者最有兴趣的就是 DS1302 时钟电路,也很自然,它是个做出来就让你觉得最实用的电路了,但实际上制做上并不简单,首先你要让你的显示部分(不管是数码管还是 LCD)调试通过。然后把 DS1302 接好,调试正确了才能在成功显示时间和日期。下面我们就来说说 DS1302 的用法。DS1302 的图如下:DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加 31 字节静态 RAM,采用 SPI 三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和 RAM 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。下面是标准的接线电路图: 各引脚功能如下:引脚号 名称 功能 Vcc2 主电源、 X1,X2 接 32768Hz 晶振 GND 地线 RST 复
2、位 I0 数据输入输出 SCLK 串行时钟 Vccl 后备电源DS1302 有关日历、时间的寄存器共有 12 个,其中有 7 个寄存器(读时81h8Dh,写时 80h8Ch)是存放秒、分,小时、日、月、年、周数据的,存放的数据格式为 BCD 码形式它的内部时间寄存器如下:这张表呢是 DS1302 内部的 7 个与时间、日期有关的寄存器图和一个写保护寄存器,我们要做的就是将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时间和日期。这几个寄存器的说明如下:1、秒寄存器(81h、80h)的位 7 定义为时钟暂停标志(CH)。当初始上电时该位置为 1,时钟振荡器停止,DS1302 处于低功耗状态;只有将秒寄存器的该位置改写为 0 时,时钟才能开始运行。2、小时寄存器(85h、84h)的位 7 用于定义 DS1302 是运行于 12 小时模式还是24 小时模式。当为高时,选择 12 小时模式。在 12 小时模式时,位 5 是 ,当为1 时,表示 PM。在 24 小时模式时,位 5 是第二个 10 小时位3、控制寄存器(8Fh、8Eh)的位 7 是写保护位(WP)
3、,其它 7 位均置为 0。在任何的对时钟和 RAM 的写操作之前,WP 位必须为 0。当 WP 位为 1 时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态 WP 是 1,这时是不能改写上面任何一个时间寄存器的,只有首先将 WP 改写为 0,才能进行其它寄存器的写操作。下面来说说如果对 DS1302 进行读写:上面的电路图可以看出,除了电源和接地,DS1302 只有三根线和单片机连接,SCLK、I/O 和 RST(有的也写成 CE),先看时序图:DS1302 的数据读写是通过 I/O 串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉 DS1302 是读还是写操作,是对 RAM 还是对 CLOK 寄存器操作,以及操作的地址。第二个字节就是要读或写的数据了。我们先看单字节写:在进行操作之前先得将 CE(也可说是 RST)置高电平,然后单片机将控制字的位 0 放到 I/O 上,当 I/O 的数据稳定后,将 SCLK 置高电平,DS1302 检测到 SCLK 的上升沿后就将 I/O 上的数据读取,然后单片机将SCLK 置为低电平,再将控
4、制字的位 1 放到 I/O 上,如此反复,将一个字节控制字的 8 个位传给 DS1302。接下来就是传一个字节的数据给 DS1302,当传完数据后,单片机将 CE 置为低电平,操作结束。单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK 还在高电平时,DS1302 就将数据放到 I/O 上,单片机将 SCLK 置为低电平后数据锁存,单机机就可以读取 I/O上的数据。如此反复,将一个字节的数据读入单片机。读与写操作的不同就在于,写操作是在 SCLK 低电平时单片机将数据放到 IO 上,当 SCLK 上升沿时,DS1302 读取。而读操作是在 SCLK 高电平时 DS1302 放数据到 IO 上,将 SCLK 置为低电平后,单片机就可从 IO 上读取数据。现在我们来看看控制字的内容:位 0 就是读写位,当位 0 为 1 时,就是告诉 DS1302,下面是进行读出操作,而当位 0 为 0 时就是写入操作。位 0位 5 是要进行操作的 DS1302 寄存器地址。位 6 就是告诉 DS1302,是要对 RAM 进行操作还是对 CLK 寄
5、存器进行操作,0 就是对时间寄存器操作,一般我们都是对时间寄存器进行操作。位 7 就是固定的 1。为什么是 1 呢。还记得上面说的单字节读操作吗?在写控制字的最后一个位也就是位 7 时,DS1302 已将它的寄存器数据位 0 放到 IO 上了,要是控制字的位 7 是 0 的话,DS1302 就无法将它的随后的数据放到 IO 上了。这样你现在就知道为什么控制字 80H 是写秒寄存器,而 80H 是读秒寄存器了吧!80H 换成二进制就是 10000000。而 81H 的二进制就是 10000001,一个是写操作,另一个是读操作嘛!好!我们现在来总结一下,如何对 DS1302 进行操作。首先要通过 8eH 将写保护去掉,这样我们才能将日期,时间的初值写时各个寄存器。然后就可以对 80H、82H、84H、86H、88H、8AH、8CH 进行初值的写入。同时也通过秒寄存器将位 7 的 CH 值改成 0,这样 DS1302 就开始走时运行了。将写保护寄存器再写为 80H,防止误改写寄存器的值。不断读取 80H8CH 的值,将它们格式化后显示到 LCD 或数码管上。类别:默认分类 | 添加到搜藏 | 浏览(718) | 评论 (3) 上一篇: 20、AT89C2051 烧写器的制做与调. 下一篇: 22、时钟IC_DS1302 应用之二.
《21、时钟ic_ds1302的应用之一……基础知识》由会员第***分享,可在线阅读,更多相关《21、时钟ic_ds1302的应用之一……基础知识》请在金锄头文库上搜索。