導航:首頁 > 操作系統 > 單片機開關燈亮燈

單片機開關燈亮燈

發布時間:2025-07-22 20:27:38

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

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

② 如何用單片機一個按鈕開關控制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;
*/

}

}

}

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

③ 請教一下STC單片機1秒鍾內按2下按鈕開關LED燈亮代碼怎樣寫啊

很簡單的。
循環(1){
檢測按鍵,等待按下;
發現按下後,延時消抖,等待釋放,然後執行下面的循環;
循環(1){ //循環檢測1秒鍾
發現按下後,燈亮,等待釋放,然後就跳出循環;
延時10ms;
次數加一;
次數不到100,繼續循環
到了100(即1s了),關燈,然後就跳出循環;

}

④ 單片機怎麼實現一個開關控制八個燈按一下亮一個按八下八個燈都亮匯編語言程序

用一個寄存器做變數就可以。

假如按鍵是一個開個,接在P1.0,八個燈在P0,低電平燈亮
程序是這樣的
MOV 30H ,#00
LOP :
SETB P1.0
JNB P1.0, PRESS
AJMP LOP
PRESS:
INC 30H
MOV A,30H
CJNE A,#9,L_NEXT
MOV 30H,#1
L_NEXT:
JNB P1.0,$
MOV A,30H
CJNE A,#1 ,LED1_ON
CJNE A,#2, LED2_ON
CJNE A,#3, LED3_ON
CJNE A,#4, LED4_ON
CJNE A,#5, LED5_ON
CJNE A,#6, LED6_ON
CJNE A,#7, LED7_ON
CJNE A,#8, LED8_ON
LJMP LOP

LED1_ON: MOV P0,#0FEH //亮一個燈
LJMP LOP
LED2_ON: MOV P0,#0FDH //亮一個燈
LJMP LOP
LED3_ON: MOV P0,#0F8H //亮一個燈
LJMP LOP
LED4_ON: MOV P0,#0F0H //亮一個燈
LJMP LOP
LED5_ON: MOV P0,#0E0H //亮一個燈
LJMP LOP
LED6_ON: MOV P0,#0D0H //亮一個燈
LJMP LOP
LED7_ON: MOV P0,#080H //亮一個燈
LJMP LOP
LED8_ON: MOV P0,#00H //亮一個燈
LJMP LOP

⑤ 單片機開關閉合燈亮,開關斷開燈滅

單片機程序問題,開關問題。
1、單片機程序問題:檢查單片機的程序是否正確,是否存在邏輯錯誤或死循環等問題。
2、開關問題:檢查開關是否正常,是否存在接觸不良或損壞等問題,更換損壞的開關或清潔接觸不良的開關。

⑥ 單片機實驗板一接通電源LED燈就亮了是什麼情況

說明你晶元裡面已經有程序了,如果你新買的開發板的話應該是賣家為了測試板子下載的程序。
你如果需要下載兄喊自己的可以直接重新下載,如果怕有問題可以把MCU拆下來看看是不是燈不在亮了。如果拆羨或野下MCU燈還這么亮那恭喜你了,這個板子活了哈哈團唯哈

閱讀全文

與單片機開關燈亮燈相關的資料

熱點內容
蘋果6app搜索怎麼關閉 瀏覽:291
蘇州移動雲計算中心伺服器運維 瀏覽:438
天星pdf 瀏覽:913
園林學pdf 瀏覽:859
殺程序員祭天什麼意思 瀏覽:675
填充演算法頂點有小數 瀏覽:775
有效含氯量演算法 瀏覽:19
愛他美pre溯源碼查詢 瀏覽:667
如何接通外國伺服器 瀏覽:434
php網站外包公司 瀏覽:798
php評論回復功能 瀏覽:397
國內加密貨幣卡 瀏覽:739
opencvpdf 瀏覽:70
php和前端那個容易 瀏覽:87
申威平台編譯開源軟體 瀏覽:48
java監控工具 瀏覽:305
壓縮包解壓圖 瀏覽:462
javaascii轉字元 瀏覽:179
單片機寄存器a和b 瀏覽:685
tls編程 瀏覽:591