Ⅰ 51單片機使燈閃爍,我寫的程序按一下開始閃爍,在按一下為什麼不能熄滅呢
void main()
{
L1=0;
if(K1==0) //1 按鍵按下後
{
Delay10ms(); //2 延時去抖動
if(K1==0) //3 確認按下
{
L1=0; //4 以下4句閃爍一次
Delay(1000);
L1=1;
Delay(1000);
}
while(1) //5 這里死循環,不能再執行上面的語句了。
{
while(!K1) //6 判斷按鍵是否按下,如果按下,則延時10ms,再判斷是否按下,一致循環,知道你松開手。
{
Delay10ms();
}
while(!K1); //7 按鍵按下話,一致死等,直到你松開手
{ //8 下面閃爍一次。
L1=0;
Delay(1000);
L1=1; // 9
Delay(1000);
}
}
}
}
你的程序來看,工作流程是這樣的,開機後,按下按鍵不放,只閃爍一次。如果你放開你的手,釋放按鍵,則LED一致閃爍。
你說再按一下為什麼不熄滅,因為 標示9句那裡置1了,你的硬體應該是L1置1亮吧?
因為L1=1,是你燈閃爍的最後一個狀態,而後又會從5再次執行,如果你按下了按鍵,程序停在了6那裡死循環,
則後面7,8都不會執行了。燈則保留了上一個循環最後的狀態,也就是9的狀態,所以就一致亮了。
你如果又松開按鍵,燈又會閃爍,你再按下按鍵,燈又一直亮了。如此循環。
你的程序的就是一個字概括,亂,你的思路很混亂,條理不清晰,建議先在紙上寫下流程,再來寫代碼。想清楚了再下手。
你會學的很快的。
你的main函數有個性,呵呵,沒有人會這么寫main函數的,去看看單片機C語言的書吧!
Ⅱ 單片機c51,9個燈同時閃爍
從第一個燈開始隨著時間變化,二進制數的遞減,所有的燈都會依次的點亮,當全部的燈都被點亮後再重新開始這個過程,一直循環下去。
紅綠藍四個LED燈循環閃爍,單片機課程試驗,連上板子可以直接顯示,非常基礎。單片機使用codewarrior編。
資源中是採用51單片機的GPIO引腳對多路LED燈進行控制的代碼,包含兩個工程,分別採用兩種不同的方法對多路LED燈進行控制。
Ⅲ 單片機編程 彩燈閃爍
你可以將燈連接到p1口來實現( 假設有八個彩燈,且為共陽的);
1.輪流點亮 逐個點亮
MOV A,#11111110B
;先點亮連p1.0的燈,然後是p1.1的,一直到p1.7的,然後又點亮p1.0的
LOOP:
MOV P1,A
ACALL DELAY;你建一個延時子程序使燈亮一段時間
RL A
SJMP LOOP
2.間隔點亮
MOV A,#10101010B
;先點亮連p1.0,p1.2,p1.4,p1.6的燈,然後是p1.1,p1.3,p1.5,p1.7的
LOOP:
MOV P1,A
ACALL DELAY;你建一個延時子程序使燈亮保持一段時間
RL A
SJMP LOOP
3.全滅全亮
MOV A,#00000000B
;先全部點亮,然後再全滅
LOOP:
MOV P1,A
ACALL DELAY;你建一個延時子程序使燈亮保持一段時間
CPL A
SJMP LOOP
Ⅳ 單片機用595控制led燈剛開始為什麼一直閃
1、由於單片機總是自動復位造成的單片機有程序控制led閃爍。
2、單片機電源不穩,其他硬體毛病等,閃爍也會發生。