歡迎來(lái)到深圳市毅馳電子科技有限公司官網(wǎng)!
解決方案
首頁(yè) ->解決方案 ->客戶(hù)解決方案客戶(hù)解決方案

RTC實(shí)時(shí)鐘模塊

發(fā)布時(shí)間:2011-05-25

    實(shí)時(shí)鐘通常也被稱(chēng)為實(shí)時(shí)時(shí)鐘,它能夠向電子電路提供日期和時(shí)間信息,包括年、月、日、時(shí)、分、秒,被廣泛應(yīng)用在需要進(jìn)行計(jì)時(shí)的場(chǎng)合中。許多實(shí)時(shí)鐘電路還提供電池供電的方式,這樣在發(fā)生掉電時(shí)仍能準(zhǔn)確計(jì)時(shí)。通常說(shuō)來(lái),功能稍多一點(diǎn)的實(shí)時(shí)鐘電路還會(huì)提供包括警報(bào)、看門(mén)狗,以及支持高精度要求的校準(zhǔn)寄存器等附加功能。

    DS1307是一款實(shí)時(shí)種芯片,采用I2C協(xié)議與單片機(jī)通訊,而Arduino上正好有這一接口,因此連接起來(lái)就非常方便了。DS1307中有一個(gè)可編程波形輸出口,它可以用來(lái)驅(qū)動(dòng)LED小燈,或者作為中斷來(lái)觸發(fā)某些事件,不過(guò)用它去帶一些大功率的東西的時(shí)候要注意。一般設(shè)計(jì)的這一款實(shí)時(shí)鐘模塊,將Ds1307的I2C接口和可編程波形輸出接口SQW都連接出來(lái)了,不過(guò)一般情況下只會(huì)用到I2C接口來(lái)實(shí)現(xiàn)基本的時(shí)鐘設(shè)置/讀取功能。需要注意的是,該模塊必須先安裝上電池才可以正常工作。電池使用的是紐扣電池(型號(hào)CR1220),正極朝上:

CR1220加電池座主板.jpg

在電路連接上可以使用Arduino專(zhuān)用傳感器擴(kuò)展板V4,不過(guò)要將相應(yīng)的跳線(xiàn)設(shè)置到IIC的位置上:

剩下的工作就是用4芯的I2C/COM連接線(xiàn)將傳感器擴(kuò)展板上的專(zhuān)用接口,與實(shí)時(shí)鐘模塊上的IIC(I2C其實(shí)就是IIC的縮寫(xiě))端口連接起來(lái)了:

    硬件連接的工作完成之后,如何在Arduino里對(duì)該模塊進(jìn)行編程呢?上網(wǎng)搜索了一下,發(fā)現(xiàn)在Arduino上使用DS1307做為時(shí)鐘芯片的玩家還真不少,而且還封裝好了相應(yīng)的Arduino庫(kù),實(shí)驗(yàn)時(shí)一般使用的是Google Code上的這個(gè)DS1307庫(kù),你也可以在網(wǎng)上下載其它的版本。將下載好的壓縮文件解壓縮到Arduino 0018的libraries目錄下后,重新啟動(dòng)Arduino并用它自帶的測(cè)試程序進(jìn)行測(cè)試:

#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);
}

    程序讀起來(lái)應(yīng)該不算困難,基本上就是使用RTC.set來(lái)對(duì)時(shí)鐘進(jìn)行設(shè)置,然后就可以通過(guò)RTC.get來(lái)讀取相應(yīng)的時(shí)間信息了,至于時(shí)鐘怎么維護(hù),那就是 DS1307 的工作了:)



文章轉(zhuǎn)自網(wǎng)絡(luò),如有版權(quán)問(wèn)題,請(qǐng)聯(lián)系刪除。

版權(quán)所有 深圳市毅馳電子科技有限公司版權(quán)所有  粵ICP備18038972號(hào) 
CR2032,CR2450,LIR1220,ICR18650,紐扣電池座 深圳毅馳電子