導航:首頁 > 操作系統 > c51單片機用開關控制燈

c51單片機用開關控制燈

發布時間:2023-11-21 20:56:06

單片機C51編程問題:怎樣實現一個開關控制兩個燈按一次燈1亮;兩次,燈1,燈2亮;三次,全滅。

單片機C51編程問題:要實現一個開關控制兩個燈,按要求兩個燈有3種狀態,就要聲明一個變數,每按一下開關,變數加一,且變數取值為1,2,3,大於3再回1,又重復控制兩個燈亮滅變化。變數加一後,就根據變數的三個值,去控制兩個燈的三個狀態了。用模擬實現,如下模擬圖。

Ⅱ 怎麼用89C51單片機實現用一個開關控制8個流水燈,要求開關按下去松開是亮的,再按下去松開是滅的

開關,接在 P2.7 與地之間。

#include <AT89X51.H> //預處理命令

void w(unsigned char k)
{
unsigned int a; //定義變數a 為int 類型
if (k) {
while(P2_7); //沒有按就循環,等待按下
for (a = 0; a < 600; a++); //延時消抖
while(P2_7); //沒有按就循環
}
else while(!P2_7); //按下就循環,等待松開
}

void main(void) //主函數名
{
while(1) {
w(1); P1_0 = 0; w(0); P1_0 = 1;
w(1); P1_1 = 0; w(0); P1_1 = 1;
w(1); P1_2 = 0; w(0); P1_2 = 1;
w(1); P1_3 = 0; w(0); P1_3 = 1;
w(1); P1_4 = 0; w(0); P1_4 = 1;
w(1); P1_5 = 0; w(0); P1_5 = 1;
w(1); P1_6 = 0; w(0); P1_6 = 1;
w(1); P1_7 = 0; w(0); P1_7 = 1;
}
}

Ⅲ 單片機用c語言,按鈕控制一個LED燈,要求按下松開,LED亮,按下松開,LED暗!循環

1、首先打開桌面上的keil軟體,在進行對51單片機進行編程時最常用的就是keil軟體。

Ⅳ 如何用單片機一個按鈕開關控制3個燈3種效果。流水。閃爍。還有一直亮。用keil編程。

下面是用C51編寫的簡單程序:
#include <reg51.h>
#include <intrins.h>
sbit io_Key = P1 ^ 1;
sbit led1 = P1 ^ 2;
sbit led2 = P1 ^ 3;
sbit led3 = P1 ^ 4;
unsigned char ucCount = 0;
bit flag05s = 0;
//---------------------------------
void delay125us(void) //@12.000MHz
{
unsigned char i;
i = 60;
while (--i);
}

void Timer0Init(void) //10毫秒@12MHz
{
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01; //設置定時器模式
TL0 = 0xF0; //設置定時初值
TH0 = 0xD8; //設置定時初值
TR0 = 1; //開定時器0
ET0 = 1; //開定時器0中斷
EA = 1; //開總中斷
}
//T0中斷用來計數器溢出
void zd0(void) interrupt 1
{
TL0 = 0xF0; //設置定時初值
TH0 = 0xD8; //設置定時初值
if(++ucCount >= 50)
{
ucCount = 0;
flag05s = 1; //g_flag05s = isYes定時0.52秒到,用於測量周期延時
}

}

void main(void)
{
unsigned char CountTemp = 0, ucState = 0;
Timer0Init();

while(1)
{
//-------------------------------
//簡單的按鍵檢測程序:
io_Key = 1;
_nop_();
if( io_Key == 0 )
{
CountTemp = 0;
do
{
delay125us();
if( io_Key != 0 ) break;
} while(++CountTemp > 160); // 延時20ms去抖動

if(CountTemp > 160)//如果按鍵時間有效,改變狀態
{
switch(ucState)
{
case(0):
{
ucState = 1;

led1 = 0;
led2 = 0;
led3 = 0;
}
break;
case(1):
{
ucState = 2;
led1 = 0;
led2 = 0;
led3 = 0;
}
break;
case(2):
{
ucState = 0;
led1 = 0;
led2 = 1;
led3 = 1;
}
break;

}
while(io_Key == 0); //等待按鍵釋放
}

}
//------------------------------
//每0.5秒改變一下LED狀態
if(flag05s == 1)
{
flag05s = 0;
switch(ucState)
{
case(0):
{
led1 = !led1;
led2 = !led2;
led3 = !led3;
}
break;
case(1):
{
bit ledTemp = led1;
led1 = led2;
led2 = led3;
led3 = ledTemp;
}
break;
//LED常亮可以忽略改變LED狀態
/*
case(2):
{
led1 = 0;
led2 = 0;
led3 = 0;
}
break;
*/

}

}

}

}
//-----------------------------------------------
//上面程序中有很多地方可以優化,這里只是給出一個參考供學習。

Ⅳ 求單片機c51的C語言編程:設當開關為1時,控制2個led交替閃爍,閃爍時間為5秒

#include#,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==0xff)l

閱讀全文

與c51單片機用開關控制燈相關的資料

熱點內容
周轉材料核演算法 瀏覽:353
學nodejs還是php好 瀏覽:275
電信營業廳app怎麼買q幣 瀏覽:917
linux退出登陸 瀏覽:534
python查找相似圖片的代碼 瀏覽:334
趙麗pdf 瀏覽:659
如何蘋果手機app不要自動更新 瀏覽:977
pythonflask路線教程 瀏覽:256
程序員職業有哪些好處 瀏覽:711
大都會軟體app如何掃碼 瀏覽:436
單片機0x38 瀏覽:756
程序員浪漫工作 瀏覽:329
php幾分鍾前 瀏覽:308
項目編譯及運行 瀏覽:894
程序員的基本功 瀏覽:524
遺傳演算法排班 瀏覽:291
如何加密金融安全網 瀏覽:31
家裡的wifi太卡了怎麼樣自己加密 瀏覽:235
華為鏈路聚合命令 瀏覽:427
apache自動運行php 瀏覽:521