三、独立按键控制LED

三、独立按键控制LED

独立按键:

轻触按键,相当于一种电子开关,按下接通,松开时断开。

实现原理:通过轻触按键内部的金属弹片受力弹动来实现接通和断开。

IO口默认高电平,按下按键之后变成低电平。(按下就相当于接地)

寄存器通过检测高低电平检测按键是不是被按下。

1、独立按键控制LED亮灭

代码:(默认不写头文件)

void main()
{
	while(1)
	{
		if(P3_1==0)//检测按键是否按下
		{
			P2_0=0;//P2=0xfe是对整个寄存器操作,八个为一组。现单个使用只需要控制输出0或者1
		}
		else
		{
			P2_0=1;
		}
	
	
	}


}

2、按键的抖动

对于机械开关,触点断开闭合时,由于机械触点的弹性作用一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。

软件消抖

通过Delay,来过滤掉抖动。

void main()
{
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);//按下消抖
			while(P3_0==0);//没松手不会做出反应
			Delay(20);//松开消抖
			
			P2_0=~P2_0;//取反
		}
		
	}
}

3、独立按键控制LED显示二进制

代码

void main()
{
	unsigned char LEDNum=0;//刚好和寄存器位数匹配
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);
			while(P3_1==0);
			Delay(20);
			
			LEDNum++;
			P2=~LEDNum;
		}
		
	}

}

4、独立按键控制LED移位

代码

	unsigned char LEDNum;//和寄存器位数匹配
void main()
{
	P2=~0x01;
	while(1)
	{
		if(P3_1==0)
		{
				Delay(20);
			while(P3_1==0);
				Delay(20);
		
			LEDNum++;
			if(LEDNum>=8)
				LEDNum=0;
			P2=~(0x01<<LEDNum);//LED左移
		}	
		
		if(P3_0==0)//和第一个if平等关系
		{
				Delay(20);
			while(P3_0==0);
				Delay(20);
		
			
			if(LEDNum=0)
				LEDNum=7;
			else
				LEDNum--;
			P2=~(0x01<<LEDNum);//LED右移
		}	
		
		
		
		
	
	
	}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值