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