DS 1302時鐘芯片的51單片機程序設計
- 2020 年 3 月 17 日
- 筆記
一、 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讀某地址數據函數