在許多特殊場合,如野外、無人值守的監(jiān)測站、井下、空中等,單片機系統(tǒng)往往只能采用電池供電。因此,如何最大限度地降低系統(tǒng)的功耗成了人們十分關(guān)注的問題。在多數(shù)情況下,單片機并不需要連續(xù)工作,例如定時采樣系統(tǒng)及監(jiān)視系統(tǒng)等,其時間間隔有時長達(dá)數(shù)分鐘到數(shù)天。因此,筆者采用I?2C實時時鐘芯片HYM8563與89C51設(shè)計了一種低功耗系統(tǒng)。 1 實時時鐘HYM8563 HYM8563是一款由武漢昊昱微電子有限公司生產(chǎn)的低功耗CMOS串行I2C實時時鐘/日歷芯片,圖1為其內(nèi)部結(jié)構(gòu)方框圖,圖2為其管腳定義和典型應(yīng)用的接線圖,表1為各管腳功能。 HYM8563提供可編程的時鐘輸出、定時器、報警器、中斷輸出和掉電檢測器,所有的地址和數(shù)據(jù)都通過I2C總線接口串行傳遞。最大總線速度為400kbits/s,工作電壓范圍為1.0~5.5V,休眠電流的典型值為0.25μA。由于HYM8563的中斷輸出及時鐘輸出均為開漏輸出,所以要外接上拉電阻(圖2)。 HYM8563內(nèi)部有16個可尋址的8位并行寄存器(參見表2),前兩個寄存器用作控制寄存器和狀態(tài)寄存器,02H~08H用于時鐘計數(shù)器(秒到年計數(shù)器),09H~0CH用于報警寄存器(定義報警條件),0DH用于控制CLKOUT管腳的輸出頻率,0EH和0FH分別用作定時器控制寄存器和定時器寄存器。秒、分鐘、小時、日、月、年、分鐘報警、小時報警、日報警寄存器的編碼格式為BCD 碼,星期和星期報警寄存器不以BCD格式編碼。 0FH為倒計數(shù)定時器寄存器,受定時器控制寄存器(0EH)控制,TD1、TD0用于設(shè)定定時器的頻率(4096Hz,64Hz,1Hz或1/60Hz),這樣可以設(shè)定不同時間間隔的定時值。TE設(shè)定定時器開或關(guān)。當(dāng)?shù)褂嫈?shù)值計為0時TF位置1。 TIE=1為定時中斷允許控制位,TI/TP=0為中斷信號低電平/脈沖方式選擇。 HYM8563共有四種報警方式,分別為小時報警(每小時的同一分鐘時刻報警)、日報警(每天的同一小時時刻報警)、月報警(每月的同一天時刻報警)和星期報警(每星期的同一天時刻報警)。HYM8563可在一個或多個報警寄存器寫入合法的分鐘、小時、日或星期數(shù)值并將它們相應(yīng)的AE(Alarm Enable)位置0,當(dāng)這些數(shù)值與當(dāng)前的分鐘、小時、日或星期數(shù)值相等,發(fā)生報警,標(biāo)志位AF被置1。 若要使HYM8563每隔一定時間產(chǎn)生一次中斷,則可使用定時器。置TE=0,在0EH中設(shè)定定時器的頻率,在0FH中置入定時間隔。同時設(shè)定TIE=1,TI/TP=0,這樣,當(dāng)報警器報警(或定時器倒計數(shù)結(jié)束)時,將設(shè)置中斷申請標(biāo)志位AF(或TF),并在 腳產(chǎn)生一個低電平作為中斷信號。中斷申請標(biāo)志位AF和TF只能用軟件清除。當(dāng)讀定時器時,返回當(dāng)前倒計數(shù)的數(shù)值。 HYM8563采用的是串行I2C總線接口,通過兩條線SDA和SCL在不同的芯片和模塊間傳遞信息。SDA為串行數(shù)據(jù)線,SCL為串行時鐘線,兩條線都必須用上拉電阻與正電源相連。數(shù)據(jù)只在總線不忙時才可傳送。 2 單片機控制電路 單片機可選用低損耗、高性能、CMOS八位微處理器80C51系列(圖中以AT89C52為例)。HYM8563的SDA和SCL與89C52的2個引腳連接,通過編程進(jìn)行I2C通信。R1、R2、R3為上拉電阻,S1為手動復(fù)位開關(guān),S2為允許喚醒單片機的按鍵。如有多個被允許的喚醒按鍵,可用多輸入端與門相與。HYM8563的 腳與允許的喚醒按鍵相與后連接到IC3A。IC3A(74LS123)為單穩(wěn)態(tài)觸發(fā)器,只要A腳有一低電平信號(邊沿觸發(fā))輸入,就會在Q端產(chǎn)生一高電平輸出,高電平的寬度由R6和C5決定。當(dāng)喚醒按鍵按下時,或者HYM8563警報器、定時器引起腳產(chǎn)生低電平時,都會在IC4A的輸出端產(chǎn)生低電平。該低電平觸發(fā)IC3A產(chǎn)生具有一定寬度的高電平,最終引起單片機復(fù)位,喚醒進(jìn)入掉電的單片機。 3 軟件部分的設(shè)計 圖3為系統(tǒng)電路圖。 圖4是主程序框圖。 由于單片機復(fù)位時,其電源引腳的電壓仍然保持不變,故單片機的片內(nèi)RAM的內(nèi)容不會丟失。因此我們可以通過軟件置片內(nèi)某一RAM(如30H)為某一特定值來區(qū)分是電源第一次通電時的啟動復(fù)位還是由HYM8563和喚醒按鍵引起的復(fù)位。若是由HYM8563中的報警器報警或定時器定時時間到引起的復(fù)位,我們可以通過訪問HYM8563中01H,判斷AF或TF是否為1來判斷是何種原因引起的中斷,并進(jìn)行相應(yīng)的處理。另外,一般按鍵時間都比較長,故單片機在復(fù)位后仍可通過掃描鍵盤來判斷是否有喚醒按鍵按下并進(jìn)行鍵處理。之后必須置HYM8563的AF或TF為0,TI/P=0,并設(shè)置選用報警器或定時器及相關(guān)值,以便HYM8563進(jìn)行下次中斷。89C52在處理完有關(guān)程序后,進(jìn)入掉電狀態(tài),等待下一次復(fù)位。 4 結(jié)論 以上介紹了應(yīng)用實時時鐘芯片HYM8563構(gòu)成低功耗單片機應(yīng)用系統(tǒng)的方法,HYM8563只占用了單片機的2根引腳,尚有30根I/O引腳可以根據(jù)實際的需要在系統(tǒng)中擴展接口電路。這種系統(tǒng)的節(jié)電效果與掉電時間的長短有關(guān),時間越長,效果越顯著。 |