『壹』 51單片機C語言程序中延時函數delay的原理是什麼
原理:只是執行一些所謂的「無實際意義的指令」,如縮放或執行一個int自加,簡單地說,就像高中數學中的「乘法原理」一樣,很容易迅速增加上面提到的「無意義指令」的數量
關於大小的值:如果是在C語言中,該值不僅與水晶振動、單片機本身的速度,但也與C的編譯器,所以,雖然這個值可以精確計算,但大多數情況下,程序員是經驗值。
當然,如果你在匯編中編程,情況就不同了,因為每條指令使用一定數量的機器周期,你當然可以根據所有指令使用的總時間來計算特定延遲的總時間。
(1)51單片機為什麼要延遲擴展閱讀:
定義延遲XMS毫秒的延遲函數
Voiddelay(unsignedintXMS)//XMS表示需要延遲的毫秒數
{
無符號intx,y;
For(x=XMS;X0;X-)
For(y=110;Y」0;Y-);
}
使用:
VoidDelay10us(ucharMs)
{
Uchar數據我;
(;女士「0;------Ms)
對於(I = 26)我> 0;我-);
}
I=[(延遲值-1.75)*12/ms-15]/4
『貳』 為什麼51單片機要等待幾秒才可以正常工作
任何單片機在工作之前都要有個復位過程,復位對單片機來說,是程序還沒有開始執行,是在做准備工作。一般的復位只需要5ms的時間。而進行復位只需要將rst引腳加上高電平就可以了。
檢查下RST引腳電路,
『叄』 用51單片機實現中斷,為什麼在中斷函數中要加延遲,不加連接P3^2和地就不停止,而是產生了延遲的效果
單片機里有個有趣的現象不知道你注意了沒有,當你按下一個鍵的時候,led屏上什麼都沒有了。
當你持續按住一個鍵,整個單片機就像斷電了一樣(或者叫短路了)
所以,按鍵一般都需要延遲(還有一個作用是防止按鍵抖動)
還有,代碼里沒有指定TMOD的值,這個習慣不好
『肆』 為什麼我的51單片機蜂鳴器程序需要加延時才響呢
這得看你的蜂鳴器是有源還是無源,如果是無源的蜂鳴器需要經過變頻控制才會發聲,對於有源的蜂鳴器則直接輸出高低電平就可以。
注意,這里的「源」不是指電源。而是指震盪源。 也就是說,有源蜂鳴器內部帶震盪源,所以只要一通電就會叫。
而無源內部不帶震盪源,所以如果用直流信號無法令其鳴叫。必須用2K~5K的方波去驅動它。
兩種蜂鳴器好像一樣,但仔細看,兩者的高度略有區別,有源蜂鳴器a,高度為9mm,而無源蜂鳴器b的高度為8mm。如將兩種蜂鳴器的引腳郡朝上放置時,可以看出有綠色電路板的一種是無源蜂鳴器,沒有電路板而用黑膠封閉的一種是有源蜂鳴器。
迸一步判斷有源蜂鳴器和無源蜂鳴器,還可以用萬用表電阻檔Rxl檔測試:用黑表筆接蜂鳴器 "+"引腳,紅表筆在另一引腳上來回碰觸,如果觸發出咔、咔聲的且電阻只有8Ω(或16Ω)的是無源蜂鳴器;如果能發出持續聲音的,且電阻在幾百歐以上的,是有源蜂鳴器。