DS1302的工作原理
DS1302工作時(shí)為了對(duì)任何數(shù)據(jù)傳送進(jìn)行初始化,需要將復(fù)位腳(RST)置為高電平且將8位地址和命令信息裝入移位寄存器。數(shù)據(jù)在時(shí)鐘(SCLK)的上升沿串行輸入,前8位指定訪問地址,命令字裝入移位寄存器后,在之后的時(shí)鐘周期,讀操作時(shí)輸出數(shù)據(jù),寫操作時(shí)輸出數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8(8位地址+8位數(shù)據(jù)),在多字節(jié)方式下為8加最多可達(dá)248的數(shù)據(jù)。
DS1302的寄存器和控制命令
對(duì)DS1302的操作就是對(duì)其內(nèi)部寄存器的操作,DS1302內(nèi)部共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器以外的寄存器。日歷、時(shí)間寄存器及控制字如表1所示:
寄存器名稱 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | RAM/CK | A4 | A3 | A2 | A1 | A0 | RD/W | |
秒寄存器 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
分寄存器 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | |
小時(shí)寄存器 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | |
日寄存器 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | |
月寄存器 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | |
星期寄存器 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | |
年寄存器 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | |
寫保護(hù)寄存器 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | |
慢充電寄存器 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | |
時(shí)鐘突發(fā)寄存器 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
表1:日歷、時(shí)鐘寄存器與控制字對(duì)照表
最后一位RD/W為“0”時(shí)表示進(jìn)行寫操作,為“1”時(shí)表示讀操作。
DS1302內(nèi)部寄存器列表如表2所示:
寄存器名稱 | 命令字 | 取值范圍 | 各位內(nèi)容 | ||||||||
寫 | 讀 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
秒寄存器 | 80H | 81H | 00-59 | CH | 10SEC | SEC | |||||
分寄存器 | 82H | 83H | 00-59 | 0 | 10MIN | MIN | |||||
小時(shí)寄存器 | 84H | 85H | 01-12或00-23 | 12/24 | 0 | A | HR | HR | |||
日期寄存器 | 86H | 87H | 01-28,29,30,31 | 0 | 0 | 10DATE | DATE | ||||
月份寄存器 | 88H | 89H | 01-12 | 0 | 0 | 0 | 10M | MONTH | |||
周寄存器 | 8AH | 8BH | 01-07 | 0 | 0 | 0 | 0 | 0 | DAY | ||
年份寄存器 | 8CH | 8DH | 00-99 | 10YEAR | YEAR |
表2:DS14302內(nèi)部主要寄存器分布表
DS1302內(nèi)部的RAM分為兩類,一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元為一個(gè)8位的字節(jié),其命令控制字為COH~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。
我們現(xiàn)在已經(jīng)知道了控制寄存器和RAM的邏輯地址,接著就需要知道如何通過外部接口來訪問這些資源。單片機(jī)是通過簡(jiǎn)單的同步串行通訊與DS1302通訊的,每次通訊都必須由單片機(jī)發(fā)起,無論是讀還是寫操作,單片機(jī)都必須先向DS1302寫入一個(gè)命令幀,這個(gè)幀的格式如表1所示,最高位BIT7固定為1,BIT6決定操作是針對(duì)RAM還是時(shí)鐘寄存器,接著的5個(gè)BIT是RAM或時(shí)鐘寄存器在DS1302的內(nèi)部地址,最后一個(gè)BIT表示這次操作是讀操作抑或是寫操作。
物理上,DS1302的通訊接口由3個(gè)口線組成,即RST,SCLK,I/O。其中RST從低電平變成高電平啟動(dòng)一次數(shù)據(jù)傳輸過程,SCLK是時(shí)鐘線,I/O是數(shù)據(jù)線。具體的讀寫時(shí)序參考圖5,但是請(qǐng)注意,無論是哪種同步通訊類型的串行接口,都是對(duì)時(shí)鐘信號(hào)敏感的,而且一般數(shù)據(jù)寫入有效是在上升沿,讀出有效是在下降沿(DS1302正是如此的,但是在芯片手冊(cè)里沒有明確說明),如果不是特別確定,則把程序設(shè)計(jì)成這樣:平時(shí)SCLK保持低電平,在時(shí)鐘變動(dòng)前設(shè)置數(shù)據(jù),在時(shí)鐘變動(dòng)后讀取數(shù)據(jù),即數(shù)據(jù)操作總是在SCLK保持為低電平的時(shí)候,相鄰的操作之間間隔有一個(gè)上升沿和一個(gè)下降沿。
圖5 DS1302的命令字結(jié)構(gòu)
DS1302的軟硬件設(shè)計(jì)實(shí)例
本例將實(shí)現(xiàn)對(duì)DS1302的讀寫操作,將時(shí)鐘數(shù)據(jù)在LED數(shù)碼管上顯示出來。調(diào)試時(shí)將功能選擇開關(guān)調(diào)到DS1302的狀態(tài)上。
圖6 DS1302實(shí)驗(yàn)演示圖
硬件原理圖
圖10-46 硬件原理圖
程序流程圖
圖10-47 軟件流程圖
聯(lián)系客服