在四位共阳极数码管上显示键盘输入

2019-07-15 11:14发布

#include<reg51.h>#define uint unsigned int#define uchar unsigned charbit flag;unsigned char key_scannum[] = {0xef,0xdf,0xbf,0x7f};unsigned char table[]= {0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};//¼üÅÌ°´¼üÂëunsigned char led[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //P0¿Ú¶ÎÂë±àÂë
void delay(uint x) //ÑÓʱ³ÌÐò{uint y;for(x;x>0;x--)for(y=0;y<100;y++);}
unsigned char keyscan(void)//¼üÅÌɨÃèÖµº¯Êý{unsigned char i,j;P1=0x0f;//¼ì²éÊÇ·ñÓмü°´ÏÂif(P1!=0x0f)//±íʾÓа´¼ü°´Ï   {     delay(1);  //È¥¶¶ if(P1!=0x0f)  for(i = 0;i < 4;i++)  { P1 = key_scannum; if(P1 != key_scannum)//´ËÐÐÓмü°´ÏÂfor(j = 0;j < 16;j++){ if(P1 == table[j]) { flag=1;   return(j); }  }  } }while((P1 & 0x0f)<0x0f);return(0);}
void display(uint num){  uint ge,shi,bai,qian;  qian=num/1000;  P0=led[qian];  P2=0xf7;  delay(1);  P2=0xff;
  bai=num%1000/100;  P0=led[bai];  P2=0xfb;  delay(1);  P2=0xff;
  shi=num%100/10;  P0=led[shi] & 0x7f;  P2=0xfd;  delay(1);  P2=0xff;
  ge=num%10;  P0=led[ge];  P2=0xfe;  delay(1);  P2=0xff; }
void main(void){uint que,num=0;while(1){   que=keyscan();   if(flag==1) {  num=num*10+que;  flag=~flag; }display(num);}}是哪里有问题?各位大神帮忙看一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。