原创 ‖ DS1302解析-电子时钟的时钟来源

初学者最有爱好的便是DS1302时钟电路,由于它结合单片机最小体系就能做出来一个让你觉得最有用的规划,但实践运用起来并不容易,很多同学会遇到这样那样的问题。下面咱们就来说说DS1302的用法。

原创 ‖ DS1302解析-电子时钟的时钟来源

DS1302的特色

DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,能够经过串行接口与单片机进行通讯。实时时钟/日历电路供给秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可主动调整,时钟操作可经过AM/PM标志位决议选用24或12小时时刻格局。

浅显的说,DS1302是时钟芯片,那它就有计时的效果。它和咱们日常触摸的电子表差不多,能够对年月日、时分秒、星期计时。咱们能够用单片机往DS1302里边写入时刻进行时刻设置,也能够用单片机从DS1302中读取时刻,读出来的时刻数据咱们显示出来,这样咱们就能够完结了电子时钟的功用。

DS1302的封装

DS1302有两种封装,一种是DIP8的双列直插式,一种是SOP8贴片式。依据封装的姓名我就知道这芯片有8个引脚,引脚散布如图1:

图1

DS1302引脚功用

引脚号称号功用

1VCC2主电源

3X晶振

4GND电源地

5CE(注1)复位

6I/O数据输入输出

7SCLK串行时钟信号

8VCC1备用电源

VCC主电源引脚,,当Vcc2比Vcc1高0.2V以上时,DS1302由VCC2供电,当Vcc2低于Vcc1时,由Vcc1供电。

XX这两个引脚须要接一个32.768K的晶振,给DS1302供给一个基准。特别注意,要求这个晶振的引脚负载电容有必要是6pF,而不是要加6pF的电容。假如运用有源晶振的话,接到X1上即可,X2悬空。

GND,电源地。

CE(有些材料里写的是RST),DS1302的复位引脚。当读写DS1302的时期,这个引脚有必要是高电平,低电平表明不让芯片作业。

I/O,DS1302的数据输入输出口,这个引脚是一个双向通讯引脚,读写数据都是经过这个引脚完结。

SCLK,串行时钟信号,用来作为通讯的时钟信号。

VCC备用电源引脚。

DS1302的电路一个要点便是时钟电路,它所运用的晶振是一个32.768k的晶振,晶振外部也不须要额定增加其他的电容或许电阻电路,只须要晶振的引脚的负载电容为6pF。时钟的精度,首要取决于晶振的精度以及晶振的引脚负载电容。假如晶振禁绝或许负载电容过大过小,都会导致时钟差错过大。在这一切都搞定后,终究一个考虑要素是晶振的温漂。跟着温度的改变,晶振往往精度会发生改变,因而,在实践的体系中,其间一种办法便是常常校正。

寄存器简介

DS1302的寄存器(读时81h~8Dh,写时80h~8Ch)是寄存秒、分,小时、日、月、年、周数据的,寄存的数据格局为BCD码方式。它的内部时刻寄存器如下表:

上表是DS1302内部的7个与时刻、日期有关的寄存器图和一个写保护寄存器,咱们要做的便是将初始设置的时刻、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时刻和日期。现对这几个寄存器的阐明如下:

①、秒寄存器(81h、80h)的位7界说为时钟暂停标志(CH)。当初始上电时该方位为时钟振荡器中止,DS1302处于低功耗状况;只要将秒寄存器的该方位改写为0时,时钟才干开端运转,一般咱们在用的时期是在设置时刻完结后吧秒寄存器写入这样就发动了芯片的计时功用。

②、小时寄存器(85h、84h)的位7界说为DS1302是运转于12小时形式仍是24小时形式。当为1时,挑选12小时形式,为0时挑选24小时形式。在12小时形式时,位5是标志位,为0时表明AM,为1时表明PM。在24小时形式时,位5是第二个10小时位。

③、操控寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的时期对时钟和RAM的写操作之前,WP位有必要为0。当WP位为1时,写保护位避免对任一寄存器的写操作。也便是说在电路上电的初始态WP是这时是不能改写上面任何一个时刻寄存器的,只要首要将WP改写为才干进行其它寄存器的写操作。

