電路見圖1.
一片20引腳的單片機AT89C2051為電子鐘主體,其顯示數(shù)據(jù)從P1口分時輸出,P3.0~3.3則輸出對應的位選通信號。由于LED數(shù)碼管點亮時耗電較大,故使用了四只PNP型晶體管VT1~VT4進行放大。本來筆者還有一種更簡的設計方案(見圖2),可省去VT1~VT4及R1~R4八個元件,但這種設計由于單片機輸出口的灌入電流有限(約20mA),數(shù)碼管亮度較暗而不向讀者介紹,除非你采用了高亮度的發(fā)光數(shù)碼管。
模壓電感器P3.4、P3.5、3.7外接了三電感器符號個輕觸式按鍵,這里我們分別命名為:模式設定鍵set(P3.4)、時調整鍵hour(P3.5)、分調整鍵min(P3.7)。C1、R13組成上電復位電路。VT5及蜂鳴器Bz為鬧時訊響電路。三端穩(wěn)壓器7805輸出的5V電壓供整個系統(tǒng)工作。此電子鐘可與任何9~20V/100mA的交直流電源適配器配合工作,適應性強。
電子鐘功能
1.走時:通過模式設定鍵set選擇為走時,U1、U2顯示小時,U3、U4顯示分。U2的小數(shù)點為秒點,每秒閃爍一次。
2.走時調整:通過模式設定鍵set選擇為走時調整,按下hour鍵對U1、U2的走時“時”顯示進行調整(每0.2秒遞加1)。按下min鍵對U3、U4的走時“分”顯示進行調整(每0.2秒遞加1)。
3.鬧時調整:通過模式設定鍵set選擇為鬧時調整,按下hour鍵對U1、U2的鬧時“時”顯示進行調整(每0.2秒遞加1)。按下min鍵對U3、U4的鬧時“分”顯示進行調整(每0.2秒遞加1)。
4.鬧時啟/停設定:通過模式設定鍵set選擇為鬧時啟/停設定,按下min鍵U3的小數(shù)點點亮,鬧時功能啟動;按下hour鍵U3的小數(shù)點熄滅,鬧時功能關停。
由于電路設計得極其簡單,因此豐富的功能只能由軟件完成,這里軟件設計成為了關鍵。下面介紹軟件設計要點。
圖3為主程序狀態(tài)流程。
運行時建立的主要狀態(tài)標志如下:
flag-掉電標志。掉電后,flag內為一隨機數(shù);重新設定工字電感時間后flag內寫入標志數(shù)55H.
set-工作模式設定標志。
hour-走時“時”單元。
min-走時“分”單元。
sec-走時“秒”單元。
dEDA-走時5mS計數(shù)單元
t_hour-鬧時“時”單元。
t_min共模電感-鬧時“分”單元。
d_05s-0.5秒位標志。每秒鐘的前0.5秒置1,后0.5秒置0,以使秒點閃爍。
o_f-鬧時啟/停位標志。鬧時啟動置1,鬧時關停置0.
另外將定時器T0設定為5mS的定時中斷。這里晶振頻率為12MHz,因此5mS的初值為-5000,但實際上程序還要作其它運算,使得時間偏長,經(jīng)調整為-4800后試驗剛好。計時單元deda每次中塑封電感器斷均加1.走時函數(shù)判斷deda>=200時即令秒單元sec加1.同理秒單元sec滿60后令分單元min加1.分單元min滿60后令時單元hour加1.時單元hour滿24后清0.
上電后,首先進行初始化,對各狀態(tài)標志、輸入輸出口及定時器T0進行初始化工作,以適應后面程序的要求。
隨后程序判斷有無set鍵按下,如按下,則set鍵值從0起加1.set鍵值只能從0加到3,然后又回到0.
接下來,根據(jù)鍵值進行散轉。若set=0,運行走時程序;若set=1,進入調整鬧時時間程序;若set=2,進入調整走時時間程序;若set=3,顯示已調好的鬧時時間,同時進入啟/停鬧時程序。
散轉完后,進行判斷掉電標志flag是否等于55H.若不等,說明剛開機上電或運行過程中掉過電,這時四個數(shù)碼管以1Hz的頻率閃爍四個8字,提示時間不準;若相等,說明未掉電,RAM區(qū)內容未變化,時間準確。
大功率電感廠家 |大電流電感工廠