導航:首頁 > 操作系統 > 單片機四燈

單片機四燈

發布時間:2022-09-05 16:57:36

單片機如何一個按鈕實現控制4個led燈的循環閃爍

0 0
1 1
1 0
0 1
是這樣的四種狀態嗎? 這樣很簡單的,, 主要還是檢測按鍵, 按鍵按下 你把一個變數+1, 比如
if(Key == 0)

{
delay(); //延時10ms,延時函數 自己寫吧

if(Key == 0)

{
num++;

if(num >= 4)

num = 0;
while(!Key);

}
}
然後根據num 的值 對Led進行狀態刷新就好了。
switch(num)
{
case 0: Led1 = 1; Led2 = 0; break;

case 1: Led1 = 0; Led2 = 1; break;

case 2: Led1 = 0; Led2 = 0; break;

case 3: Led1 = 1; Led2 = 1; break;

default : break;

}
就可以了,,,順序的話 可以按照具體要求更換下位置就可以了。

⑵ 51單片機按鍵控制按下K1四個led燈循環亮,再按一下全滅,c程序怎麼寫

在四個燈循環點亮的狀態下,每點亮一個燈需要延時,如果調用延時子程序,按鍵就顯示不靈敏了,所以,採用定時器中斷的方式控制延時,就不影響按鍵了。

#include<reg51.h>

#include<intrins.h>

模擬圖效果。

⑶ 51單片機:0faa為啥能控制四個燈啊

應該是0xaa吧,根據二進制碼,0xaa=10101010,一般高電平的時候二極體亮,有四個高電平所以四個燈亮,具體要根據電路分析,希望可以幫到你

⑷ 急需單片機高手幫忙用C語言寫一個單片機4個燈輪流閃亮的源程序。 詳細內容看補充。

/*對於個單片機的初學者,我希望用最直觀的方式來達到你要的要求,程序每一句我已經寫好備注,希望對你有幫助*/
#include<reg51.h> //使用51功能頭文件
sbit L1=P0^0; //L1對應P0.0,表示第一盞燈
sbit L2=P0^1; //L1對應P0.1,表示第二盞燈
sbit L3=P0^2; //L1對應P0.2,表示第三盞燈
sbit L4=P0^3; //L1對應P0.3,表示第四盞燈

void delay(unsigned int i) //延遲子程序,注意這里的unsigned int i,這里相當於限定了調用時候變數的類型
{
unsigned char j; //局部變數定義
while(i--) //循環i次,主程序main調用時候,i為100,這數值你可隨便該,但小於65355
for(j = 200; j > 0; j--) ; //這步的意思是空操作200次,也就是暫用CPU200次的工作時間

}
void main(void) //主函數,這里的viod是無類型,意思是沒有給這函數指定數據類型
{
P0=0x00; //將P0口初始化位高電平,如果沒有這句,初始化為低電平,這里可根據需要選擇
L1=1; //第一盞燈亮
delay(100); //調用延時子程序
L2=1; //第二盞燈亮
delay(100); //調用延時子程序
L3=1; //第三盞燈亮
delay(100); //調用延時子程序
L4=1; //第四盞燈亮
delay(100); //調用延時子程序
while(1); //這里我用了個死循環,目的程序只運行一次,如果需要自動重新運行,可以把這句刪掉
}
純手工書寫,並模擬調試過,記得加分喲~

⑸ 誰知道用單片機如何點下K1、K2、K3、K4來控制四盞燈 要求點下時不亮鬆手才亮。 要求用SWITCH語句。急用!

main()
{
unsigned char i;

P1 &= 0xC3;//所有的燈亮
while()
{
while(P3&0x3C==0x3C);//同時檢測4個按鍵
i = P3 & 0x3C;//有按鍵按下,讀取鍵值
delay();//按鍵去抖延時10 - 50ms,自己定
if(P3 & 0x3C == i)//按鍵確認
{
switch(i)
{
case 0x38:P1^0 = 1;while(!P3^2);P1^0 = 0;break;//按鍵K1按下燈滅,等待按鍵松開D1亮
case 0x34:P1^1 = 1;while(!P3^3);P1^1 = 0;break;//k2
case 0x2C:P1^2 = 1;while(!P3^4);P1^2 = 0;break;//K3
case 0x1C:P1^3 = 1;while(!P3^5);P1^3 = 0;//K4
}
}
}
}

⑹ 單片機編程當k1按下時四個燈亮,松開則四個燈不亮

單片機io掃描按鍵電平,控制四個燈的io電平高低變化即可

⑺ 51單片機四燈閃爍c程序

#include<reg51.h>

