b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

矩阵键盘检测之行列扫描法:对键盘按1至16的顺序

电脑杂谈  发布时间:2021-02-15 11:01:01  来源:网络整理

用于矩阵键盘检测的行和列扫描方法:

以1到16的顺序为矩阵键盘编号,并通过以下扫描过程获取返回值以确定按下了哪个键。

我所用开发板的矩阵键盘

矩阵键盘检测原理:

1、查询是否按下了一个键。

2、按键抖动处理。

脊椎蛙系列短片_键盘鼠标录制精灵 v40_51 矩阵键盘

3、查询所按下键的行和列位置以获取键值。

先行然后列扫描方法

#include
    #define uchar unsigned char
    #define uint unsigned int
    #define temp P2           //定义按键I/O口
    uchar keyscan()
    {
       uchar num;
       temp=0xf0;
       if(temp!=0xf0)    //检测是否有键按下
       {
          delay_ms(5);    //延时消抖
          if(temp!=0xf0)   //再次检测是否有键按下
          {
             temp=0xf0;     //对应IO口拉高,以便检测
             switch(temp)   //先确定行
             {
                case 0x70: num=1;  break;   //第一行
                case 0xb0: num=5;  break;   //第二行
                case 0xd0: num=9;  break;   //第三行
                case 0xe0: num=13; break;   //第四行
             }
             temp=0x0f;     //对应IO口拉高,以便检测
             switch(temp)   //再确定列
             {
                case 0x07: num=num+0; break;   //第一列
                case 0x0b: num=num+1; break;   //第二列
                case 0x0d: num=num+2; break;   //第三列
                case 0x0e: num=num+3; break;   //第四列
             }
          }
       }
       return num;   //结合行列扫描的值得出按键对应的数值,并返回
    }

脊椎蛙系列短片_51 矩阵键盘_键盘鼠标录制精灵 v40

先列然后行扫描方法

#include
    #define uchar unsigned char
    #define uint unsigned int
    #define temp P2
    uchar keyscan()
    {
       uchar num;
       temp=0x0f;
       if(temp!=0x0f)   
       {
          delay_ms(5);
          if(temp!=0x0f)
          {
             temp=0x0f;    //先确定列
             switch(temp)
             {
                case 0x07: num=1; break;
                case 0x0b: num=2; break;
                case 0x0d: num=3; break;
                case 0x0e: num=4; break;
             }
             temp=0xf0;   //再确定行
             switch(temp)
             {
                case 0x70: num=num+0;  break;
                case 0xb0: num=num+4;  break;
                case 0xd0: num=num+8;  break;
                case 0xe0: num=num+12; break;
             }
          }
       }
       return num;      
    }

注意:这里的排名是相对的。这取决于您自己的接线。请亲身体验。希望对大家有帮助!


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-357408-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...