06_独立按键

发布时间 2023-11-04 14:55:41作者: 爱吃冰激凌的黄某某

独立按键

image-20231102170335622

原理图

image-20231102170530370

控制LED单个灯的寄存器

image-20231102202149086

独立按键控制LED亮灭

#include <REGX52.H>

void main()
{
	while(1)
	{
		if(P3_1 == 0)
		{
			P2_0=0;
		}
		else
		{
			P2_0=1;
		}
	}
}

运行效果

VID_20231102_204428

按键的抖动

image-20231103145253108

消除抖动可以使用延迟20ms

消除按键抖动后的控制LED状态取反

#include <REGX52.H>

void Delay(unsigned int xms)	//@12.000MHz
{
	unsigned char data i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
	
}

void main()
{
	while(1)
	{
		if(P3_1==0)
		{
			//消除按键抖动
			Delay(20);
			while(P3_1==0);
			Delay(20);
			//LED D1取反
			P2_0=~P2_0;
		}
	}
}

LED移位亮灯

#include <REGX52.H>

void Delay(unsigned int xms)	//@12.000MHz
{
	unsigned char data i, j;

	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

void main()
{
	int count = 0;
	while(1)
	{
		if(P3_1==0)
		{
			//消除抖动
			Delay(20);
			while(P3_1==0);
			Delay(20);
			
			//LED移位亮灯
			P2=~(0x01<<count++);
			if(count==8)
			{
				count=0;
			}
		}
	}
}

VID_20231104_141029