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