Ⅰ 單片機一個按鍵控制3個led燈,多種狀態
#include <reg51.h>
sbit key =P1^1;
sbit led1=P1^2;
sbit led2=P1^3;
sbit led3=P1^4;
bit key_flag;
bit flag_500ms;
void InitTimer0(void)
{
TMOD |= 0x01;
TH0 = 0x3C;
TL0 = 0x0B0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
unsigned char stat;
void main(void)
{
InitTimer0();
key_flag=0;
stat=0;
while (1)
{
if (key_flag) stat++;
stat%=3;
switch (stat)
{
case 0:
led3=led2=1;
led1=flag_500ms;
break;
case 1:
led1=led3=1;
led2=flag_500ms;
break;
case 2:
led1=led2=1;
led3=flag_500ms;
break;
default :break;
}
}
}
unsigned char key_time,time_500;
void Timer0Interrupt(void) interrupt 1 //50ms
{
TH0 = 0x3C;
TL0 = 0x0B0;
//add your code here!
key=1;
if (!key) key_time++;
else key_time=0;
if (key_time>5)
{
key_time=5;
}
if (key_time==4)key_flag=1;
if (time_500)time_500--;
else
{flag_500ms=1;time_500=10;}
}
Ⅱ 單片機怎麼用一個按鈕控制多種花樣流水燈,只要一按就馬上執行下一種花樣。
程序裡面,給你說一種思路。首先在中斷中設置一個整體變數。中斷時對這個變數賦值。
比如cnt++。if(cnt>=設置的花樣)cnt==0;
然後編寫各個花樣的流水燈子程序。
在主函數中加上判斷函數。
Ⅲ 單片機怎麼實現一個開關控制八個燈按一下亮一個按八下八個燈都亮匯編語言程序
用一個寄存器做變數就可以。
假如按鍵是一個開個,接在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
Ⅳ 單片機如何一個按鈕實現控制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;
}
就可以了,,,順序的話 可以按照具體要求更換下位置就可以了。
Ⅳ 單片機C語言,一個按鍵控制三個流水燈
void main()
{
int i=0; //設置參考變數
//初始化
p1.0=1;
p1.1=0;
p1.2=0;
//進入按鍵操作
while(1)
{
if(p2.2==0)
{
i++;
if(i==1)
{
p1.0=0;
p1.1=1;
p1.2=0;
delay();//延時,由於不知道你用的單片機型號,這個需要你自己設定了。
}
if(i==2)
{
p1.2=1;
p1.0=0;
p1.1=0;
delay();//延時,由於不知道你用的單片機型號,這個需要你自己設定了。
}
if(i==3)
{
p1.0=1;
p1.1=0;
p1.2=0;
delay();//延時,由於不知道你用的單片機型號,這個需要你自己設定了。
i=0;//參考變數歸0
}
}
}
}
Ⅵ 單片機 單個按鍵按一下點亮一個LED1, 在按一下點亮另外一個LED2
#include sbit key1=P1^0; sbit key2=P1^1; sbit led1=P1^2; sbit led2=P1^3; main() { led1=1; led2=1; while(1) { if(key1==0)led1=~led1; if(key2==0)led2=~led2; } }
Ⅶ 單片機89c51一個鍵分別控制三個燈點亮的程序
這個很簡單呀,按一下鍵,你就付一個鍵值,使鍵值在0~2之間切換,當鍵值為0,1,2時分別點亮對應的三個燈就可以了。