其他的寄存器没有什么独特的阐明。关于DS1302芯片还有一个操控字,该操控字操控这芯片的读写操作。详细的内容如下:

如上表所示,位0便是读写位,当位0为1时,便是告知DS13下面是进行读出操作,而当位0为0时便是写入操作。

位0-位5是要进行操作的DS1302寄存器地址。

位6便是告知DS13是要对RAM进行操作仍是对时刻寄存器进行操作,0便是对时刻寄存器操作,一般咱们都是对时刻寄存器进行操作。

位7便是固定的1。

现在就知道为什么操控字80H是写秒寄存器,而81H是读秒寄存器了吧。80H换成二进制便是10000000。而81H的二进制便是100000一个是写操作,另一个是读操作嘛!

现在,咱们来总结下怎么对DS1302操作:

1)首要要经过8eH将写保护去掉,这样咱们才干将日期,时刻的初值写时各个寄存器。

2)然后就能够对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。一起也经过秒寄存器将位7的CH值改成这样DS1302就开端走时运转了。

3)将写保护寄存器再写为80H,避免误改写寄存器的值。

4)不断读取80H-8CH的值,将他们转化为十进制后显示出来就能够啦,之前咱们说过,DS1302读出的数据是BCD码,所以须要转化一下。

读写时序

上面提到的寄存器,操控字。终究都是须要单片机操控DS1302的引入写进或读出芯片的。那现在就说说这读写的时序问题。

物理上,DS1302的通讯接口由3个口线组成,即CE(有些材料写为RST),SCLK,I/O。其间CE(RST)从低电平变成高电平发动一次数据传输历程,SCLK是时钟线,I/O是数据线。详细的读写时序参阅下图,可是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号灵敏的,并且一般数据写入有用是在上升沿,读出有用是在下降沿(DS1302正是如此的,可是在芯片手册里没有清晰阐明),假如不是特别确认,则把程序规划成这样:平常SCLK坚持低电平,在时钟变化前设置数据,在时钟变化后读取数据,即数据操作总是在SCLK坚持为低电平的时期,相邻的操作之间距离有一个上升沿和一个下降沿。

DS1302的数据读写是经过I/O串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是操控字节,便是一个指令,告知DS1302是读仍是写操作,是对RAM仍是对CLOK寄存器操作,以及操作的地址。第二个字节便是要读或写的数据了。

咱们先看单字节写:在进行操作之前先得将CE(也可说是RST)置高电平,然后单片机将操控字的位0放到I/O上,当I/O的数据安稳后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低电平,再将操控字的位1放到I/O上,如此重复,将一个字节操控字的8个位传给DS1302。接下来便是传一个字节的数据给DS13当传完数据后,单片机将CE置为低电平,操作完结。

单字节读操作的一开端写操控字的历程和上面的单字节写操作是相同,可是单字节读操作在写操控字的最终一个位,SCLK还在高电平常,DS1302就将数据放到I/O上,单片机将SCLK置为低电平后数据锁存,单机机就能够读取I/O上的数据。如此重复,将一个字节的数据读入单片机。读与写操作的不同就在于,写操作是在SCLK低电平常单片机将数据放到IO上,当SCLK上升沿时,DS1302读取。而读操作是在SCLK高电平常DS1302放数据到IO上,将SCLK置为低电平后,单片机就可从IO上读取数据。

在单字节读操作时,在写操控字的最终一个位也便是位7时,DS1302已将它的寄存器数据位0放到IO上了,要是操控字的位7是0的话,DS1302就无法将它的随后的数据放到IO上了,所以操控字的7位为固定的原因在这里哦。

典型运用电路

发布于 2024-01-03 10:57
535
上一篇:让人又爱又恨的香椿,究竟是香的还是臭的?终于真相大白了 下一篇:买了两张床垫,终于搞清楚“网购”和“实体店”有什么区别了
目录

    推荐阅读