我想实现当按键输入一个数后,在按另一个键实现自家,用LED实现显示! #include<at89x51.h> unsigned char code table[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x25,0xea,0x20,0xa0,0xf7}; void delay(void) { unsigned char i; for(i=255;i>0;i--); }
unsigned char GETKEY(void) { unsigned char column,line,k; P1=0xf0; if((P1&0xf0)!=0xf0) { delay(); if((P1&0xf0)!=0xf0) { column=P1; column=column|0x0f; P1=0x0f; line=P1; line=line|0xf0; k=column&line; } } return(k); } void main(void) { unsigned char i,key; int data j =-1; while(1) { key=GETKEY(); switch(key) { case 0xbb j=0; for(i=255;i>0;i--); P0=table[j]; break; case 0x7e : j=1; for(i=255;i>0;i--); P0=table[j]; break; case 0xbe :j=2; for(i=255;i>0;i--); P0=table[j]; break; case 0xde :j=3; for(i=255;i>0;i--); P0=table[j] ; break; case 0xee : j=4; for(i=255;i>0;i--); P0=table[j]; break; case 0x7d : j=5; for(i=255;i>0;i--); P0=table[j]; break; case 0xbd : j=6; for(i=255;i>0;i--); P0=table[j]; break; case 0xdd :j=7; for(i=255;i>0;i--); P0=table[j]; break; case 0xed :j=8; for(i=255;i>0;i--); P0=table[j]; break; case 0x7b :j=9; for(i=255;i>0;i--); P0=table[j]; break; case 0xdb : j++; for(i=255;i>0;i--); P0=table[j]; break; default: break; } } }当显示数字都没有问题,问什么一旦自加就灭了!请高手指教,很急谢谢大家! |