sfr p2=0xa0;
sfr p1=0x90;
sbit p1_0=0x90;
sbit p1_1=0x91;
int kk[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; DELAY();
int a,b;
int main()
{
if(p1_0==0)
{
while(1)
{
b=1;
for(a=0;a<10;a++)
{p2=kk[a];
DELAY();
}
if(p1_1==0)
{b=0; break;}

if(p1_1==0)
{
while(1)
{b=0;
for(a=9;a>=0;a--)
{p2=kk[a];
DELAY();
} } }
if(p1_0==0)
{b=1;break;}
}
}
}
DELAY()
{
unsigned char i,j,p;
for(i=10;i>0;i--)
for(j=100;j>0;j--)
{if(p1_1==0)
{b=0;a=10;break;}
if(p1_0==0)
{b=1;a=-1;break;}
for(p=200;p>0;p--)
;
}
}
你看這樣對么。

⑻ 單片機編程怎麼讓四個燈,每個燈延遲0.3秒亮的編程

當然可以了,加入延時函數即可實現,或者使用定時器實現。

⑼ 單片機編程題:開關控制四盞燈

昨天就看到有人問了,不會還是你吧,呵呵,你要說清楚啊,想怎麼控制,一起亮,一起滅?一個按鍵開,一個按鍵關?說具體點,要不怎麼幫你

呵呵,今天晚上上線晚了,明天上班抽時間給你寫吧,一會兒就搞定了,要不要留個郵箱啊,電路圖也給你吧

還有,一定要按這個順序嗎?如果我亂按會出現什麼情況,直接無效??

算了,直接貼上來吧

#include"reg52.h"

#defineuintunsignedint

#defineucharunsignedchar

sbitLED_R=P2^0;

sbitLED_Y=P2^1;

sbitLED_B=P2^2;

sbitLED_G=P2^3;

sbitKey1=P1^0;

sbitKey2=P1^1;

ucharKey1_Times=0,Key2_Times=0,Key_Flag=0;

voidDelay(uintx)

{

uinta,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

voidKeyScan()

{

if(Key1==0)

{

Delay(10);

if(Key1==0)

{

Key_Flag=1;

Key1_Times++;

if(Key1_Times==3)

Key1_Times=2;

}

while(!Key1);

}

if(Key2==0)

{

Delay(10);

if(Key2==0)

{

Key_Flag=1;

Key2_Times++;

if(Key2_Times==3)

Key2_Times=2;

}

while(!Key2);

}

}

voidmain()

{

P2=0xff;

LED_R=0;

while(1)

{

KeyScan();

if(Key_Flag==1)

{

Key_Flag=0;

if((Key1_Times==1)&&(Key2_Times==0))

{

LED_R=1;

LED_Y=0;

}

elseif((Key1_Times==1)&&(Key2_Times==1))

{

LED_R=1;

LED_Y=1;

LED_B=0;

}

elseif((Key1_Times==1)&&(Key2_Times==2))

{

Key2_Times--;

}

elseif((Key1_Times==2)&&(Key2_Times==0))

{

Key1_Times--;

}

elseif((Key1_Times==2)&&(Key2_Times==1))

{

LED_R=1;

LED_Y=1;

LED_B=1;

LED_G=0;

}

elseif((Key1_Times==2)&&(Key2_Times==2))

{

LED_Y=1;

LED_B=1;

LED_G=1;

LED_R=0;

Key1_Times=0;

Key2_Times=0;

}

}

}

}

⑽ 內容是 用單片機控制四個燈,按照一定規律閃亮,閃亮方式能夠通過按鍵控制轉換, 這是c語言

template<classT>
voidSelectSort(Ta[],intlen)
{

Ttemp;
intnIndex=0;

//每次循環只進行一次交換最多進行len-1次循環,因此總體上,比冒泡進行交換的次數少
for(inti=0;i<len-1;i++)
{
//第i次排序時,已經進行了i次大循環,因此已經排好了i個元素
//已排好序的元素0,,...,i-2,i-1
//待排元素為i,i+1,...,len-1


nIndex=i;
for(intj=i+1;j<len;j++)
{
if(a[j]<a[nIndex])
{
nIndex=j;
}

}

//交換
if(nIndex!=i)
{
temp=a[i];
a[i]=a[nIndex];
a[nIndex]=temp;
}


}

}

閱讀全文

與單片機四燈相關的資料

熱點內容
阿里雲伺服器ip搭建教程 瀏覽:85
解壓和拉伸這一動畫的原理是什麼 瀏覽:740
tbc戰士的命令怒吼 瀏覽:481
idea快捷鍵看源碼 瀏覽:976
手機碎屏解壓工具 瀏覽:245
jsonrpcphp使用 瀏覽:566
網上求職系統源碼 瀏覽:699
pdf數字不顯示 瀏覽:890
convertwordtopdf 瀏覽:253
程序編譯基本單位 瀏覽:23
python分析圖片角度 瀏覽:64
阿里雲伺服器能復制數據嗎 瀏覽:562
python拼音轉換文字 瀏覽:563
動畫遺傳演算法 瀏覽:63
php如何解析xml文件 瀏覽:702
如何改變appstore的語言 瀏覽:462
javahtmlxml 瀏覽:34
單片機啟動文件 瀏覽:812
橙app如何開啟聊天 瀏覽:900
訪問伺服器公網地址 瀏覽:667