導航:首頁 > 操作系統 > 單片機跑馬燈與按鍵後一個燈閃爍

單片機跑馬燈與按鍵後一個燈閃爍

發布時間:2023-01-03 14:44:27

單片機實現LED燈,按鍵的時候閃爍,再次按鍵的時候熄滅

以後的程序記得縮進,不然很難看的,你得閃爍時間太長了正在閃爍的時候你又按一下按鍵,那你的單片機就會迷茫了,究竟是從頭開始還是繼續執行呢?對硬體的處理放到主函數里,你的延時居然是軟體加硬體,厲害,中斷函數里的LED是局域變數,賦值還是最好的,局域變數系統會隨機分配值的,不一定就是你想想的0

Ⅱ 單片機用外部中斷0實現:一個亮的LED燈,當按下按鍵後,閃爍2下,繼續恢復原來狀態。

main()
{

// CLK_CKDIVR=0x00;
CLK_Init();
IO_Init();
led_on=0;
//timer1_init();
EXTI_DeInit();?/初始化外部中斷IO口
_asm("rim");

while(1)
{
cbi(PA_ODR,4);
}

}

@far @interrupt void TIM1_UPD_OVF_IRQHandler(void)
{

TIM1_SR1 = 0x00; // 清除更新標志

}
@far @interrupt void EXTI0 (void)//外部中斷子函數
{
if(PA_on)
{ sbi(PA_ODR,4);PA_on=0;}//PA4為燈亮
else
{ cbi(PA_ODR,4);PA_on=1;}//PA4為燈滅

EXTI_CR1=0x00 ;
}
不懂再追問,你只需要把主程序裡面的燈定為一個狀態,外部中斷裡面再定一個狀態。要亮2次,加個延時,就行了。

Ⅲ 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語言的書吧!

Ⅳ stm32單片機兩個跑馬燈一個一秒閃兩次一個一秒閃四次,

看到上面仁兄回答,想起自己剛編程時的艱難

介紹一個新的編程方式,自己選好晶元,安裝完parkage,勾選下面

具體實現自己來吧,都是從不會到會,種地也是

Ⅳ 51單片機,用兩個按鍵分別控制兩個led,一個亮/滅,另一個閃爍/滅,為什麼我按下了第二個燈不閃呢

你的led1=~led1;這個語句沒有循環,所以只會反轉一次。要麼加循環,要麼再寫一個閃爍函數。

voidled_filcker(usignedcharx)

{

while(x)

{

led1=~led1;

x--:

}

}

如果你是想,按一下,松開也會閃爍,再按一下熄滅。你得定義一個變數來表示按鍵的按下。

#include<reg52.h>

#define uchar unsigned char

bit stop=1;

sbit k5=P1^4;

void delay(uchar xms)

{

while(xms--);

}

void main()

{

if(k5==0)

{

delay(1000);

if(k5==0)

{

while(k5==0)

{

if(stop)

<<<<<<<<<<<<<<<此處執行你的語句

else

stop=~stop:

}

}

}
}


Ⅵ 單片機,跑馬燈,交替閃爍,C語言代碼

#include<reg51.h>
void delay(unsigned int a)
{
unsigned int i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char i,led;
led=0xfe;
while(1)
{
P0=led;

delay(500);

P0=0xff;

delay(500);

led=(led<<1)|0x01;

if(led==0xff)led=0xfe;

}

}

Ⅶ 用單片機c語言一個按鍵控制led的閃爍和熄滅,就是按一下閃爍,再按就熄滅。

首先你的貼出來的程序不完整,最好貼出完整代碼!
其次,如果你的程序沒問題的話,你的LED閃爍是必須在你按住按鍵且不能彈起情況下才會發生的,你是一直按著嗎?
而且注意你n的類型,因為你這樣一直加,會溢出的

Ⅷ 單片機按下按鍵1,燈亮,按下按鍵2,燈滅,按下按鍵3,燈閃爍,求代碼

主要程序如下:
flag是用來記憶按鍵狀態,按下key3,flag置1,程序中檢測到flag是1才閃爍,鬆手後LED仍然閃爍,同時下一輪還可以檢測另外兩個按鍵
while(1)
{
if(key1==0)//判斷按鍵是否按下
{
Delay1ms(10);//延時消抖
if(key1==0)
{
while(key1==0);//等待按鍵抬起
LED=1;
flag=0;
}
}
if(key2==0)//判斷按鍵是否按下
{
Delay1ms(10);//延時消抖
if(key2==0)
{
while(key2==0);//等待按鍵抬起
LED=0;
flag=0;
}
}
if(key3==0)//判斷按鍵是否按下及是否在走時
{
Delay1ms(10);//延時消抖
if(key3==0)
{
while(key3==0);//等待按鍵抬起
flag=1;
}
if(flag==1)
{
LED=!LED;
Delay1ms(200);
}
}

Ⅸ 求教通過按鍵控制單片機LED燈閃爍周期的程序怎麼寫

你用的什麼單片機?
看你說的應該是跑馬燈,給你一個最常見的,51單片機,跑馬燈C程序。
若有需要可以給你更多,本人硬體開發工程師。
望採納。

例,這是一個51單片機的跑馬燈C程序,已經在PROTEUS軟體上模擬通過

#include<reg51.h>
void delay(int);
void main()
{
int i;
P0=0x01;
delay(500);
while(1)
{
for(i=0;i<7;i++)
{
P0<<=1;
delay(500);
}
P0=0x01;
delay(500);
}
}
void delay(intx)
{
int i,j;
for(i=x;i>0l;i--)
for(j=110;j>0;j--);
}

#include<reg51.h>
void delay(int);
void main()
{
int i;
P0=0x01;
delay(500);
while(1)
{
for(i=0;i<7;i++)
{
P0<<=1;
delay(500);
}
P0=0x01;
delay(500);
}
}
void delay(intx)
{
int i,j;
for(i=x;i>0l;i--)
for(j=110;j>0;j--);
}

Ⅹ 描述 stc單片機 按鍵控制燈亮滅和閃爍 上電燈不亮,按一下按鍵燈亮,再按一下燈閃爍,再按一下

#include<reg51.h>
unsigned char times;
sbit key=P1^0;
sbit led=P1^4;
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
led=1;
while(1)
{
if(key==0)

{
while(key==0);

times++;

times%=3;

}

switch(times)

{
case 0:led=1;break;

case 1:led=0;break;

case 2:led=~led;delay(100);break;

default:break;

}

}

}

閱讀全文

與單片機跑馬燈與按鍵後一個燈閃爍相關的資料

熱點內容
xshell連接linux命令 瀏覽:5
把多個文件夾的內容合並在一起 瀏覽:479
基於單片機的澆花系統設計ppt 瀏覽:683
卷積碼編解碼及糾錯性能驗證實驗 瀏覽:352
請在刪除驅動器之前暫停加密什麼意思 瀏覽:785
光催化pdf 瀏覽:98
java字元串包含某字元 瀏覽:526
ssm身份認證源碼 瀏覽:466
預排序遍歷樹演算法 瀏覽:671
加密裝置如何打開ping功能 瀏覽:478
python下載372 瀏覽:901
u盤子文件夾隱藏 瀏覽:296
本地誤刪svn文件夾 瀏覽:685
海康威視python通道名 瀏覽:241
如何用app覆蓋全部曲庫 瀏覽:602
變異布林源碼 瀏覽:686
表格加密設置列印區域 瀏覽:437
卡耐基pdf下載 瀏覽:924
現在最流行的單片機 瀏覽:89
機頂盒刷機源碼 瀏覽:986