请教接一位的数码管能正常显示数,接两位的就像图片中乱码了?这是为什么呢?

2019-07-18 09:55发布

4*4矩阵键盘输入一个两位数,显示在一个两位数码管上。程序如下:现在的问题是我接一位的数码管能正常显示数,接两位的就像图片中乱码了?这是为什么呢?
#include<reg51.h>
unsigned char code DSY_CODE[]=
{
         0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff
};
unsigned char keyNO0=16,keyNO1=16;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
void delay(int x)
{
  unsigned int i;
  for(;x>0;x--)
  for(i=0;i<120;i++);
}
void keyscan()
{
unsigned char temp,temp1;
temp=P1&0xf0;
P1=0x0f;
temp1=P1&0x0f;
switch(temp)
{
   case 0xe0:keyNO0=0;break;
   case 0xd0:keyNO0=1;break;
   case 0xb0:keyNO0=2;break;
   case 0x70:keyNO0=3;break;

}
switch(temp1)
{
  case 0x0e:keyNO1=0;break;
  case 0x0d:keyNO1=1;break;
  case 0x0b:keyNO1=2;break;
  case 0x07:keyNO1=3;break;

}
P3=temp;
}

void main()
{
unsigned char keyNO=16,prekey=16,count=0;
while(1)
{P1=0xf0;
  if(P1!=0xf0)
  {
          keyscan();
        count++;
  keyNO=keyNO0*4+keyNO1;prekey=keyNO;
  //P0=~DSY_CODE[prekey];
           if(count==1)
          {        
                  P2_6=0;
                P2_7=1;
                P0=~DSY_CODE[prekey];
                delay(500);
          }
          if(count==2)
          {        
                  P2_7=0;
                P2_6=0;
                count=0;
                P0=~DSY_CODE[prekey];
                delay(500);
          }
  }


}
}  



补充内容 (2017-2-25 13:49):
现在显示的问题解决了,就是不知道怎么分别对第一个数码管按键输入和对第二个数码管按键输入?有没有人帮忙看看
电路图 电路图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
程能武
1楼-- · 2019-07-18 10:48
 精彩回答 2  元偷偷看……
程能武
2楼-- · 2019-07-18 11:18
比如:table[]={0xfe,0xfb}; //位选数据
int   flag;对位选位进行选择!
即table[flag];
你按下按键这个flag自动加1.
并判断flag

一周热门 更多>