小弟看过郭天祥的视频后,给自己的实验板写的矩阵键盘程序,但是下载后什么反应也没有,又找不出哪里不对。请各位前辈帮小弟找找错在哪里。
程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,temp;
sbit dula=P3^6;
sbit wela=P3^7;
uchar code table[]={
0xc0 , 0xf9 , 0xa4 , 0xb0 , 0x99 , 0x92 ,
0x82 , 0xf8 , 0x80 , 0x90 , 0x88 , 0x80 ,
0xc6 , 0xc0 , 0x86 , 0x8e , 0xff};
void delay(uint z);
void display(uchar aa);
uchar keyscan();
void main()
{
num=17;
dula=1;
P0=0xff;
dula=0;
wela=1;
P2=0xfe;
wela=0;
while(1)
{
display(keyscan());
}
}
void display(uchar aa)
{
dula=1;
P0=table[aa-1];
dula=0;
}
uchar keyscan()
{
P1=0xf7;
temp=P1;
temp=temp&0xf0;
while(1)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xe0: num=1;
break;
case 0xd0: num=2;
break;
case 0xb0: num=3;
break;
case 0x70: num=4;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfb;
temp=P1;
temp=temp&0xf0;
while(1)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xe0: num=5;
break;
case 0xd0: num=6;
break;
case 0xb0: num=7;
break;
case 0x70: num=8;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfd;
temp=P1;
temp=temp&0xf0;
while(1)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xe0: num=9;
break;
case 0xd0: num=10;
break;
case 0xb0: num=11;
break;
case 0x70: num=12;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfe;
temp=P1;
temp=temp&0xf0;
while(1)
{
delay(5);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xe0: num=13;
break;
case 0xd0: num=14;
break;
case 0xb0: num=15;
break;
case 0x70: num=16;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
return num;
}
void delay(uint z)
{
uint x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>