我是靠谱客的博主 时尚电话,最近开发中收集的这篇文章主要介绍51单片机入门教程_独立按键控制系列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、老规矩 先上代码

#include <REGX52.H>

void main()
{
	while(1)
	{
		if(P3_1==0 || P3_0==0)	//如果K1按键或K2按键按下
		{
			P2_0=0;		//LED1输出0,点亮
		}
		else
		{
			P2_0=1;		//LED1输出1,熄灭
		}
	}
}

我们可以看到其本质还是对端口进行操作 因而我们需要从其原理图继续出发

 我们可以看到 独立按键的每一个口右侧接地 因此单我们点击独立按键的时候 MCU所接受到的是低电平信号 所以我们可以利用这点来控制LED灯的亮灭

但是其缺点也很明显 就是我们只有持续按住的时候 LED灯才能够保持亮着的状态

二、通过独立按键对LED灯进行一波控制

1、首先,我们需要理解独立按键本身所存在的一些问题

 对于机械开关所存在的抖动,我们需要利用延时函数进行处理,从而使我们的控制达到稳定的状态

2、因此我们的代码应该这样子设计

#include <REGX52.H>

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

void main()
{
	while(1)
	{
		if(P3_1==0)			//如果K1按键按下
		{
			Delay(20);		//延时消抖
			while(P3_1==0);	//松手检测
			Delay(20);		//延时消抖
			
			P2_0=~P2_0;		//LED1取反
		}
	}
}

其中 注意松手检测处 如果K1按下的时候 没有松手 就会在while里面一直循环不出来 也就没办法执行下一步语句 即灯不会亮

当我们再次按下K1的时候 灯就会重新暗淡下去 因为我们此时对灯进行了取反

三、通过独立按键对LED显示二进制

1、老规矩 先上代码

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

void main()
{
	unsigned char LEDNum=0;
	while(1)
	{
		if(P3_1==0)			//如果K1按键按下
		{
			Delay(20);		//延时消抖
			while(P3_1==0);	//松手检测
			Delay(20);		//延时消抖
			
			LEDNum++;		//变量自增
			P2=~LEDNum;		//变量取反输出给LED
		}
	}
}

2、在二的基础上 对控制灯的二进制数进行操作 关键点就是二进制的转换罢了

四、通过独立按键对LED显示二进制

1、上代码

#include <REGX52.H>
void Delay(unsigned int xms);

unsigned char LEDNum;

void main()
{
	P2=~0x01;				//上电默认LED1点亮
	while(1)
	{
		if(P3_1==0)			//如果K1按键按下
		{
			Delay(20);
			while(P3_1==0);
			Delay(20);
			
			LEDNum++;		//LEDNum自增
			if(LEDNum>=8)	//限制LEDNum自增范围
				LEDNum=0;
			P2=~(0x01<<LEDNum);	//LED的第LEDNum位点亮
		}
		if(P3_0==0)			//如果K2按键按下
		{
			Delay(20);
			while(P3_0==0);
			Delay(20);
			
			if(LEDNum==0)	//LEDNum减到0后变为7
				LEDNum=7;
			else			//LEDNum未减到0,自减
				LEDNum--;
			P2=~(0x01<<LEDNum);	//LED的第LEDNum位点亮
		}
	}
}

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

2、so easy 看看注释 你学会了不?

最后

以上就是时尚电话为你收集整理的51单片机入门教程_独立按键控制系列的全部内容,希望文章能够帮你解决51单片机入门教程_独立按键控制系列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部