![]() |
發布時間: 2017-2-26 13:07
正文摘要:/******************************************************************************** 實驗名 : 定時器實驗* ... |
middfat 發表于 2017-3-1 20:42 我是用的 定時器0 中斷函數 實現計時的,50MS一計數,20計數為1秒,我實驗了一下,26分鐘,慢了87秒。平均慢3.34秒/分鐘。 可以通過減少定時器初值,縮短定時器,計數周期的方法,提高走時速度吧?大家遇到這種情況,都 是怎樣處理的? 請教了。 |
在晶振的兩只腳加上30PF左右的電容,對地。快了則加大電容容量,慢了則減小 |
學習了, |
csz9981 發表于 2017-2-26 21:22 應該是你用了國產的1302,再使用了12pF的晶振的關系。這個情況我碰到兩次,都是在晶振引腳對地加一個小電容解決的。一次加了30p的(那時候沒有再小得了),另一次加12p的。都能把精度提高到1分鐘/月的級別。 |
admin 發表于 2017-2-27 00:27 應該是你用了國產的1302,再使用了12pF的晶振的關系。這個情況我碰到兩次,都是在晶振引腳對地加一個小電容解決的。一次加了30p的(那時候沒有再小得了),另一次加12p的。都能把精度提高到1分鐘/月的級別。 |
admin 發表于 2017-2-27 00:27 #ifndef __LCD_H_ #define __LCD_H_ /********************************** 當使用的是4位數據傳輸的時候定義, 使用8位取消這個定義 **********************************/ #define LCD1602_4PINS /********************************** 包含頭文件 **********************************/ #include<reg51.h> //---重定義關鍵詞---// #ifndef uchar #define uchar unsigned char #endif #ifndef uint #define uint unsigned int #endif /********************************** PIN口定義 **********************************/ #define LCD1602_DATAPINS P0 sbit LCD1602_E=P2^7; sbit LCD1602_RW=P2^5; sbit LCD1602_RS=P2^6; /********************************** 函數聲明 **********************************/ /*在51單片機12MHZ時鐘下的延時函數*/ void Lcd1602_Delay1ms(uint c); //誤差 0us /*LCD1602寫入8位命令子函數*/ void LcdWriteCom(uchar com); /*LCD1602寫入8位數據子函數*/ void LcdWriteData(uchar dat) ; /*LCD1602初始化子程序*/ void LcdInit(); #endif |
慢了好幾分鐘,可能是由晶振的誤差導致的。你可以在軟件中進行補償。樓主 lcd.h 能帖出來一下嗎? |
我把這個 程序 在實驗板上運行了4個小時,感覺慢了好幾分鐘,請大家看看,誤差產生在哪里? |