#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
uint key();
uint key1[8];
uint key2[8]={1,2,3,4,5,6,7,8};
uint flag0,flag1,num;
uchar temp;
sbit P1_0=P1^0;
sbit P1_7=P1^7;
void display(uint a)
{
P2=0;
switch(a)
{
case 0: P2_0=1;break;
case 1: P2_1=1;break;
case 2: P2_2=1;break;
case 3: P2_3=1;break;
case 4: P2_4=1;break;
case 5: P2_5=1;break;
case 6: P2_6=1;break;
case 7: P2_7=1;break;
}
P0=0x80;
}
void main()
{
uint i;
while(1)
{
i=0;
P1_7=0;
flag0=0;
flag1=0;
while(flag0==0)
flag0=key();
while(flag0!=15)
{
key1[i]=flag0;
display(i);
flag0=key();
while(flag0==0)
{
flag0=key();
}
i++;
}
for(i=0;i<8;i++)
{
if(key1[i]==key2[i])
flag1++;
}
if(flag1==8)
{
i=3;
while(i--)
{
P1_0=0;
P1_7=1;
delay(200);
P1_7=0;
P1_0=1;
delay(200);
}
}
else
{
P1_0=0;
P1_7=1;
delay(2000);
P1_0=1;
P1_7=0;
}
}
}
uint key()
{
num=0;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: num=0;
break;
case 0xd0: num=1;
break;
case 0xb0: num=2;
break;
case 0x70: num=3;
break;
}
}
while(temp!=0xf0)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: num=4;
break;
case 0xd0: num=5;
break;
case 0xb0: num=6;
break;
case 0x70: num=7;
break;
}
}
while(temp!=0xf0)
{
P3=0xfd;
temp=P3;
temp=temp&0xf0;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: num=8;
break;
case 0xd0: num=9;
break;
case 0xb0: num=10;
break;
case 0x70: num=11;
break;
}
}
while(temp!=0xf0)
{
P3=0xfb;
temp=P3;
temp=temp&0xf0;
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: num=12;
break;
case 0xd0: num=13;
break;
case 0xb0: num=14;
break;
case 0x70: num=15;
break;
}
}
while(temp!=0xf0)
{
P3=0xf7;
temp=P3;
temp=temp&0xf0;
}
}
return(num);
}
评论0