歡迎來到深圳市毅馳電子(zǐ)科技有限公司官網!
解決方案
首頁 ->解決方案 ->客戶解決方案客戶解決方案

RTC實時鍾模塊

發布時間:2011-05-25

    實時鍾通常也被稱為(wèi)實時時鍾,它能夠向電子(zǐ)電路提供日期和(hé)時間信息,包括年(nián)、月、日、時、分、秒,被廣泛應用在需要進行計時的(de)場合中。許多實時鍾電路還提供電池供電的(de)方式,這樣在發生掉電時仍能準确計時。通常說來,功能稍多一(yī)點的(de)實時鍾電路還會提供包括警報、看門狗,以及支持高(gāo)精度要求的(de)校準寄存器等附加功能。

    DS1307是一(yī)款實時種芯片,采用I2C協議與單片機通訊,而Arduino上正好有這一(yī)接口,因此連接起來就非常方便了。DS1307中有一(yī)個可(kě)編程波形輸出口,它可(kě)以用來驅動LED小燈,或者作為(wèi)中斷來觸發某些事件,不過用它去(qù)帶一(yī)些大功率的(de)東西的(de)時候要注意。一(yī)般設計的(de)這一(yī)款實時鍾模塊,将Ds1307的(de)I2C接口和(hé)可(kě)編程波形輸出接口SQW都連接出來了,不過一(yī)般情況下隻會用到I2C接口來實現基本的(de)時鍾設置/讀取功能。需要注意的(de)是,該模塊必須先安裝上電池才可(kě)以正常工作。電池使用的(de)是紐扣電池(型号CR1220),正極朝上:

CR1220加電池座主闆.jpg

在電路連接上可(kě)以使用Arduino專用傳感器擴展闆V4,不過要将相應的(de)跳線設置到IIC的(de)位置上:

剩下的(de)工作就是用4芯的(de)I2C/COM連接線将傳感器擴展闆上的(de)專用接口,與實時鍾模塊上的(de)IIC(I2C其實就是IIC的(de)縮寫)端口連接起來了:

    硬件連接的(de)工作完成之後,如(rú)何在Arduino裏對該模塊進行編程呢(ne)?上網搜索了一(yī)下,發現在Arduino上使用DS1307做(zuò)為(wèi)時鍾芯片的(de)玩家還真不少,而且還封裝好了相應的(de)Arduino庫,實驗時一(yī)般使用的(de)是Google Code上的(de)這個DS1307庫,你也可(kě)以在網上下載其它的(de)版本。将下載好的(de)壓縮文件解壓縮到Arduino 0018的(de)libraries目錄下後,重新啓動Arduino并用它自(zì)帶的(de)測試程序進行測試:

#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來對時鍾進行設置,然後就可(kě)以通過RTC.get來讀取相應的(de)時間信息了,至于時鍾怎麽維護,那就是 DS1307 的(de)工作了:)



文章(zhāng)轉自(zì)網絡,如(rú)有版權問題,請聯系删除。

版權所有 深圳市毅馳電子(zǐ)科技有限公司版權所有   
CR2032,CR2450,LIR1220,ICR18650,紐扣電池座 深圳毅馳電子(zǐ)