|
由于單片機自身定時器精度不高,導致一些需較精準定時功能的設計要借助時鐘芯片來完成�,F(xiàn)在使用較普遍的一種是DS1302芯片,并且相關教程已經(jīng)非常豐富。DS1307這款芯片也不乏愛好者們使用:DS1307是I2C總線接口的日歷時鐘芯片,片內(nèi)有8個特殊寄存器和56B的SRAM,是一種低功耗BCD碼的8引腳實時時鐘芯片。具體可以顯示年份,月份,星期,日期,時,分,秒,具有自動調(diào)節(jié)日期功能。 本人因之前要設計一款電子時鐘購得了一個DS1307的時鐘模塊,在網(wǎng)上尋找使用教程時發(fā)現(xiàn)大多教程都是將這個模塊的驅(qū)動程序夾雜在自己的完整程序里,對于一些程序閱讀能力不強的愛好者們很不友好。所以經(jīng)過查詢資料及實踐,我將DS1307時鐘模塊的驅(qū)動程序整理成了一個.H文件,方便廣大電子愛好者們使用。
關于這個模塊的使用方法:①接線,以我的程序為例:SCL與SDA管腳分別接單片機(STC15)的P17和P16用于傳輸數(shù)據(jù),SQ管腳接單片機的外部中斷0(P32),DS和BAT可不管。②程序:在project里導入DS1307.H文件,main函數(shù)中調(diào)用初始化函數(shù)init(),語句“ds1307_write_date(0xd0,0x07,0x10);”使SQ引腳輸出1Hz的方波;最后在主程序中寫外部中斷0的程序:“
Seconds=ds1307_read_date(0xd0,0);//返回函數(shù)r值秒
Minutes=ds1307_read_date(0xd0,1);
Hours=ds1307_read_date(0xd0,2);
Seconds=BCD_to_Decimal(Seconds);//BCD碼轉(zhuǎn)換成十進制
Minutes=BCD_to_Decimal(Minutes);
Hours=BCD_to_Decimal(Hours); ”,即每過1s就中斷,從模塊中讀取一次時間數(shù)據(jù)。如有其他問題,歡迎在評論區(qū)討論。
|
-
捕獲.PNG
(382.15 KB, 下載次數(shù): 245)
下載附件
2019-3-7 21:05 上傳
-
-
DS1307.rar
2019-3-7 21:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.45 KB, 下載次數(shù): 469, 下載積分: 黑幣 -5
評分
-
查看全部評分
|