關於51微控制器電子時鐘精度的問題

2021-07-02 23:38:49 字數 767 閱讀 4261

前幾天用stc89c52微控制器製作了乙個電子時鐘,經過一段時間的實驗,發現時間精度存在誤差,一分鐘慢4秒左右。

這可了不得,十分鐘就要慢40秒,一天下來不得慢半96分鐘!!!

這個微控制器晶振頻率為11.0592mhz,和大部分時鐘的晶振頻率相同,應該沒有問題。

後天考慮到源**:

在定時器中斷函式裡:

void t0(void) interrupt 1 using 0 }}

p1=~p1;

}}

interrupt 後面的數字簡單的說就是中斷服務函式的代號

0代表外中斷0

1代表定時計數器0中斷

2代表外中斷1

3代表定時計數器1中斷

4代表序列口中斷

所以interrupt 1代表定時計數器產生中斷後就轉到這個函式裡面執行。

**其實還挺簡單,每中斷4000下將產生1秒。

等等...

每4000下的中斷為1秒,那麼原因很有可能在這裡。

試著將tcount==3600,和秒錶對比發現竟然每一分鐘快了1秒左右。

bingo!問題的確出在tcount的取值上面,將tcount的數值改為3700,和秒錶對比發現,秒數沒有誤差,有誤差的應該就是毫秒級吧。

void t0(void) interrupt 1 using 0 }}

p1=~p1;

}}

這樣就解決了時鐘精度的問題。

@ mayuko

51微控制器電子時鐘

include include define uint unsigned int define uchar unsigned char define key menu 0x01 define key up 0x02 define key down 0x03 define key clk 0x04 d...

51微控制器實戰之電子時鐘

源 工作模式下,51微控制器從ds1302中獲取資料,再把資料傳遞到lcd來顯示時間和日期 設定模式下,通過k2和k3來改變資料 計時模式下,通過k2來開啟或關閉定時器1,來實現開始 暫停計時,通過k3來計時初始化 鬧鐘響時,開啟定時器1,通過天空之城樂譜來控制蜂鳴器的音調。十進位制數 8421碼 ...

51微控制器電子琴

這是我在論壇第一篇文章,大一時用arduino寫過電子琴,大二了用51再寫一次。電路圖 注意事項 需要修改一下蜂鳴器的電壓值其他的引數應該不需要改,實測可用。上面的電路多了乙個元件是揚聲器,本來想用揚聲器的沒有想到合適的方法。程式 include define uchar unsigned char...