这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 51单片机矩阵键盘

共6条 1/1 1 跳转至

51单片机矩阵键盘

菜鸟
2013-12-02 22:20:41     打赏

通常关于4*4矩阵键盘的扫描检测程序是这样的:

void keyscan()
{
     unsigned char temp,key;
     P3=0xfe;
     temp=P3;
     temp=temp&0xf0;
     if(temp!=0xf0)
     {
       delayms(10);
       temp=P3;
       temp=temp&0xf0;
       if(temp!=0xf0)
          {
             temp=P3;
            switch(temp)
              {
                  case 0xee:
                   key=0;
                   break;
          .........//省略其他扫描

         }
         while(temp!=0xf0)
         {
           temp=P3;
           temp=temp&0xf0;
         }
        display(key);
      }
    }

这里  if(temp!=0xf0) 这句话承担最终的检测判定角色,我不懂,按照C语言的规则,temp是个变量,跟P3应该不相关啊,P3把值赋给temp后,P3应该是不变的,之后temp的值应该跟P3就脱离关系了,但为什么这里把P3赋值给temp后,就可以根据temp的值来判定P3 I/O口的值呢?求大家指点


高工
2013-12-02 22:27:51     打赏
2楼

粗略一看, if(temp!=0xf0)像是在防抖

矩阵键盘扫描有几种方式,撸主是哪种呢?

最好上图。


院士
2013-12-02 23:46:31     打赏
3楼
键盘扫描功能还是很强大的。楼主 多查查资料吧~~~

院士
2013-12-03 10:25:58     打赏
4楼
二楼很邪恶

专家
2013-12-03 18:05:37     打赏
5楼
首先,楼主分析的正确,,如果单从程序上看是不能理解的。这可能是51单片机,p3是寄存器。

菜鸟
2013-12-08 21:56:48     打赏
6楼
就是普通的4*4键盘,16个按键,8条线接到一个I/O口

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]