微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 《手把手教你学51单片机-C语言版》之十五----实时时钟DS1302

《手把手教你学51单片机-C语言版》之十五----实时时钟DS1302

时间:11-19 来源:互联网 点击:

阻。

7

SCLK

输入引脚。SCLK是用来作为通信的时钟信号。DS1302这个引脚的内部含有一个40k的下拉电阻。

8

Vcc1

备用电源引脚。

DS1302电路的一个重点就是晶振电路,它所使用的晶振是一个32.768k的晶振,晶振外部也不需要额外添加其它的电容或者电阻了。时钟的精度,首先取决于晶振的精度以及晶振的引脚负载电容。如果晶振不准或者负载电容过大或过小,都会导致时钟误差过大。在这一切都搞定后,最终一个考虑因素是晶振的温漂。随着温度的变化,晶振的精度也会发生变化,因此,在实际的系统中,其中一种方法就是经常校对。比如我们所用的电脑的时钟,通常我们会设置一个选项“将计算机设置与internet时间同步”。选中这个选项后,一般过一段时间,我们的计算机就会和internet时间校准同步一次。

1.3.3DS1302寄存器介绍

DS1302的一条指令一个字节共8位,其中第7位(即最高位)固定为1,这一位如果是0的话,那写进去也是无效的。第6位是选择RAM还是CLOCK的,我前边说过,我们这里主要讲CLOCK时钟的使用,它的RAM功能我们不用,所以如果选择CLOCK功能,第6位是0,如果要用RAM,那第6位就是1。从第5到第1位,决定了寄存器的5位地址,而第0位是读写位,如果要写,这一位就是0,如果要读,这一位就是1。指令字节直观位分配如图15-9所示。

图15-9DS1302命令字节

DS1302时钟的寄存器,其中8个和时钟有关的,5位地址分别是0b00000~0b00111,还有一个寄存器的地址是01000,这是涓流充电所用的寄存器,我们这里不讲。在DS1302的数据手册里的地址,直接把第7位、第6位和第0位值给出来了,所以指令就成了0x80、0x81那些了,最低位是1,那么表示读,最低位是0表示写,如图15-10所示。

图15-10DS1302的时钟寄存器

寄存器0:最高位CH是一个时钟停止标志位。如果时钟电路有备用电源,上电后,我们要先检测一下这一位,如果这一位是0,那说明时钟芯片在系统掉电后,由于备用电源的供给,时钟是持续正常运行的;如果这一位是1,那么说明时钟芯片在系统掉电后,时钟部分不工作了。如果Vcc1悬空或者是电池没电了,当我们下次重新上电时,读取这一位,那这一位就是1,我们可以通过这一位判断时钟在单片机系统掉电后是否还正常运行。剩下的7位高3位是秒的十位,低4位是秒的个位,这里再提请注意一次,DS1302内部是BCD码,而秒的十位最大是5,所以3个二进制位就够了。

寄存器1:最高位未使用,剩下的7位中高3位是分钟的十位,低4位是分钟的个位。

寄存器2:bit7是1的话代表是12小时制,0代表是24小时制;bit6固定是0,bit5在12小时制下0代表的是上午,1代表的是下午,在24小时制下和bit4一起代表了小时的十位,低4位代表的是小时的个位。

寄存器3:高2位固定是0,bit5和bit4是日期的十位,低4位是日期的个位。

寄存器4:高3位固定是0,bit4是月的十位,低4位是月的个位。

寄存器5:高5位固定是0,低3位代表了星期。

寄存器6:高4位代表了年的十位,低4位代表了年的个位。请特别注意,这里的00~99指的是2000年~2099年。

寄存器7:最高位一个写保护位,如果这一位是1,那么是禁止给任何其它寄存器或者那31个字节的RAM写数据的。因此在写数据之前,这一位必须先写成0。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top