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