栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

(三)51单片机基础——独立按键

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(三)51单片机基础——独立按键

        之前学会了有关控制LED亮灭的知识点,接下来我们来看一下如何通过独立按键来控制LED灯的亮灭,还是一样的步骤,我们需要来学习一些有关独立按键的电路知识。

        首先独立按键就是控制电路的连通,GND是电源负极,后面四个接口都是接在单片机的CPU上,而单片机接通电源时默认就是高电平,当按键被按下的时候,就变成了低电平,而这个变化可以通过寄存器来获取到(按键松开的时候,寄存器是高电平,按键按下的时候是低电平),再结合代码来解释一下。

#include 

void main()
{
	while(1)
	{
		if(P3_1==0 || P3_0==0)	//P3_1是K1,P3_0是K2,如果K1按键或K2按键按下
		{
			P2_0=0;		//通过P2_0来控制一个LED灯,就不需要像上节那样通过向每个接口赋值来操控
           //LED1输出0,点亮
		}
		else
		{
			P2_0=1;		//LED1输出1,熄灭
		}
	}
}

运行结果如下所示:

独立按键0

接下来我们来看一下通过独立按键来控制LED显示二进制的代码吧,不过可能需要一点C语言基础,要知道取反和基本运算符。

在这之前,还是需要了解一个电路知识,就是消抖,不过我们先来了解一下按键的抖动吧!

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

对于消抖,大概有两种方法,第一是通过硬件消抖,在次不做介绍,第二种就是通过软件来操作,通过延时来消抖。 

#include 

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
		}
	}
}

运行结果如下所示:

独立按键1

这个代码是控制LED灯位移,大家可以试着分析一下,知识点和之前类似,就是加了一个移位的操作来实现LED的位移。

#include 
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< 

运行结果如下所示:

独立按键2

这就是独立按键的一些知识了,就先介绍到这!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号