51單片機制作的六位數(shù)顯多路定時電子鐘
這里介紹的電子鐘,電路可稱得上極簡,它僅使用單片的20引腳單片機完成電子鐘的全部功能,而筆者見到的其它設計方案均采用二片以上的多片IC實現(xiàn)。
一片20引腳的單片機STC2032(引腳排列與AT89C2051完全相同)為電子鐘主體,其顯示筆畫數(shù)據從P1口分時輸出,P3口則輸出對應的六位選通信號。由于LED數(shù)碼管點亮時耗電較大,故不能使用AT89C2051單片來完成,但是可以可以用STC89C2032來完成。另外,本站制作時用超高亮的發(fā)光二極管代替昂貴的大數(shù)碼管,成本低,效果獨特。
本電子鐘設計有三個輕觸式按鍵,這里我們分別命名為:模式設定鍵K1、加調整鍵K2、減調整鍵K3。由于STC89C2032內部已經集成有復位電阻,所以,復位腳只需要接一只電容即可。本電子鐘采用了一只NPN型的三極管及蜂鳴器為鬧時訊響電路。本圖采用電池供電,電路板上有橋式整流、濾波和三端穩(wěn)壓器7805的安裝位置,可以用交流電壓供整個系統(tǒng)工作。此電子鐘可與任何6~12V/100mA的交直流電源適配器配合工作,適應性強。
電子鐘功能
1.走時:默認為走時狀態(tài),按24小時制分別顯示“時時:分分:秒秒”,有四個秒點動態(tài)顯示,時間會按實際時間以秒為最少單位變化。
2.走時調整:長按K1(或K2、K3)兩秒鐘以上,時位、分位、秒位會有其一快速閃動,按K1會循環(huán),按K2和K3可以分別對閃動的數(shù)字進行加或者減,從而達到快速設定時間的目的。20秒以上長時間沒有任何按鍵操作時,自動按變?yōu)檎W邥r狀態(tài)。
3.鬧時調整:再次長按K1(或K2、K3)兩秒鐘以上,時位、分位、秒位會有其一慢速閃動,按K1會循環(huán),按K2和K3可以分別對閃動的數(shù)字進行加或者減,從而達到快速設定鬧時的目的。20秒以上長時間沒有任何按鍵操作時,自動按變?yōu)檎W邥r狀態(tài)。
注意:鬧時狀態(tài)下時位會在01-64變化,表示64路定時時間;分位只能在00-24變化,表示24個小時,其中默認顯示為24,表示不鬧;秒位在00-59變化,表示60個分鐘。因此,本電子鐘以分鐘為最小單位可以設定多路鬧時。(由于64路太多,基本上沒有什么用,用起來反而不方便,所以,本站出售的是16路定時的。)
4.誤差修正狀態(tài):大家知道,即便是世界上最優(yōu)良正統(tǒng)的石英晶振,頻率也會有偏差,需要電容微調校正頻率,不同的電容和負載會影響到頻率偏移。這種情況可能會使日誤差達到幾十秒。當然,配備優(yōu)質正品元件會使走時誤差小到幾秒,如果設計微調電容的話,就可以使每天的走時誤差小到1秒以內。
但是,對于業(yè)余制作來說,沒有更標準的測量設備來證明你的調試是剛剛好,不能測周期,不能測頻率(普通的測量會改變電路工作參數(shù)帶來更大的測量誤差)。而我們一般都會按電視臺的時間來做對比,經過了24小時,我的電子鐘究竟是快了??還是慢了??
現(xiàn)在不用怕了,本電子鐘設計了誤差校正程序:如果你的電子鐘走一天會快1.6秒(或者慢0.8秒),那么,通過本電子鐘的誤差校正設置,可以在一天中不知不覺的減慢1.6秒(或者加快0.8秒)。因此,本電子鐘理論上可以做到日誤差小于0.2秒,當然,具體的過程和效果還需要大家去操作和證明。
誤差校正方法:在鬧時調整狀態(tài)下,再長按K1(或K2、K3)兩秒鐘以上,時位、分位會變成“一一一一”或者“三三三三”,表示變慢或者變快的意思,按K1選擇;秒位會變成00,按K2、K3會在00-80中變化,數(shù)字越大,表示校正越大,00等于即不校正變快也不校正變慢,例如2+0=2-0這樣的情況。20秒以上長時間沒有任何按鍵操作時,自動按變?yōu)檎W邥r狀態(tài)。
其它功能:
1、如果是在走時狀態(tài),正逢到在鬧鈴響(會長響20秒)中,按K1、K2、K3任意鍵停止發(fā)聲。
2、在走時狀態(tài),按K3可以讓電子鐘每秒都發(fā)出短短的“嘀”聲,這有點類似機械指針式的電子鐘(或者機械手表)的聲音,當然,聲音要大得多。這個功能很有用,例如,我們有些特殊情況時不能去看著鐘,但是可以閉上眼睛聽聲音在心中默默數(shù)數(shù)經過了多少秒再去操作某某。再按可以關掉秒發(fā)聲。
3、整點報時功能:按K2可以開啟和關閉整點報時功能。開啟后每逢整點就會聽到長響兩秒“嘀”聲。
4、鬧時開關功能:按K1可以開啟和關閉定時鬧鈴功能。關閉鬧鈴后,以前設置的數(shù)據不會丟失。
由于電路設計得極其簡單,因此豐富的功能只能由軟件完成,這里軟件設計成為了關鍵。下面介紹軟件設計中采用的一些要點。
本電子鐘程序設計時只使用了一個定時數(shù)T0,其它的中斷全部關斷,定時器工作在兩個8位自動加載初始值狀態(tài)。這是保證走時精確穩(wěn)定的重要方法。站長看到很多書本教材上都讓大家用定時器中斷來執(zhí)行動態(tài)顯示程序和按鍵掃描程序,這是一種很不好的方法,除了浪費硬件資源以外,還會增加程序復雜性,還會影響其它程序運行。
站長認為,越是中斷程序,就要越寫得簡短,最好幾條指令就立即結束,對于動態(tài)掃描顯示、按鍵功能等等可以寫在主程序中讓程序不停的反復運行,如果中斷多,最大的壞處就是影響到主程序運行時間不夠,掃描顯示會出現(xiàn)閃爍,或者按鍵反應變慢(一般覺察不出),可是,這又有另一好處,你可以隨時改良程序并且立即看到結果。
LED動態(tài)掃描顯示是分時點亮各個LED,利用人的視覺暫留特性,讓人覺得是連續(xù)點亮。當點亮的頻率高時,說明單片機有充足的時間運行主程序,
評論