本帖最后由 传说熊 于 2017-5-13 17:16 编辑
我用51
单片机做了一个4*4按键键盘,现在想通过按三下后输出0 ~999放入x中,x就是一个寄存器,应该怎么编程
uchar key1()
{
P1=0xef;
q=P1;
q=q&0x0f;
while(q!=0x0f)
{
delay(5);
while(q!=0x0f)
{
q=P1;
switch(q)
{
case 0xee:w=1;
break;
case 0xed:w=2;
break;
case 0xeb:w=3;
break;
case 0xe7:w=3;
break;
}
while(q!=0x0f)
{
q=P1;
q=q&0x0f;
}
}
}
delay(10);
P1=0Xdf;
q=P1;
q=q&0x0f;
while(q!=0x0f)
{
delay(5);
while(q!=0x0f)
{
q=P1;
switch(q)
{
case 0xde:w=4;
break;
case 0xdd:w=5;
break;
case 0xdb:w=6;
break;
case 0xd7:w=6;
break;
}
while(q!=0x0f)
{
q=P1;
q=q&0x0f;
}
}
}
delay(10);
P1=0xbf;
q=P1;
q=q&0x0f;
while(q!=0x0f)
{
delay(5);
while(q!=0x0f)
{
q=P1;
switch(q)
{
case 0xbe:w=7;
break;
case 0xbd:w=8;
break;
case 0xbb:w=9;
break;
case 0xb7:w=9;
break;
}
while(q!=0x0f)
{
q=P1;
q=q&0x0f;
}
}
}
delay(10);
P1=0x7f;
q=P1;
q=q&0x0f;
while(q!=0x0f)
{
delay(5);
while(q!=0x0f)
{
q=P1;
switch(q)
{
case 0x7e:w=0;
break;
case 0x7d:w=0;
break;
case 0x7b:w=0;
break;
case 0x77:w=0;
break;}
while(q!=0x0f)
{
q=P1;
q=q&0x0f;
}
}
}
delay(10);
return w;
}
换句话说及时我想用这个键盘实现多位输出(比如三位),我按键盘1,5,2后,能使a=152,方便我下面计算
123
456
789
0
键盘按键是这样,其他的随便定义,求大神指点
一周热门 更多>