微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 矩阵键盘不行

矩阵键盘不行

时间:10-02 整理:3721RD 点击:
我的开发板上的矩阵键盘用行列反转扫描法一切正常,但是运用郭天祥老师的方法就不对了   请问是怎么会儿事  程序如下
P2=0xfe;
a=P2;
a=a&0xf0;
while(a!=0xf0)
{
  delay(200);
  a=P2;
     a=a&0xf0;
  while(a!=0xf0)
  {
   a=P2;
   switch(a)
   {
    case 0xee : num1=0;
    break;
    case 0xde : num1=1;
    break;
    case 0xbe : num1=2;
    break;
    case 0x7e : num1=3;
    break;
   }
   while(a!=0xf0)
   {
    a=P2;
    a=a&0xf0;
   }  
  }
}  故障情况是 右边两列矩阵键盘无效


《我是菜鸟啥也不懂》,我觉得键盘检测要根据具体电路编程序吧。看下你开发板是怎么接的电路,郭老师的电路貌似不是接P端口的。另外,这个论坛太没氛围了,我发了两个问题贴都没人理我,直接就沉了

P2=0xfe;
a=P2;
a=a&0xf0;
if(a!=0xf0)
{
  delay(200);
P2=0xfe;
  a=P2;
     a=a&0xf0;
if(a!=0xf0)
  {
   a=P2;
   switch(a)
   {
    case 0xee : num1=0;
    break;
    case 0xde : num1=1;
    break;
    case 0xbe : num1=2;
    break;
    case 0x7e : num1=3;
    break;
   }
   while(a!=0xf0)
   {
    a=P2;
    a=a&0xf0;
   }  
  }
}  
用这个看一下,前两个用while的话,有键按下就一直在第一个循环执行,跳不出去了

可能跟P2^6和P2^7这两个端口有关吧。

等我将那些文件下载下来后,仿真一下试试!

弱弱地问一句,哪个论坛人比较多!本人也在学习单片机!

呵呵  我也想知道

我改了呀  郭老师用的P3口 我按我的电路图接的P2口啊

应该不是那个问题吧   那行列反转扫描法 一点问题都没有

你延时delay(10)

等我给个程序你啦!
uchar key()
{
                uchar temp,tepm1;
                P0=0xf0;
                temp=P0;
                P0=0x0f;
                temp1=P0;
                switch(temp|temp1)
                {
                        case 0xee: return 0;
                        case 0xde: return 1;
                        case 0xbe: return 2;
                        case 0x7e: return 3;
       
                         case 0xed; return 4;
                        case 0xdd: return 5;
                        case 0xbd; return 6;
                        case 0x7d; return 7;
                       
                        case 0xed; return 8;
                        case 0xdd: return 9;
                        case 0xbd; return 10;
                        case 0x7d; return 11;
       
                        case 0xed; return 12;
                        case 0xdd: return 13;
                        case 0xbd; return 14;
                        case 0x7d; return 15;
       
                        default: return 16; break;
                }
        }

那两列都没有扫描啊

有问题啊!

什么问题啊  你说出来啊

没有啦  那也扫描了  跟这个格式是一样的  我没发上来

谢谢  不过呢  这是行列式反转扫描法  这个我会  就是不知道为什么这个方法不行

这个有难度啊!

我的也出现那个问题了,我用P3口了,硬件能用,软件怎么也不行

把DISPLAY函数也贴出来,我前天自制键盘调试的时候也是一样,不过我是有一列无法显示,翻来覆去查硬件都找不出原因,后来发现是DISLPAY那里延时了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top