導航:首頁 > 操作系統 > 單片機定時誤差

單片機定時誤差

發布時間:2023-02-25 21:49:12

① 51單片機定時器問題,定時不精準,差不多30s就有一秒的誤差,

65536-46080=19456個機器周期。
你使用11.0592M,如果單片機是12T的話,那就是每秒有11059200/12=921600個周期
19456/921600=0.0211111秒
再加上你在中斷函數中到TH0,TL0賦值的操作,包括,跳轉,關鍵數據入棧,TH0,TL0賦值等的時間。
換句話說,你一次中斷大概是0.021120秒
接下來,你就自己算吧

② 單片機數字時鍾比實際時間的慢啊怎麼辦

單片機是利用定時器實現計時的,根據定時器的定時計算出的時間常數,是理想狀態下的數值。
如晶振頻率是12M,用定時器T0,按定時20ms 計算的時間常數
TH0=(65536-20000)/256=0XB1
TL0=(65536-20000)%256=0XE0
如果按這個數寫程序,電子鍾計時的時間肯定就比實際的時間慢。當然了,這需要時間長了,才能體現出來,如果只是計時幾個小時是比較不出來的。必須是長時間的計時,比如計時一周以上就體現出來計時的誤差了。
這是因為,單片機計時的誤差還是比較小的,假如一天慢1秒,那計時一周了,就慢7秒,才會發現的。
為什麼會慢呢,是因為定時到,要中斷,單片機從響應中斷,到在中斷程序中重寫時間常數,才能重新計時的,這是需要時間,只是這時間只有幾個微秒。就產生了計時誤差了。可是這向微秒的誤差,累計一周後就累計成幾秒了。
要計時比較准確的還是有辦法的,就是給時間常數的TL0加幾個數,來補償誤差。
通常加8就行,不過,還需要長時間的計時來校正。
在中斷程序中的時間常數改為
TH0=0XB1;
TL0=0XE8; //這低8位加8,補償誤差
這樣補償後,還有誤差,再改這低8位,慢了就加,快了就減

③ 單片機定時器做的時鍾,定時不準。

單片機定時器做時鍾,確切的說在環境溫度變化不大的前提下,可以調整的很准,畢竟它是基於MHz級的晶振的,提兩點建議,1】建議使用12MHz晶振;2】請注意對於不同的編程,定時器賦值時,如果需要50ms定時則絕不一定是賦值50000,也不一定是循環20次就是1S;你琢磨下這里的道理,你就明白了,具體方法是,找一個比較準的時鍾,比如在線時鍾,每10小時記錄一次找出規律,細細調整,畢竟它是在微秒范圍內進行調整,你肯定行的,祝成功。

④ 為什麼51單片機的定時器計時不準確

中斷函數裡面盡量少放語句,如果產生脈沖波形就只放一個

⑤ 單片機:用計時器給LCD計時間每一秒可能都會多個幾毫秒,要怎麼能減小這種誤差

千分之幾的誤差,用定時器計時的這種方法誤差很難消,
實在想消的話,可以用下面幾種法子試試:
1. 挑選晶振,晶振頻率有差,挑選個頻率高一點的。

2. 調大計數器的初值,然後在中斷服務 子程序中讓計數器停止計數、馬上再啟動計數,目的是微微調整定時的周期。

兩種方法都較難調好,要慢慢試,最好改其它定時法。比如用1302等晶元

閱讀全文

與單片機定時誤差相關的資料

熱點內容
php論壇實訓報告 瀏覽:401
java日期字元串轉換成日期 瀏覽:129
linuxsftp連接 瀏覽:934
光伏日發電量演算法 瀏覽:125
小肚皮app怎麼才有vip 瀏覽:616
php全形轉換半形 瀏覽:927
java字元序列 瀏覽:539
杭州編譯分布式存儲區塊鏈 瀏覽:575
材料壓縮曲線 瀏覽:247
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:979
編譯器合並計算 瀏覽:959
android音頻曲線 瀏覽:343
linuxftp自動登錄 瀏覽:802
運行編譯後網頁 瀏覽:70
閱讀app怎麼使用 瀏覽:319
centos防火牆命令 瀏覽:432
命令行變更 瀏覽:332
linux設備和驅動 瀏覽:207
加密貨幣騙局破案 瀏覽:345