主页 > 其他  > 

51单片机-按键

51单片机-按键
1、独立按键 1.1、按键介绍

轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。

1.2、独立按键原理

按键在闭合和断开时,触点会存在抖动现象。P2\P3\P1都是准双向IO口,内部都有上拉电阻。P0口是漏极开路,没有上拉,只有外部加一个上拉,才能对高低电平进行控制。

在硬件和软件上进行消抖处理

1)硬件消抖电路(成本高): 

通过RC的充放电延迟时间,利用施密特触发器(74HC132)可以整理波形成为方方正正的波形。

 

2)软件消抖

 通过延迟来解决。

1.3、编写独立按键控制程序 #include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit led = P2^0; sbit k1=P3^1; // 开关接口 void delay(u16 i) //10us { while(i--); } void keypros() { if(k1==0) { //消抖处理 delay(1000); //10ms if(k1==0){ led=~led; } while(!k1); //再次按下 } } void main() { while(1) { keypros(); } } 2、矩阵按键 2.1、矩阵按键的由来

将独立按键每一个按键的管脚连接起来,形成一根线。矩阵键盘用最少的IO口控制电路。

矩阵按键扫描的原理:

 逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,就这样能够确定是哪一个按键按下了。 2.2、矩阵按键扫描原理 #include "reg52.h" #include <intrins.h> typedef unsigned char u8; typedef unsigned int u16; //定义38译码器 sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4; #define GPIO_KEY P1 #define GPIO_DIG P0 u8 keyValue; // 发生字码:code关键词,保持变量到flash里面,如果没有code保持在data里面 u8 code smgduan[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(u16 i) { while(i--); } void keyDown() { u8 a; GPIO_KEY=0X0f; if(GPIO_KEY!=0X0F){ // 判断是否按键按下 delay(1000); //延迟消抖 if(GPIO_KEY!=0X0F){ GPIO_KEY=0X0F; swith(GPIO_KEY) { case(0x07): keyValue=0; break; //S1 根据按下的按键进行判断 case(0x0b): keyValue=1; break; //S2 case(0x0d): keyValue=2; break; //S3 case(0x0e): keyValue=3; break; //S4 } GPIO_KEY=0XF0; swith(GPIO_KEY) { case(0x70): keyValue=keyValue; break; //S1 根据按下的按键进行判断 case(0xb0): keyValue=keyValue+4; break; //S2 case(0xd0): keyValue=keyValue+8; break; //S3 case(0xe0): keyValue=keyValue+12; break; //S4 } // 判断按键是否松开,GPIO_KEY检测行按键已经松开,a<50用于判断是否一直按着 while((a<50)&&(GPIO_KEY!=0xf0)) { delay(10000); a++; } } } } void main() { //选择数码管 LSA=0; LSB=0; LSC=0; while(1) { keyDown(); GPIO_DIG=smgduan[keyValue]; } }
标签:

51单片机-按键由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“51单片机-按键