如何使自製的單片機電子鍾走時精準 (轉貼,忘記作者)
1.采用高精度晶振方案
雖然采用高精度的晶振可以稍微提高電子鍾計時的精確度,但是其並不是導致電子鍾計時不準的主要因素,而且高精度的晶振價格較高,所以不必采用此方案。
2.動態同步修正方案
利用內部定時/計數器溢出產生中斷(12M晶振一般為50ms)再乘以相應的倍率來實現秒、分、時的轉換。
但是定時中斷子程序中的數據入棧和重裝定時/計數器的初值還需要占用數個機器周期,因此需要繼續調整。
從程序入手,采用動態同步修正方法給定時/計數器賦初值。動態同步修正方法:由於定時/計數器溢出後又會從0開始自動加數,固在給定時/計數器再次賦值前將定時/計數器低位(TL0)中的值和初始值相加後一並送入定時/計數器中,此時定時/計數器中的值即為動態同步修正後的準確值。
采用了此種方法後相信你的電子鍾的精度已經大大提高了。
3.自動調整方案
采用了同步修正方案後電子鍾的精度雖然提高了很多,但是由於晶振頻率的偏差和一些其它未知因素(同一塊電路板、同樣的程序換了一片單片機後走時誤差卻不一樣,不知是何原因)的影響,時間長了仍然會有積累誤差。為此我設計出了此自動調整方案,實際也是一種容錯技術。其自動調整原理為:實測出誤差1秒所需的時間,然後每隔這樣一段時間後就對秒進行加1或減一調整。例如:電子鍾每過50小時就慢1秒,那麽每隔50小時對其休正1秒。
使用此方法調整較費時間,但是效果非常好,經實驗一次調整可以將月誤差控製在1秒左右,如按此方法再次測出誤差1秒所需的天數並進行二次調整,其精度會更高