一、功能实现
四个开关S1、S2、S3、S4,S1开关后,流水灯自上往下流,S2按下后,流水灯自下往上流;S3按下后,所有灯闪烁;S4按下后,所有效果均关闭。
二、proteus仿真原理图
三、代码
#include<reg51.h>
sbit S1=P0^0;
sbit S2=P0^1;
sbit S3=P0^2;
sbit S4=P0^3;
void delay(unsigned int i)
{
while(i--);
}
void main()
{
while(1)
{
if(~S1&&S2&&S3&&S4) //第一个开关按下,其他开关未按下,流水灯自上往下
{
P1=0XFE;
delay(20000);
P1=0XFD;
delay(20000);
P1=0XFB;
delay(20000);
P1=0XF7;
delay(20000);
P1=0XEF;
delay(20000);
P1=0XDF;
delay(20000);
P1=0XBF;
delay(20000);
P1=0X7F;
delay(20000);
P1=0XFF;
}
else if(S1&&~S2&&S3&&S4) //S2按下后,其他未按下,流水灯自下往上流
{
P1=0X7F;
delay(20000);
P1=0XBF;
delay(20000);
P1=0XDF;
delay(20000);
P1=0XEF;
delay(20000);
P1=0XF7;
delay(20000);
P1=0XFB;
delay(20000);
P1=0XFD;
delay(20000);
P1=0XFE;
delay(20000);
P1=0XFF;
}
else if(S1&&S2&&~S3&&S4) //S3按下,其他未按下,所有灯闪烁
{
P1=0X00;
delay(20000);
P1=0XFF;
delay(20000);
}
else if(~S4) //S4按下,所有灯熄灭,S4相当于总开关
{
P1=0XFF;
}
else //其他情况,默认灯全灭
P1=0XFF;
}
}