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