以下為本人寫的代碼 是矩陣鍵盤的 要求按下16個矩陣鍵盤依次在數碼管上顯示1-16的平方。如按下第一個顯示1,第二個顯示4...
請高手指教哪里錯了 為什么按下鍵盤后沒有反應
#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; char temp,bai,shi,ge,key; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar bai,uchar shi,uchar ge) { dula=1; P0=table[bai]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(5);
dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(5);
dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(5); } void keyscan() { P3=0xfe; temp=P3; temp=P3&0xf0; if(temp!=0xf0) { delay(5); temp=P3; temp=P3&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee: key=1; break; case 0xde: key=2; break; case 0xbe: key=3; break; case 0x7e: key=4; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } temp=key*key; bai=temp/100; shi=temp%100/10; ge=temp%10; display(bai,shi,ge); } }
P3=0xfd; temp=P3; temp=P3&0xf0; if(temp!=0xf0) { delay(5); temp=P3; temp=P3&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xed: key=5; break; case 0xdd: key=6; break; case 0xbd: key=7; break; case 0x7d: key=8; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } temp=key*key; bai=temp/100; shi=temp%100/10; ge=temp%10; display(bai,shi,ge); } }
P3=0xfb; temp=P3; temp=P3&0xf0; if(temp!=0xf0) { delay(5); temp=P3; temp=P3&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb: key=9; break; case 0xdb: key=10; break; case 0xbb: key=11; break; case 0x7b: key=12; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } temp=key*key; bai=temp/100; shi=temp%100/10; ge=temp%10; display(bai,shi,ge); } }
P3=0xf7; temp=P3; temp=P3&0xf0; if(temp!=0xf0) { delay(5); temp=P3; temp=P3&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7: key=13; break; case 0xd7: key=14; break; case 0xb7: key=15; break; case 0x77: key=16; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } temp=key*key; bai=temp/100; shi=temp%100/10; ge=temp%10; display(bai,shi,ge); } } }
void main() {
while(1) { keyscan(); }
}
|