提問者:pouslaugj2013-11-02 00:00
51單片機控制ds1302時鐘芯片,8腳接備用電池,1腳接+5v電源,請問在c程序中如何處理,可以讓單片機在首次上電后對ds1302進行時間設置,第二次以后斷電上電就不再對1302進行時間設置了(如何跳過初始化時間這條語句?)?我目前的情況是,每次斷電上電,時間都是初試時間我希望d
這個簡單啊,DS1302不是有31字節的RAM嗎?你選擇任意一個或幾個空閑的字節單元,在初始設置時間的程序里加個判斷,如果RAM中的內容與你預設的特定標識內容相同,就直接退出不要設置時間,否則才進入設置時間程序。在設置時間程序的末尾加上一段代碼,將你選擇的空閑RAM單元寫入特定標識內容。 這樣的話,就可以避免你的問題了。另外,只要備份電池不耗盡,DS1302的實時時鐘就會一直保持運行,內部RAM的內容也會一直保持不會丟失。如果電池沒電了,RAM內容會丟失,但實時時鐘也會停止運行,此時再上電顯然應該重新設置時間。 但從另外一個角度講,雖然按我說得辦法可以解決你的問題,但你的這種用法本身是有些不對的。從一般使用的角度來講,應該提供按鍵操作來對DS1302的實時時鐘進行調整,否則時間不易準確設置,時鐘運行偏差也沒辦法修正,除非你會通過其它方式(比如通訊端口、網絡接口等)獲得實時時鐘信息,但如果你能夠通過這些方式獲得時鐘信息,那在上電時就沒有必要初始化一個時間了。所以我懷疑你可能對DS1302運行機制還存在認識誤區——如果沒有電源也沒有備用電池,DS1302的時鐘是不會正常運行的,。。
回答者:秋天的楓葉QT2016-11-02 00:00
如果確認晶振損壞,建議更換。
提問者:gujian75382013-07-02
小時寄存器(85h、84h)的位7用于定義 DS1302是運行于12小時 模式還是24小時模式。當為高時,選擇12小時模式。在12小時模式時, 位5是 ,當為1時,表示 PM。在24小時模式時,位5是第二個10小時 位。
提問者:linda880882014-09-18
檢查晶振,I2C驅動代碼,芯片手冊查看讀寫順序,注意12進制和24進制轉換,還有顯示部分。如果都OK還能出問題,要么是芯片壞了,要么是很初級的問題,找個會的人幫你調下吧。
提問者:q2894842852016-02-07
我給你個1302的吧,你參考下,1302初始化和讀寫部分都沒采用循環的,還是容易明白的
#include
提問者:mldir2013-08-18
void Set_RTC(void) //設定 日歷 { unsigned char i,*p,tmp,flag=0; flag = Read_Ds1302(0xc1); if(flag != 0
提問者:blissfulpuppy2013-06-09
BCD碼(16進制數)。參考下面的程序(取數后送1602顯示) //向LCM中填寫 年 數據 void lcm_w_yy(void){ //if(read_clock(0x8d) != yy){ yy =
提問者:sbgauge2013-05-01