求单片机点动开关控制LED灯的程序(求51单片机一个点动开关控制三个led程序)
- 求51单片机一个点动开关控制三个led程序
- 求一个51单片机的程序:一个按键控制led灯闪烁,就是按一下灯闪,再按灯就灭了
- 求一段51单片机用按键控制LED的程序。
- 单片机通过按钮控制一个LED小灯的亮灭,请问这个程序怎么写
求51单片机一个点动开关控制三个led程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar j,k;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
void delay(int ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
uchar code tab[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfe,0xfb,0xef,0x7f,0xfd,0xf7,0xdf,0x7f,
};
void keyscan()
{
while(!key1)
{
delay(10);
if(key1)
k=1;
}
while(!key2)
{
delay(10);
if(key2)
k=2;
}
while(!key3)
{
delay(10);
if(key3)
k=3;
}
}
void main()
{
while(1)
{
keyscan();
switch(k)
{
case 1:
{
for(j=0;j<8;j++)
{
keyscan();
if(k!=1)
break;
P1=tab[j];
delay(200);
}
};break;
case 2:
{
for(j=0;j<8;j++)
{
keyscan();
if(k!=2)
break;
P1=tab[j+8];
delay(200);
}
};break;
case 3:
{
for(j=0;j<8;j++)
{
keyscan();
if(k!=3)
break;
P1=tab[j+16];
delay(200);
}
};break;
default:
break;
}
}
}
求一个51单片机的程序:一个按键控制led灯闪烁,就是按一下灯闪,再按灯就灭了
LED BIT P1.0
KEY BIT P1.1
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
CLR 00H
MAIN1:
JB KEY,LOOP
JNB KEY,$
CPL 00H
LOOP:
JNB 00H,LOOP1
CPL LED
LCALL DELAY
SJMP MAIN1
LOOP1:
SETB LED
SJMP MAIN1
DELAY:
MOV R2,#200
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
RET
END
求一段51单片机用按键控制LED的程序。
while(1) { if(num>=20) //num==20最好改成 >=20 防止由于按銉延时而错过num==20的机会而使程序出现长时的混乱 { num=0; led1=~led1; led2=~led2; } if (key==0)//按键是否按下 { 延时10-20ms; while(key==0);//按键是否抬起 if (tr0==1)tr0=0: else tr0=1: } } 也可以用开关中断来实现 如果按键不听使唤,在if (key==0)后大括号里的延时语句后再加一次if (key==0)判断
单片机通过按钮控制一个LED小灯的亮灭,请问这个程序怎么写
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led
的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后
就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); //
等待按键放开led1=~led1;}