4*4矩阵键盘 求助

2019-07-16 05:16发布

uchar Keycan() //按键扫描程序 P3.0--P3.3为行线 P3.4--P3.7为列线
{
uchar rcode,ccode,temp;
P3 = 0xF0;      // 发全0行扫描码,列线输入
    temp = P3&0xF0;
if(temp != 0xF0) // 若有键按下
{
     delay(5);// 延时去抖动
  P3 = 0xF0;
  temp = P3&0xF0;
     if(temp != 0xF0)
     {
      rcode = 0xFE;         // 逐行扫描初值
      while((rcode&0x10) != 0)// 扫描次数(4次)
      {
          P3 = rcode;         // 输出行扫描码
       if((P3&0xF0) != 0xF0) // 本行有键按下
       {
           ccode =(P3&0xF0)|0x0F;
     do{;}
     while((P3&0xF0) != 0xF0);//等待键释放
     return ((~rcode) + (~ccode));// 返回键编码
       }
       else
       rcode = (rcode<<1)|0x01; // 行扫描码左移一位
      }
   }
   }  
  return 0; // 无键按下,返回值为0
}
void KeyDispaly(uchar key)
{
   switch(key)
   {
     case 0xEE: write_lcd(112,25,"预热"); break;
  default: break;
   }
}
void main()
{   
uchar Key;
lcd_init();
disp_init();
while(1)
{
  Key = Keycan();   
  KeyDispaly(Key);
    }
}
proteus仿真按键按下没反应,送不了显示 请问这是什么情况求教。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。