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