DS 1302時鐘晶片的51單片機程式設計

  • 2020 年 3 月 17 日
  • 筆記

今天我們來講的是時鐘晶片DS1302.在之前的文章中已經簡單介紹過這塊晶片的原理,在此我們主要講的是程式設計部分。關於DS1302的一個簡介大家可以自行百度,在此小代就不做過多的說明。

一、 DS1302時鐘晶片的原理

DS1302是美國推出的一片帶有RAM的實時時鐘晶片,它能對年月日周,時分秒進行技術,具有閏年補償那功能,動作電壓2.5-5.5V,採用三線介面和MCU連接。計時的時鐘來源為外接的32.768K晶振產生。三線介面分別為RST、IO和SCLK。RST是複位/片選訊號,當RST為高電平是,允許DS1302進行操作,在傳送數據過程中RST置為低電平則會終止此次數據的傳送,IO變為高阻態。IO為串列數據輸入輸出埠,SCLK為串列傳輸的時鐘訊號線,只有在SCLK為低電平是,才能將RST置為高電平。

DS1302內部有14個和時間相關的暫存器,還有2個控制暫存器,還有31個RAM單元,本文我們只對和時間相關的暫存器做介紹。

具體請看下錶

DS102晶片內部暫存器

在以上表格中需注意:

1、秒暫存器的最高位CH為時鐘停止位,為0時振蕩器工作,為1是停止。

2、時暫存器的最高位是12小時制和24小時制的選擇位,此位為1是12小時制,此時第5位AP=1位下午,AP=0為上午,反之亦然。

DS1302的串列數據傳輸是從低位開始的,不管是讀操作還是寫操作。具體看時序圖:

DS1302時序圖

我們來總結下如何對DS1302操作:

1)首先要通過8eH將防寫去掉,這樣我們才能將日期,時間的初值寫時各個暫存器。

2)然後就可以對80H、82H、84H、86H、88H、8AH、8CH進行初值的寫入。同時也通過秒暫存器將位7的CH值改成0,這樣DS1302就開始走時運行了。

3)將防寫暫存器再寫為80H,防止誤改寫暫存器的值。

4)不斷讀取80H-8CH的值,將他們轉化為十進位後顯示出來就可以啦,之前我們說過,DS1302讀出的數據是BCD碼,所以需要轉換一下。

二、DS1302的介面電路

DS1302介面電路

三、DS1302的C51程式設計

此處提供的程式主要是DS1302晶片的讀寫操作的驅動程式,完整程式將會在後面的教程里提供。(小代提供的程式保證是源碼,可完全運行的源碼,將會在影片教程中全部講解,在此提供圖片形式程式碼,需要請自行動手敲進去,小代不提倡初學直接來複制粘貼)。

DS1302初始化函數

DS1302讀操作函數

DS1302寫操作函數

DS1302寫數據到某個地址函數

DS1302讀某地址數據函數