四个开关控制LED小灯实现不同效果(基于51单片机)

一、功能实现

四个开关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;
	}
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值