一、功能描述
二、电路图
三、程序
#include <REGX51.H>
#include "INTRINS.H"
#define uchar unsigned char
#define uint unsigned int
//sbit P1_0=P1^0;
//sbit P1_1=P1^1;
//sbit P1_2=P1^2;
//sbit P1_3=P1^3;
sbit LED=P2^0;
uchar code D[]={9,8,0,4,1,7,};
void delay(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<125;i++);
}
}
uchar KeyV()
{
uchar key,key_value,a;
P1=0x0f;
if(P1==0x0f)
return(0);
else
{
delay(10);
if(P1==0x0f)
return(0);
for(a=0;a<4;a++)
{
P1=_cror_(0x7f,a);
if(P1_0==0) break;
if(P1_1==0) break;
if(P1_2==0) break;
if(P1_3==0) break;
}
key=P1;
for(;P1!=0x0f;P1=0x0f)
{;}
switch(key)
{
case 0xee:key_value=1;break;
case 0xed:key_value=2;break;
case 0xeb:key_value=3;break;
case 0xe7:key_value=4;break;
case 0xde:key_value=5;break;
case 0xdd:key_value=6;break;
case 0xdb:key_value=7;break;
case 0xd7:key_value=8;break;
case 0xbe:key_value=9;break;
case 0xbd:key_value=10;break;
case 0xbb:key_value=11;break;
case 0xb7:key_value=12;break;
case 0x7e:key_value=13;break;
case 0x7d:key_value=14;break;
case 0x7b:key_value=15;break;
case 0x77:key_value=16;break;
default:;break;
}
return(key_value);
}
}
void main(void)
{
uchar key_value=0xff;
while(1)
{
while(key_value!=D[0])
{key_value=KeyV();}
while(key_value!=D[1])
{key_value=KeyV();}
while(key_value!=D[2])
{key_value=KeyV();}
while(key_value!=D[3])
{key_value=KeyV();}
while(key_value!=D[4])
{key_value=KeyV();}
while(key_value!=D[5])
{key_value=KeyV();}
while(key_value!=16)
{key_value=KeyV();}
LED=0;
}
}
四、小结