實(shí)時(shí)時(shí)鐘電路DS1302的原理及應(yīng)用
1 引言
現(xiàn)在流行的串行時(shí)鐘電路很多,如ds1302、 ds1307、pcf8485等。這些電路的接口簡(jiǎn)單、價(jià)格低廉、使用方便,被廣泛地采用。本文介紹的實(shí)時(shí)時(shí)鐘電路ds1302是dallas公司的一種具有涓細(xì)電流充電能力的電路,主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。
2 ds1302的結(jié)構(gòu)及工作原理
ds1302 是美國(guó)dallas公司推出的一種高性能、低功耗、帶ram的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5v~5.5v。采用三線(xiàn)接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或ram數(shù)據(jù)。ds1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202的升級(jí)產(chǎn)品,與ds1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。
2.1 引腳功能及結(jié)構(gòu)
圖 1示出ds1302的引腳排列,其中vCC1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc1+0.2v時(shí),vcc2給ds1302供電。當(dāng)vcc2小于vcc1時(shí),ds1302由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復(fù)位/片選線(xiàn),通過(guò)把rst輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)ds1302進(jìn)行操作。如果在傳送過(guò)程中rst置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在vcc≥2.5v之前,rst必須保持低電平。只有在sclk為低電平時(shí),才能將rst置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說(shuō)明。sclk始終是輸入端。
2.2 ds1302的控制字節(jié)
ds1302 的控制字如圖2所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入ds1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出。
2.3 數(shù)據(jù)輸入輸出(i/o)
在控制指令字輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入ds1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。
2.4 ds1302的寄存器
ds1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表1。
此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內(nèi)容。 ds1302與ram相關(guān)的寄存器分為兩類(lèi):一類(lèi)是單個(gè)ram單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為c0h~fdh,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類(lèi)為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫(xiě)所有的ram的31個(gè)字節(jié),命令控制字為feh(寫(xiě))、ffh(讀)。
3 ds1302實(shí)時(shí)顯示時(shí)間的軟硬件
ds1302與cpu的連接需要三條線(xiàn),即sclk(7)、i/o(6)、rst(5)。圖3示出ds1302與89c2051的連接圖,其中,時(shí)鐘的顯示用LCD。
3.1 ds1302與cpu的連接
實(shí)際上,在調(diào)試程序時(shí)可以不加電容器,只加一個(gè) 32.768khz 的晶振即可。只是選擇晶振時(shí),不同的晶振,誤差也較大。另外,還可以在上面的電路中加入ds18b20,同時(shí)顯示實(shí)時(shí)溫度。只要占用cpu一個(gè)口線(xiàn)即可。 lcd還可以換成LED,還可以使用北京衛(wèi)信杰科技發(fā)展有限公司生產(chǎn)的10位多功能8段液晶顯示模塊lcm101,內(nèi)含看門(mén)狗(wdt)/時(shí)鐘發(fā)生器及兩種頻率的蜂鳴器驅(qū)動(dòng)電路,并有內(nèi)置顯示ram,可顯示任意字段筆劃,具有3-4線(xiàn)串行接口,可與任何單片機(jī)、IC接口。功耗低,顯示狀態(tài)時(shí)電流為2μa (典型值),省電模式時(shí)小于1μa,工作電壓為2.4v~3.3v,顯示清晰。
3.2 ds1302實(shí)時(shí)時(shí)間流程
圖 4示出ds1302的實(shí)時(shí)時(shí)間流程。根據(jù)此流程框圖,不難采集實(shí)時(shí)時(shí)間。下面結(jié)合流程圖對(duì)ds1302的基本操作進(jìn)行編程:
根據(jù)本人在調(diào)試中遇到的問(wèn)題,特作如下說(shuō)明:
ds1302 與微處理器進(jìn)行數(shù)據(jù)交換時(shí),首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位msb(d7)必須為邏輯1,如果d7=0,則禁止寫(xiě)ds1302,即寫(xiě)保護(hù);d6=0,指定時(shí)鐘數(shù)據(jù),d6=1,指定ram數(shù)據(jù);d5~d1指定輸入或輸出的特定寄存器;最低位lsb(d0)為邏輯0,指定寫(xiě)操作(輸入), d0=1,指定讀操作(輸出)。
在ds1302的時(shí)鐘日歷或ram進(jìn)行數(shù)據(jù)傳送時(shí),ds1302必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送結(jié)束之后,在下2個(gè)sclk周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個(gè)sclk周期的下降沿輸出數(shù)據(jù)字節(jié)。
ds1302與ram相關(guān)的寄存器分為兩類(lèi):一類(lèi)是單個(gè)ram單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為c0h~fdh,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;再一類(lèi)為突發(fā)方式下的ram寄存器,在此方式下可一次性讀、寫(xiě)所有的ram的31個(gè)字節(jié)。
要特別說(shuō)明的是備用電源 b1,可以用電池或者超級(jí)電容器(0.1f以上)。雖然ds1302在主電源掉電后的耗電很小,但是,如果要長(zhǎng)時(shí)間保證時(shí)鐘正常,最好選用小型充電電池??梢杂美鲜诫娔X主板上的3.6v充電電池。如果斷電時(shí)間較短(幾小時(shí)或幾天)時(shí),就可以用漏電較小的普通電解電容器代替。100μf就可以保證1小時(shí)的正常走時(shí)。ds1302在第一次加電后,必須進(jìn)行初始化操作。初始化后就可以按正常方法調(diào)整時(shí)間。
4 結(jié)論
ds1302 存在時(shí)鐘精度不高,易受環(huán)境影響,出現(xiàn)時(shí)鐘混亂等缺點(diǎn)。ds1302可以用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄。這種記錄對(duì)長(zhǎng)時(shí)間的連續(xù)測(cè)控系統(tǒng)結(jié)果的分析及對(duì)異常數(shù)據(jù)出現(xiàn)的原因的查找具有重要意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時(shí)采樣或定時(shí)采樣,沒(méi)有具體的時(shí)間記錄,因此,只能記錄數(shù)據(jù)而無(wú)法準(zhǔn)確記錄其出現(xiàn)的時(shí)間;若采用 單片機(jī) 計(jì)時(shí),一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢(xún)等,同樣耗費(fèi)單片機(jī)的資源,而且,某些測(cè)控系統(tǒng)可能不允許。但是,如果在系統(tǒng)中采用時(shí)鐘芯片ds1302,則能很好地解決這個(gè)問(wèn)題。