而同样的程序复制给了后三行,全能正常使用呢。。。。
程序如下
#include<reg52.h>
sbit d1=P0^0;
sbit key1=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char temp,x,y,num;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(unsigned char x,unsigned char y);
void delay(unsigned int z);
void main()
{
while(1)
{
P3=0xfe;//0xfe=11111110
temp=P3;
temp=temp&0xf0;//0xf0=11110000做“与”的操作
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee: //第一个键按下去则为11101110(由P3^7读到P3^0)
num=1;
break;
case 0xde:
num=2;
break;
case 0xbe:
num=3;
break;
case 0x7e:
num=4;
break;
}
while(temp!=0xf0)//松手检测
{
temp=P3;
temp=temp&0xf0;
}
}
}
//检测第二行
P3=0xfd;//11111101
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;//跳出检测和防颤抖的循环
switch(temp)
{
case 0xed: //第一个键按下去则为11101110(由P3^7读到P3^0)
num=5;
break;
case 0xdd:
num=6;
break;
case 0xbd:
num=7;
break;
case 0x7d:
num=8;
break;
}
while(temp!=0xf0)//松手检测
{
temp=P3;
temp=temp&0xf0;
}
}
}
//检测第三行
P3=0xfb;
temp=P3;
temp=temp&0xf0;//0xf0=11110000做“与”的操作
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;//跳出检测和防颤抖的循环
switch(temp)
{
case 0xeb:
num=9;
break;
case 0xdb:
num=10;
break;
case 0xbb:
num=11;
break;
case 0x7b:
num=12;
break;
}
while(temp!=0xf0)//松手检测
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;//0xf0=11110000做“与”的操作
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;//跳出检测和防颤抖的循环
switch(temp)
{
case 0xe7:
num=13;
break;
case 0xd7:
num=14;
break;
case 0xb7:
num=15;
break;
case 0x77:
num=16;
break;
}
while(temp!=0xf0)//松手检测
{
temp=P3;
temp=temp&0xf0;
}
}
}
x=num/10;
y=num%10;
display(x,y);
}
}
void display(unsigned char x,unsigned char y)
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[x];
dula=0;
delay(5);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[y];
dula=0;
delay(5);
}
void delay(unsigned int z)
{
unsigned int xx,yy;
for(xx=z;xx>0;xx--)
for(yy=50;yy>0;yy--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>