PIC16C55單片機控制多用電子鐘
——
一、工作原理
電子鐘電路見圖1。
RB7口是定時指示端,在定時開期間輸出高電平,驅動V1發光,該口也可經緩沖作定時輸出口;RB6是雙限觸發控制的定時輸出口,其工作方式是:在RB7高電平期間,若RB1為高電平,則RB6輸出高電平;若RB0為高電平,RB6輸出低電平;若RB1、RB0同為低電平,RB6保持原態;同為高電平時,RB6輸出低電平。RB5、RB4用于驅動脈沖繼電器,RB6上升沿觸發RB5輸出高電平開脈沖;在RB6下降沿觸發RB4時,RB4端輸出高電平關脈沖,開/關脈沖的持續時間均為125ms。
RB3是消隱控制器,接高電平(即SK1閉合)時,顯示屏及秒閃正常;否則,顯示消隱。顯示消隱時,時鐘及各控制邏輯都正常運行,如忽略RB4至RB7各口的驅動電流,則在3V供電時,整機電流不足20μA,即兩節5號電池可用數月!RB2選擇數碼管極性,RB2為低電平,使用共陰LED;RB2為高電平,則用共陽LED。數碼管的極性是在上電初始化時,根據RB2口狀態確定的,工作過程中改變RB2的電平則不起作用。
本機設S1~S4四個按鍵,S1是功能選擇鍵,S2是小時增量調整,S3是分鐘增量,S4用于分鐘減量調節,其使用方法為:
上電時,RB5至RB7均為低電平,RB4端送出一個關脈沖,使SK1閉合,整機正常顯示、工作,RC7口送出秒閃脈沖,RC6~RC0送字段碼。RA3~RA0分別為10時、時、10分、分位的位碼輸出。這時,按一下S2或S3(時增量/分增量鍵),可使RB7端置位或復位。
在正常走時期間,秒閃正常;在校對或設置定時時,秒停閃。例如:在正常走時期間,按一下S1鍵,秒閃停止,屏幕顯示J-,表示可以校對時間。這時再按S2~S4中任一鍵,屏幕顯示現在時間,但秒不閃,此刻可按S2~S4校對時鐘。再次按S1,屏幕顯示1∪,表示可以設定第一次開時間,此時按S2~S4對時間進行查看及設置。繼續按S1,系統顯示1∩,表示可設置第一次關時間……依次進行。設置好系統及3次開關時間后,整機回到正常顯示狀態,秒閃恢復。
如欲取消某次開/關定時,只需把該次的開與關時間設置成相同值即可。
筆者曾把該時鐘用于定時定壓供水控制系統,RB6端用于驅動繼電器(也可用RB5與RB4兩端驅動脈沖繼電器),RB1端接水壓(水位)的低限輸入,RB0端接高限輸入,設置好定時,一個簡易的定時定壓自動供水系統即告完成。
二、編程技巧
PIC16C55單片機程序存儲器只有512字節,加上采用外接32768Hz晶體振蕩方式,時鐘速度較低,因此,統籌好系統的工作時序與人機界面之間的關系是軟件設計成敗的關鍵。本機編程采用如下方案:
軟件工作流程見附圖2。
PIC16C55單片機的一個機器周期是4個時鐘周期,不難算出,本系統中每秒有8192個機器周期。在編制軟件時,先設定單片機內部定時計數器F1的計數方式為機器周期的64分頻。這樣,每當F1溢出時,系統遞加2秒。平時,系統每128個機器周期內用RC口與RA口驅動掃描一次顯示屏,可保證每秒內掃描64次顯示屏,基本上無閃爍感。而128個機器周期正是F1的第0位(為便于敘述以下簡記為F10)每次下降沿的間隔時間,我們可以編一段程序,當F10的下降沿到來時,掃描一次顯示屏,每當F1的低4位為全0時(125ms一次)使系統檢測一次RB口與按鍵狀態,并進行相關處理,部分相關程序如下:
WAIT BTFSC 1,0 ;等待F10的下降沿,編程時
GOTO WAIT ;要保證每次下降沿前到此
MOVFW 1
SKPNZ
GOTO CLOCK ;F1=0,滿2秒,轉時鐘處理
ANDLW 0FH??;屏蔽F1高4位
SKPZ
GOTO DISPLAY;F1低4位不為0,轉顯示
MOVLW 0C0H ;滿125mS,使RB口脈沖復位
ANDWF 6,1
MOVLW 0FH ;檢測按鍵
TRIS 7
MOVFW 7
ANDLW 0FH??;保留按鍵數據
SKPZ
GOTO AN ;有鍵值,轉按鍵處理
DISPLAY …… ;顯示掃描,定時管理RB口
CLOCK …… ;時鐘,定時處理程序
AN …… ;按鍵管理程序
評論