Arduino提高篇22—實時時鐘DS1302

很多電子愛好者都熱衷製作電子時鐘來練手,這些時鐘會使用數碼管、點陣屏、LCD液晶屏、OLED屏、TFT屏等顯示模塊,所使用的RTC時鐘芯片也各不相同,DS1302、DS3231、DS12C887等。通過單片機等MCU驅動RTC模塊,讀取時間數據並交給顯示模塊進行展示,還可以加入按鍵來調節時鐘,可以說是一個非常全面的練手項目。

本篇我們來學習DS1302的使用,通過庫函數來驅動DS1302獲取時間數據。

1. DS1302介紹

DS1302是使用非常廣泛的RTC芯片,它是DALLAS公司推出的涓流充電時鐘芯片,內部含有一個實時時鐘/日曆和31字節靜態RAM ,通過簡單的串行接口與單片機進行通信。

主要特性:

  • 實時時鐘具有能計算 2100 年之前的秒 分 時 日 日期 星期 月 年的能力 還有閏年調整的能力。
  • 31X8 位暫存數據存儲 RAM。
  • 串行 I/O 口方式使得管腳數量最少。
  • 寬範圍工作電壓 2.0-5.5V。
  • 讀/寫時鐘或RAM 數據時有兩種傳送方式單字節傳送和多字節傳送字符組方式。
  • 雙電源管用於主電源和備份電源供應。

管腳排列及描述

  • X1,X2:32.768KHz晶振引腳
  • GND:地
  • #RST:復位引腳
  • I/O:數據輸入/輸出引腳
  • SCLK:串行時鐘引腳
  • Vcc1:備用電源引腳,一般接鈕釦電池
  • Vcc2:主電源引腳

管腳配置

我們使用的DS1302模塊已經將DS1302時鐘芯片和晶振及鈕釦電池集中在一塊小板子上:

DS1302模塊

2. 安裝驅動庫

本篇使用DS1302庫來驅動DS1302,無需關心DS1302的讀寫時序及內部寄存器相關信息。DS1302的驅動庫也非常多,這裏使用msparks提供的庫,可以從GitHub上下載

將下載到的庫進行解壓,然後拷貝到Arduino IDE安裝目錄下的libraries文件夾下。

安裝庫

3. 實驗材料

  • Uno R3開發板
  • 配套USB數據線
  • 公對母杜邦線
  • DS1302模塊

4. 實驗步驟

1. 根據原理圖搭建電路圖。

DS1302模塊的VCC和GND連接Uno開發板的3.3V和GND。DS1302模塊的CLK、DAT、RST對應連接Uno開發板的4、3、2引腳。

實驗原理圖如下圖所示:

實驗原理圖

實物連接圖如下圖所示:

實物連接圖

2. 新建sketch,拷貝如下代碼替換自動生成的代碼並進行保存。

#include <DS1302.h>

DS1302 rtc(2, 3, 4); //對應DS1302的RST,DAT,CLK

void initRTCTime(void)//初始化RTC時鐘
{
  rtc.writeProtect(false); //關閉寫保護
  rtc.halt(false); //清除時鐘停止標誌
  Time t(2020, 4, 25, 21, 50, 50, 7); //新建時間對象 最後參數位星期數據,週日爲1,週一爲2以此類推
  rtc.time(t);//向DS1302設置時間數據
}

void printTime()//打印時間數據
{
  Time tim = rtc.time(); //從DS1302獲取時間數據
  char buf[50];
  snprintf(buf, sizeof(buf), "%04d-%02d-%02d %02d:%02d:%02d",
           tim.yr, tim.mon, tim.date,
           tim.hr, tim.min, tim.sec);

  Serial.println(buf);
}

void setup() {
  Serial.begin(9600);

  //新模塊上電需要設置一次當前時間,
  //下載完成後需屏蔽此函數再次下載,否則每次上電都會初始化時間數據
  initRTCTime();

}

void loop() {
  printTime();
  delay(1000);
}

3. 連接開發板,設置好對應端口號和開發板類型,進行程序下載。

程序下載

5. 實驗現象

打開串口監視器,波特率設置成與程序中一致的9600,會看到輸出時間數據。

實驗現象

由於我們的DS1302模塊帶有鈕釦電池來作爲備用電池,當模塊主供電Vcc掉電後,走時也不會停止。你可以將開發板斷電等待一些時間重新上電,再次打開串口監視器可以看到時間並沒有停止。


關注公衆號「TonyCode」,更多精彩內容分享。
回覆「1024」獲取1000G學習資料。
個人博客
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章