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讀某地址數據函數