引言 X1226具有時(shí)鐘和日歷的功能,時(shí)鐘依賴時(shí)、分、秒寄存器來跟蹤,日歷依賴日期、星期、月和年寄存器來跟蹤,日歷可正確顯示至2099年,并具有自動閏年修正功能。擁有強(qiáng)大的雙報(bào)警功能,能夠被設(shè)置到任何時(shí)鐘/日歷值上,精確度可到1秒。可用軟件設(shè)置1Hz、4096Hz或32768Hz中任意一個(gè)頻率輸出。 X1226提供一個(gè)備份電源輸入腳VBACK,允許器件用電池或大容量電容進(jìn)行備份供電。采用電容供電時(shí),用一個(gè)硅或肖特基二極管連接到Vcc和充電電容的兩端,充電電容連接到Vback管腳,注意不能使用二極管對電池充電(特別是鋰離子電池)。切換到電池供電的條件是Vcc=Vback-0.1V,正常操作期間,供電電壓Vcc必須高于電池電壓,否則電池電量將逐步耗盡。振蕩器采用外接32.768kH的晶體,產(chǎn)生的振蕩誤差可通過軟件對數(shù)字微調(diào)寄存器、模擬微調(diào)寄存器的數(shù)值進(jìn)行調(diào)節(jié)加以修正,避免了外接電阻和電容的離散性對精度的影響。4Kb的EEPROM可用于存儲戶數(shù)據(jù)。 電路組成及工作原理 X1226可與各種類型的的微控制器或微處理器接口,接口方式為串行的I2C接口。其中數(shù)據(jù)總線SDA是一個(gè)雙向引腳,用于輸入或輸出數(shù)據(jù)。其漏極開路輸出在使用過程中需要添加4.7~10kΩ的上拉電阻。本文介紹89C51單片機(jī)與X1226的接口方法,由于89C51單片機(jī)沒有標(biāo)準(zhǔn)的I2C接口,只能用軟件進(jìn)行模擬。 為了更直觀地看到時(shí)間的變化,采用8位LED數(shù)碼管顯示年、月、日或時(shí)、分、秒,用PS7219A驅(qū)動LED數(shù)碼管,數(shù)碼管選擇0.5英寸共陰極紅色或綠色LED數(shù)碼管。由于PS7219A器件內(nèi)含IMP810單片機(jī)監(jiān)控器件,復(fù)位輸出高電平有效,因此在使用51系統(tǒng)時(shí),無須添加監(jiān)控器件,使用PS7219A的復(fù)位輸出給51單片機(jī)復(fù)位即可,監(jiān)控電壓為4.63V。硬件設(shè)計(jì)原理圖如圖1所示。 在硬件通電調(diào)試過程中,不能用手去觸摸X1226的晶體振蕩器,否則可能會導(dǎo)致振蕩器停振,恢復(fù)振蕩器起振的方法是關(guān)閉電源(包括備份電源)后重新上電。另外需要說明的是,測量振蕩器時(shí),不要用示波器的探頭去測量X2的振蕩輸出,應(yīng)該用探頭測量PHZ/IRQ的振蕩輸出,以確定是否起振和振蕩頻率是否準(zhǔn)確,測量時(shí)建議在該腳加一個(gè)5.1kΩ的上拉電阻。 軟件設(shè)計(jì) X1226內(nèi)含實(shí)時(shí)時(shí)鐘寄存器(RTC)、狀態(tài)寄存器(SR)、控制寄存器(CONTROL)、報(bào)警寄存器(Alarm0、Alarm1)和客戶存儲數(shù)據(jù)的存儲器。由于實(shí)時(shí)時(shí)鐘寄存器和狀態(tài)寄存器需要進(jìn)行頻繁的寫操作,因此其存儲結(jié)構(gòu)為易失性SRAM結(jié)構(gòu)。其他寄存器均為EEPROM結(jié)構(gòu),寫操作次數(shù)通常在10萬次以上。X1226初始化程序框圖如圖2所示,子程序YS4的作用是延時(shí)4μs。 啟動條件子程序: SETB SDA LCALL YS4 SETB SCL LCALL YS4 CLR SDA LCALL YS4 CLR SCL LCALL YS4 RET 停止條件子程序: CLR SDA LCALL YS4 SETB SCL LCALL YS4 SETB SDA RET ● 寫操作 X1226初始化之后,單片機(jī)對X1226進(jìn)行開始條件的設(shè)置,在寫CCR或EEPROM之前,主機(jī)必須先向狀態(tài)寄存器寫02H,確認(rèn)應(yīng)答信號,確認(rèn)后寫入06H,再確認(rèn)應(yīng)答信號。確認(rèn)后啟動了寫操作,首先發(fā)送高位地址,然后發(fā)送低位地址。X1226每收到一個(gè)地址字節(jié)后,均會產(chǎn)生一個(gè)應(yīng)答信號。在兩個(gè)地址字節(jié)都收到之后,X1226等待8位數(shù)據(jù)。在收到8位數(shù)據(jù)之后,X1226再產(chǎn)生一個(gè)應(yīng)答,然后單片機(jī)產(chǎn)生一個(gè)停止條件來終止傳送。 X1226具有連續(xù)寫入的功能,每收到1字節(jié)后,響應(yīng)一個(gè)應(yīng)答,其內(nèi)部將地址加一。當(dāng)計(jì)數(shù)器達(dá)到該頁的末尾時(shí),就自動返回到該頁的首地址。這意味著單片機(jī)可從某一頁的任何位置開始向存儲器陣列連續(xù)寫入64字節(jié),或向CCR連續(xù)寫入8字節(jié)的數(shù)據(jù)。 寫入X1226數(shù)據(jù)子程序: MOV R5,#8 SEND1: MOV A,DATASE RLC A MOV DATASE,A MOV SDA,C SETB SCL LCALL YS4 CLR SCL LCALL YS4 DJNZ R5,SEND1 RET ● 讀操作 在上電時(shí),16位地址的默認(rèn)值為0000H。X1226初始化操作之后,單片機(jī)對X1226進(jìn)行開始條件的設(shè)置,在寫CCR或EEPROM之前,主機(jī)必須先向狀態(tài)寄存器寫02H,確認(rèn)應(yīng)答信號,確認(rèn)后寫入06H,再確認(rèn)應(yīng)答信號。確認(rèn)后啟動了寫操作,首先發(fā)送高位地址,然后發(fā)送低位地址。X1226每收到一個(gè)地址字節(jié)后,均會產(chǎn)生一個(gè)應(yīng)答信號。單片機(jī)發(fā)送另一個(gè)開始條件,將R/W位設(shè)置為1,接著接受8位數(shù)據(jù)。單片機(jī)終止讀操作時(shí),無需等待X1226的應(yīng)答信號,單片機(jī)即可設(shè)置停止條件。 讀出X1226數(shù)據(jù)子程序: MOVR5,#8 MOVDATARE,#0 SETBSDA CLR C READ1: SETB SCL LCALL YS4 MOV C,SDA CLR SCL MOV A,DATARE RLC A MOV DATARE,A LCALL YS4 DJNZ R5,READ1 RET ● 振蕩器頻率在線補(bǔ)償調(diào)節(jié) X1226集成了振蕩器補(bǔ)償電路,用戶可通過軟件在線對振蕩器頻率進(jìn)行微調(diào),這種微調(diào)通常針對兩種情況。一種情況是在25℃常溫下,對振蕩器因器件初始精度帶來的頻率偏差進(jìn)行補(bǔ)償;第二種情況是對因溫度引起的頻率漂移進(jìn)行補(bǔ)償。X1226內(nèi)部設(shè)有數(shù)字微調(diào)寄存器(DTR)和模擬微調(diào)寄存器(ATR),兩個(gè)寄存器均為非易失性寄存器。數(shù)字微調(diào)寄存器具有3位數(shù)字微調(diào)位,調(diào)節(jié)范圍為-30~+30×10-6。模擬微調(diào)寄存器具有6個(gè)模擬微調(diào)位,調(diào)節(jié)范圍為-37~+116×10-6。 對于因外界環(huán)境溫度變化引起的溫漂補(bǔ)償,要依據(jù)晶體的溫度系數(shù),在存儲器中建立補(bǔ)償參數(shù)表,不同廠家晶體的溫度系數(shù)是不一樣的,應(yīng)根據(jù)產(chǎn)品數(shù)據(jù)手冊進(jìn)行選擇。 為了能夠?qū)仄M(jìn)行補(bǔ)償,要求系統(tǒng)中設(shè)置一個(gè)溫度傳感器,并盡量讓它靠近X1226,這樣可以真實(shí)地反映振蕩器的溫度,原理圖如圖3所示。單片機(jī)首先通過系統(tǒng)溫度傳感器獲取環(huán)境溫度,并在補(bǔ)償參數(shù)表中獲取對應(yīng)的補(bǔ)償值,然后將補(bǔ)償數(shù)據(jù)填寫到相應(yīng)的微調(diào)寄存器中,就能實(shí)現(xiàn)溫漂補(bǔ)償?shù)哪康摹?br /> 由于X1226具有精密的振蕩器補(bǔ)償功能,因此非常適合于環(huán)境溫度變化較大的應(yīng)用場合,同時(shí)也降低了對晶體性能參數(shù)的要求。 |