标题: 键盘矩阵 列判断不出,哪里错的 [打印本页]

作者: tzmtzm    时间: 2016-4-15 11:23
标题: 键盘矩阵 列判断不出,哪里错的
#include<reg52.h>
#include"hl52_h.c"
#define uchar unsigned char
void delay(int q)
{
                while(q)
                {
                --q;
        }
}

void scan()
{

   int table ;
   int i,k,hkey,lkey;
   uchar code number[50]={
   0X3f,0X06,0X5b,0X4f,0,0,0,0,0,0,
   0X66,0X6d,0X7d,0X07,0,0,0,0,0,0,
   0X7f,0X6f,0X77,0X7c,0,0,0,0,0,0,
   0X39,0X5e,0X79,0X71,0,0,0,0,0,0, } ;
   P3=0X0f;
  if(P3!=0X0f)                         // 行正列负电频,行P3.0起,列P3.4起
  delay(10);
                      i=P3&0x0f;                  //判断行 ,列取与操作,全部统一。行是低4位。
                          switch(i)
                          {
                          case 0X0e  :                //行1
                                hkey= 0;
                                break;
                          case 0X0d:                    //行2
                                hkey=1;
                                        break;
                         case  0X0b:                    //行3
                                hkey=2;
                                        break;
                     case  0X07:                //行4
                                hkey=3;
                                        break;      
                      }
                 k=P3&0Xf0;                               //列判断 列初始负。
                         switch(k)
                         {
                    case  0X10:
                                lkey=0;
                                        break;
                        case  0X20:
                                lkey=1;
                                        break;
                        case  0X80:
                                lkey=2;
                                        break;
                        case  0Xf0:
                                lkey=3;
                                        break;

                         }
                while(P3!=0X0f)
                {
                 delay(10 );
                }
          table=hkey*10+lkey;
          DU=1;
          //P0=0Xff ;   测试用
         P0=number[table];
          DU=0;
          WEI=1;
          P0=0X00;
          WEI=0;

       
}


作者: tzmtzm    时间: 2016-4-15 11:24
每行只显示一个数字。哪里错了  高手 版主 帮帮忙




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1