您当前的位置:五五电子网电子知识电子知识资料小家电单片机控制的DS1216日历时钟 正文
单片机控制的DS1216日历时钟

单片机控制的DS1216日历时钟

点击数:7413 次   录入时间:03-04 11:49:50   整理:http://www.55dianzi.com   小家电

  在由微型计算机构成的控制系统中,常常需要由实时时钟提供采样、定时及各种操作的时间基准。实现实时时钟的方法有多种:以定时器实现的软时钟用于判断年、月、日等时间的程序,要占用大量的CPU时间,程序也较复杂,仅能在简单的系统中使用;由硬件实现的时钟为硬时钟。通常MSM5832为一种硬时钟芯片,能较好地解决实时时钟问题;但是MS5832芯片存在着数据存取速度低,难以与单片机直接连接,芯片要占用I/O口地址,要外接振荡电路和后备电池等缺点,因而使用不便。我们不久前使用了另一种硬时钟器件,即美国DALLAS半导体公司生产的DS1216器件,很好地解决了上述问题。现将该器件及其使用情况介绍一下。
  
  一、DS1216的性能和结构
  
  DS1216是一个具有日历时钟功能、非易失存储器控制电路和嵌入式锂电池的CMOS集成器件。它封装在28脚0.6英寸宽的双列直插式外壳中;上面还带有一个28脚插座,可以插入一片2k×8或8k×8的CMOS静态RAM(对DS1216C来说,可插入8k×8或32k×8的CMOS RAM)。除厚度略大以外,其余尺寸与一块RAM芯片相似。
  
  DS1216内部包含一个切换开关,使芯片能分别从外部电源或内部电池获得供电,该开关的自身压降低于0.2 V。它内部的失压控制电路能监视外部电源VCC的变化。当Vcc下降到4. 25 V以下时,它能控制切换开关动作,将芯片转换成由内部电池供电,同时禁止对RAM芯片的任何写操作,从而可以保证其RAM中的数据不会丢失。

  DS1216具有日历时钟功能,能提供1/100秒、秒、分、时、星期、日期、月和年等信号,精度高于±1 min/月。在年月信号控制下,它能自动对每月天数进行调整,包括闰年调整。时钟可以运行于24小时制或带上下午指示的12小时制。
  
  DS1216的引脚见图2- 43。日历时钟部分只使用了引脚20、26和28,其余引脚均直接与插在上面的RAM芯片相连。26、28脚分别为24脚和28脚RAM芯片的电源,由片内开关控制。20脚为片选信号输入端。与日历时钟工作有关的引脚还有1脚(RESET)、22脚(输出允许)、27脚(写允许)和11脚(数据输入/输出的第0位)。DS1216内部有8个日历时钟信息寄存器(图2- 44),每个寄存器为8位,分别存储从1/100秒到年的信息,可以对这些寄存器进行读/写操作。读操作用于读出当时的时间信息,写操作则用于更新、修改保存的日历时钟信息。寄存器中的数据以BCD码形式保存。其中小时寄存器R3的第7位D7用于选择12小时或24小时制工作方式:当D7=1时,选择12小时制工作方式,这时R3的第5位D5表示上午(D5=O)或下午(D5=1);当D7 =0时,表示使用24小时制,这时Ds位为10位数的第2位代码(用于20~23小时)。


  
  星期寄存器R4的第4位D4和第5位Ds分别用于复位和振荡器的控制。D4位控制RESET信号(引脚1)。当D4=1时,引脚1的输入信号不起作用;当D4 =0时,引脚1上输入的低电平可以保持DS1216中时间寄存器的数值而禁止对其进行读/写操作。D5控制振荡器的工作,出厂时,该位被置为l,停止振荡器的工作;当该位被置为零时,振荡器开始工作,为日历时钟提供时间基准值。


  
  由此可见,DS1216器件内部包含了振荡电路和后备电池,在它上面插入CMOS RAM以后,可以保持RAM中的数据,停电时也不丢失。它还可以直接插在线路板上原来插RAM的插座中,不必另外占用线路板空间,因此使用特别方便。
  
  二、DS1216的读/写操作
  
  由于DS1216日历时钟与RAM共同使用一个插座,因此对日历时钟进行读/写操作必须严格按照一定的步骤进行。此外,日历时钟的数据传送只能通过数据的第0位DQo进行,因此整个读/写过程必须以串行方式进行。
  
  一般情况下,对DS1216器件任一地址进行的读/写操作都是访问数据存储器RAM单元。为了对日历时钟进行读/写,必须首先对该芯片的任一存储单元进行一次读操作,以开始读/写过程。接着进入连续64个写周期,向DS1216写入8字节的识别码,每写入一位,DS1216即与内部比较寄存器中寄存的模式数据进行比较:若比较正确,则继续读入下一个识别码;若比较不正确或在64个周期中出现了一个读周期,则比较过程停止,读入的数据被略去。以十六进制形式表示的64位识别码为C5、3A、A3、5C、C5、3A、A3、5C。这样组合的数据可以保证误码率低于10 -13。
  
  上述识别码的写入是针对日历时钟进行的,其有效位仅为DQo位。但由于系统是通过向RAM单元写入数据指令来实现这一操作的,为了不影响RAM中的数据,可以在RAM中指定某一单元(例如最高地址单元)专供日历时钟使用,以免产生数据的混淆。
  
  当64位识别码比较正确后,就可对DS1216内部的8个寄存器进行读/写操作。若要对寄存器的数据进行修改,则可用串行方式从DQo写入从1/100秒到年的全部数据。注意写入的数据必须将12/24小时、RESET、振荡器控制等有关位置置以适当的值。数据写入时,低位在前,共需连续的64个写周期。当需要从DS1216读出日历时间信息时,可连续执行64个读周期,并将从DQo位读得的数装配成8字节的数据,即可获得年、月、日、星期、时、分、秒和1/100秒等信号。
  
  对日历时间信号的读/写操作必须以寄存器为单位。通常对8个寄存器同时进行,即从Ro的Do位到R7的D7位;否则试图对某一寄存器中的某一位进行读/写操作将会得到错误的结果。
  
  图2 - 45为DS1216的读/写时序,表2-3为DS1216交流电参数。由图2- 45可见,读/写所需的时间均为纳秒级,因此完全可以与8031之类的单片机相匹配。

三、硬件连接

  由于DS1216无需另外占用空间,因此对任何具有数据存储器RAM的微机系统,都不必为硬件作任何改动。图2 - 46所示为实际用于8031单片机系统时的情况。图中数据RAM的地址范围为OOOOH~1FFFH。




本文关键字:单片机  日历  小家电电子知识资料 - 小家电