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