51单片机独立按键控制led灯速度(51单片机四位数码管4个LED灯4个按键实现多种功能)
51单片机独立按键控制led灯速度(51单片机四位数码管4个LED灯4个按键实现多种功能)
任务描述:用89C51单片机实现如下功能:<初始状态为数码管显示2020,四个灯灭。 1、电路有四个控制按键,四个灯,四个数码管; 2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮; 3、按键2,按下,第二个数码管开始从0-9显示偶数,同时四个灯的偶数灯亮(即2、4个灯亮); 4、按键3,按下,第三个数码管从0-9显示奇数,同时四个灯的奇数灯亮(即1、3个灯亮); 5、按键4,按下,恢复到初始状态;
#include<reg51.h>
unsigned char tube1[]={0x5b 0x3f 0x5b 0x3f};//数码管初始状态2020 字符码
unsigned char tube2[]={0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f};//共阴极字符码
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit led1=P3^0;
sbit led2=P3^1;
sbit led3=P3^2;
sbit led4=P3^3;
void delay(unsigned int time);
void main()
{
unsigned char i W;
while(1)
{
if(key1==1&key2==1&key3==1) //初始状态
{
W=0x01;
P3=0X00;
for(i=0;i<4;i )
{
P1 =W;
W<<=1;
P0=tube1[i];
delay(10);
P1 =0x00;
}
}
if(key1==0) // 按键1按下
{
delay(10);
if(key1==0)
{
led1=1;
led2=0;
led3=0;
led4=0;
W=0x08;
for(i=0;i<10;i )
{
if(key2==0|key3==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key1);
delay(10);
while(!key1);
}
if(key2==0) //按键2按下
{
delay(10);
if(key2==0)
{
led1=0;
led3=0;
led2=1;
led4=1;
W=0x04;
for(i=0;i<10;i=i 2)
{
if(key1==0|key3==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key2);
delay(10);
while(!key2);
}
if(key3==0) //按键3按下
{
delay(10);
if(key3==0)
{
led1=1;
led3=1;
led2=0;
led4=0;
W=0x02;
for(i=1;i<10;i=i 2)
{
if(key2==0|key1==0|key4==0)
break;
P1 =W;
P0=tube2[i];
delay(1000);
P1 =0x00;
}
}
while(!key3);
delay(10);
while(!key3);
}
}
}
void delay(unsigned int time)
{
unsigned int j;
for(;time> 0;time--)
for(j=0;j<125;j );
}
仿真视频
51单片机四位数码管4个LED灯4个按键实现多种功能的仿真视频(点击蓝色字体可查看视频)
#C语言##单片机##PLC##电工##电子技术#