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