欢迎来到深圳市毅驰电子科技有限公司官网!
解决方案
首页 ->解决方案 ->客户解决方案客户解决方案

RTC实时钟模块

发布时间:2011-05-25

    实时钟通常也被称为实时时钟,它能够向电子电路提供日期和时间信息,包括年、月、日、时、分、秒,被广泛应用在需要进行计时的场合中。许多实时钟电路还提供电池供电的方式,这样在发生掉电时仍能准确计时。通常说来,功能稍多一点的实时钟电路还会提供包括警报、看门狗,以及支持高精度要求的校准寄存器等附加功能。

    DS1307是一款实时种芯片,采用I2C协议与单片机通讯,而Arduino上正好有这一接口,因此连接起来就非常方便了。DS1307中有一个可编程波形输出口,它可以用来驱动LED小灯,或者作为中断来触发某些事件,不过用它去带一些大功率的东西的时候要注意。一般设计的这一款实时钟模块,将Ds1307的I2C接口和可编程波形输出接口SQW都连接出来了,不过一般情况下只会用到I2C接口来实现基本的时钟设置/读取功能。需要注意的是,该模块必须先安装上电池才可以正常工作。电池使用的是纽扣电池(型号CR1220),正极朝上:

CR1220加电池座主板.jpg

在电路连接上可以使用Arduino专用传感器扩展板V4,不过要将相应的跳线设置到IIC的位置上:

剩下的工作就是用4芯的I2C/COM连接线将传感器扩展板上的专用接口,与实时钟模块上的IIC(I2C其实就是IIC的缩写)端口连接起来了:

    硬件连接的工作完成之后,如何在Arduino里对该模块进行编程呢?上网搜索了一下,发现在Arduino上使用DS1307做为时钟芯片的玩家还真不少,而且还封装好了相应的Arduino库,实验时一般使用的是Google Code上的这个DS1307库,你也可以在网上下载其它的版本。将下载好的压缩文件解压缩到Arduino 0018的libraries目录下后,重新启动Arduino并用它自带的测试程序进行测试:

#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h> // written by  mattt on the Arduino forum and modified by D. Sjunnessonvoid setup()
{  Serial.begin(9600);

  RTC.stop();
  RTC.set(DS1307_SEC,1);        //set the seconds
  RTC.set(DS1307_MIN,23);     //set the minutes
  RTC.set(DS1307_HR,12);       //set the hours
  RTC.set(DS1307_DOW,4);       //set the day of the week
  RTC.set(DS1307_DATE,15);       //set the date
  RTC.set(DS1307_MTH,7);        //set the month
  RTC.set(DS1307_YR,10);         //set the year
  RTC.start();

}void loop()
{  Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
  Serial.print(":");  Serial.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
  Serial.print(":");  Serial.print(RTC.get(DS1307_SEC,false));//read seconds
  Serial.print("      ");                 // some space for a more happy life
  Serial.print(RTC.get(DS1307_DATE,false));//read date
  Serial.print("/");  Serial.print(RTC.get(DS1307_MTH,false));//read month
  Serial.print("/");  Serial.print(RTC.get(DS1307_YR,false)); //read year 
  Serial.println();  delay(1000);
}

    程序读起来应该不算困难,基本上就是使用RTC.set来对时钟进行设置,然后就可以通过RTC.get来读取相应的时间信息了,至于时钟怎么维护,那就是 DS1307 的工作了:)



文章转自网络,如有版权问题,请联系删除。

版权所有 深圳市毅驰电子科技有限公司版权所有  粤ICP备18038972号 
CR2032,CR2450,LIR1220,ICR18650,纽扣电池座 深圳毅驰电子