),高電平時(shí)為“非應(yīng)答”信號(hào)(A)。 


數(shù)據(jù)傳送位為I2C總線啟動(dòng)后或應(yīng)答信號(hào)啟動(dòng)后的第1~8個(gè)時(shí)鐘脈沖所對(duì)應(yīng)的一個(gè)字節(jié)的8位數(shù)據(jù)傳送。在脈沖高電平期間,數(shù)據(jù)進(jìn)行串行傳送,而在低電平期間為數(shù)據(jù)準(zhǔn)備,同時(shí)允許總線上的數(shù)據(jù)進(jìn)行電平變換。
(2)DS1307的數(shù)據(jù)訪問(wèn)格式 D
S1307的一次完整數(shù)據(jù)操作包括起始(S)、發(fā)送尋址字節(jié)、應(yīng)答、發(fā)送數(shù)據(jù)、應(yīng)答......直到終止(P)。DS1307有兩種操作模式:第一種模式為從器件接收模式(DS1307數(shù)據(jù)寫(xiě)入模式),其數(shù)據(jù)操作格式如圖3所示。第二種模式為從器件發(fā)送模式(DS1307數(shù)據(jù)讀出模式),其數(shù)據(jù)操作格式如圖4所示。
4.4 DS1307的寄存器結(jié)構(gòu)
DS1307中的時(shí)間寄存器地址編碼為00H-07H,而具有掉電保護(hù)的RAM寄存器的地址編碼為08H-3FH。當(dāng)?shù)刂分羔樦赶騌AM的最后一個(gè)地址3FH時(shí),若進(jìn)行多字節(jié)操作,則地址指針將會(huì)復(fù)位而指向00H,這樣原來(lái)存在00H的數(shù)據(jù)將會(huì)丟失。DS1307的各類(lèi)時(shí)間數(shù)據(jù)均以BCD碼的格式存貯在相應(yīng)的時(shí)間寄存器中,具體分配為:
00H:秒;01H:分;02H:小時(shí);03H;星期04H:日期;05H:月;06H:年;07H:控制字。
DS1307可運(yùn)行在12/24小時(shí)(AM/PM)模式下,并由時(shí)間控制器中的相應(yīng)位來(lái)進(jìn)行控制。
5 DS1307驅(qū)動(dòng)程序編制
在對(duì)DS1307進(jìn)行數(shù)據(jù)寫(xiě)入時(shí),應(yīng)先將日歷時(shí)鐘信息存放于單片機(jī)內(nèi)部從45H開(kāi)始的8個(gè)RAM單元,而從DS1307讀出的數(shù)據(jù)同樣需存放在其中。下面是根據(jù)本文電路編制的驅(qū)動(dòng)程序:
變量定義:










Delay_4:為延時(shí)4μs的子程序,可根據(jù)選用的主晶振的頻率編寫(xiě)
主調(diào)函數(shù);


6 結(jié)束語(yǔ)
本文提出了對(duì)DS1307硬件電路的改進(jìn)方案,同時(shí)設(shè)計(jì)了DS1307的驅(qū)動(dòng)程序,由于DS1307是I2C器件,所以本驅(qū)動(dòng)程序同樣也適用于其它I2C器件的驅(qū)動(dòng)。在使用此程序完全驅(qū)動(dòng)I2C器件24C256(32kEEPROM)時(shí),根據(jù)筆者的使用經(jīng)驗(yàn),設(shè)計(jì)時(shí)應(yīng)注意DS1307的VCC腳電壓一定要高于Vbat(后備電池)的1.5倍,否則可能會(huì)出現(xiàn)時(shí)鐘雖可繼續(xù)走動(dòng),但是DS1307將拒絕CPU的一切讀取和寫(xiě)入操作的現(xiàn)象





