单片机学习小组
直播中

王莉

7年用户 1272经验值
私信 关注

怎样去编写单片机的独立按键与矩阵按键的扫描函数呢

单片机的独立按键是什么?单片机的矩阵按键是什么?
怎样去编写单片机的独立按键与矩阵按键的扫描函数呢?

回帖(1)

张梅

2022-2-23 09:24:48
蓝桥杯单片机硬件基础




独立按键


跳线帽需要短接J5口的3和2引脚,按键能使用的仅有第一列(即上图中S4、S5、S6、S7)。当按键按下时,相应的P30-33口输入为低电平,由此编写独立按键扫描函数。

矩阵按键


跳线帽需要短接J5口的1和2引脚,按键能使用16个(即上图中S4-S19)。矩阵按键的扫描方法可采用行列扫描法,分为两步:



  • 将行的输出设为低电平(0),检测列的电平输入值。
  • 将列的输出设为低电平(0),检测行的电平输入值。


将两个检测值进行叠加,计算判断哪个按键被按下;具体的原理这里就不展开讲解了,较为简单。


相关代码编写:




  • 独立按键扫描函数:


void KEY_1(void)
{
        static u8 key_flag = 1;
        if(key_flag && (P30 == 0||P31 == 0|| P32 == 0||P33 == 0))
        {
                key_flag = 0;
                if(P30 == 0)        //S7
                {      
                }
                else if(P31 == 0)   //S6
                {
                }
                else if(P32 == 0)   //S5
                {
                }
                else if(P33 == 0)   //S4
                {
                }
        }
        else if(P33 && P32 && P31 && P30) key_flag = 1;
}



  • 矩阵按键扫描函数:


u16 j;
void KEY_2(void)
{
        u16 k; static u16 i;
      
        P44 = 0; P42 = 1; P35 = 1; P34 = 1;
        k = P3;
        P44 = 1; P42 = 0;
        k = (k<<4)|(P3&0x0f);
        P42 = 1; P35 = 0;
        k = (k<<4)|(P3&0x0f);
        P35 = 1; P34 = 0;
        k = (k<<4)|(P3&0x0f);
      
        k = ~k;
        i = k&(k^j);
        j = k;
      
        switch(i)
        {
                case 0x8000: break;     //S4
                case 0x4000: break;
                case 0x2000: break;
                case 0x1000: break;
               
                case 0x0800: break;     
                case 0x0400: break;
                case 0x0200: break;
                case 0x0100: break;
               
                case 0x0080: break;
                case 0x0040: break;
                case 0x0020: break;
                case 0x0010: break;
               
                case 0x0008: break;
                case 0x0004: break;
                case 0x0002: break;
                case 0x0001: break;
        }
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分