51单片机独立按键
创始人
2024-05-15 09:23:52
0

文章目录

  • 前言
  • 一、按键原理图
  • 二、代码编写
  • 三、模块化管理按键
  • 总结


前言

本篇文章将带大家学习独立按键按键的基本操作。

独立按键式直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。

一、按键原理图

板子上面一共有4个独立按键,分别接到了P30-P33。
通过原理图可以知道当按键按下时P30-P33都接到了GND,电平为低电平,当按键没有按下时电平为高电平。
在这里插入图片描述

二、代码编写

这里我们需要对按键进行消抖,因为当按键按下时会发生抖动,当按键发生抖动的时候去读取按键值这个时候读出的按键值是不准确的。
在这里我们可以延时10ms等按键电平稳定的时候再去读取按键的值,这样就可以得到比较稳定的按键值了。
当按键按下时引脚的电平会发生如下图一样的抖动,所以需要等待一段时间再去读取电平数值。
在这里插入图片描述

#include //定义独立按键控制脚
sbit KEY1=P3^1;
sbit KEY2=P3^0;
sbit KEY3=P3^2;
sbit KEY4=P3^3;unsigned char key_val = 0;/*延时函数
单位:ms
x:延时的数值
*/
void delayms(unsigned int x)
{unsigned char i;while(x--){for(i=0;i<113;i++);}
}unsigned char key_scan(void)
{if(KEY1 == 0){delayms(10);//延时消抖if(KEY1 == 0){return 0;//代表按键1按下}while(KEY1 == 0);//等待按键松开}else if(KEY2 == 0){delayms(10);//延时消抖if(KEY2 == 0){return 0;//代表按键2按下}while(KEY2 == 0);//等待按键松开}else if(KEY3 == 0){delayms(10);//延时消抖if(KEY3 == 0){return 0;//代表按键3按下}while(KEY3 == 0);//等待按键松开}else if(KEY4 == 0){delayms(10);//延时消抖if(KEY4 == 0){return 0;//代表按键4按下}while(KEY4 == 0);//等待按键松开}
}void main(void)
{while(1){key_val = key_scan();//读取按键值}
}

三、模块化管理按键

什么叫模块化编程?我的理解就是每一个模块都分别写成对应的.c和.h文件,有的人可能会问道为什么要这样写呢?这样写不是增加文件数量吗?其实模块化编程主要的好处就是代码看起来更加整洁,不会显得凌乱,而且方便移植。
这里我们创建一个key.c和key.h文件将按键代码模块化管理起来,方便我们以后的调用。
以后需要使用到按键这个模块的时候将.c和.h文件添加进入我们的工程即可。

key.c

unsigned char key_val = 0;unsigned char key_scan(void)
{if(KEY1 == 0){delayms(10);//延时消抖if(KEY1 == 0){return 0;//代表按键1按下}while(KEY1 == 0);//等待按键松开}else if(KEY2 == 0){delayms(10);//延时消抖if(KEY2 == 0){return 0;//代表按键2按下}while(KEY2 == 0);//等待按键松开}else if(KEY3 == 0){delayms(10);//延时消抖if(KEY3 == 0){return 0;//代表按键3按下}while(KEY3 == 0);//等待按键松开}else if(KEY4 == 0){delayms(10);//延时消抖if(KEY4 == 0){return 0;//代表按键4按下}while(KEY4 == 0);//等待按键松开}
}

key.h
下面的这些宏的作用就是防止头文件的重复包含。

#ifndef __KEY_H
#define __KEY_H//定义独立按键控制脚
sbit KEY1=P3^1;
sbit KEY2=P3^0;
sbit KEY3=P3^2;
sbit KEY4=P3^3;unsigned char key_scan(void);#endif

总结

独立按键的操作还是很简单的,主要就是要主要按键的延时消抖处理。
这里再给大家提一点:延时函数在项目开发中最好就是少使用。延时函数的大量使用会造成系统的卡顿。大家可以想一下可以使用什么方法对按键进行消抖处理。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...