【蓝桥杯笔记】独立按键、矩阵键盘的使用


按键原理图

 按键原理

(1)使用独立按键:

  (使用跳线帽将2、3连接)

  当按键S7、S6、S5、S4按下时,分别对应P30、P31、P32、P33引脚的值将变为0。可根据对应引脚的电平来确定相应按键是否按下。

(2)使用矩阵键盘:

  (使用跳线帽将1、2连接)

  先将行P30~P33其中某一行输出电平为0,其余行输出电平为1。扫描列P34、P35、P42、P44,若其中有一列的电平变为0,则对应行列的按键按下。

  例如:令P32=0,其余行为1。扫描P34、P35、P42、P44的值,若其中P35=0,则按键S13被按下。

使用:

  需要实现三个过程:

  (1)检测按键是否按下

  (2)消抖

    按键按下时,相应引脚电平不会直接稳定的由0变为1,而是存在一段前沿抖动。在此过程中容易被误以为有多次按键按下,扰乱程序。因此需要消抖操作。

                 

 

 

     实现:检测到按键第一次按下后,延时一小段时间,使按键进入稳定状态后再检测。

  (3)防止连续扫描

     实现:直至按键抬起后,再结束按键扫描。

代码实现:

(1)独立按键

sbit S7 = P3^0;
sbit S6 = P3^1;
sbit S5 = P3^2;
sbit S4 = P3^3; 

void KEYscan_BTN()
{
    if(S7==0)
    {
        Delay10ms();//消抖 if(S7==0)
        {
            //执行操作
            while(!S7);//防止连续触发
        }
    }
}

(2)矩阵键盘

sbit R1 = P3^0;
sbit R2 = P3^1;
sbit R3 = P3^2;
sbit R4 = P3^3; 

sbit C1 = P4^4;
sbit C2 = P4^2;
sbit C3 = P3^5;
sbit C4 = P3^4;

void KEYscan_KBD()
{
   C1=C2=C3=C4=1;//初始化列
   R2=R3=R4=1; R1
=0;//令某一行输出为0if(C4==0)//判断对应的列输出是否为0 { Delay10ms();//消抖 if(C4==0) { //执行操作while(!C4);//防止多次触发 } } }

 

总结:

1、使用按键先,确定其工作模式(独立按键、矩阵键盘),并使用跳线帽进行连接;

2、使用按键需要进行消抖和防止多次触发。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM