矩阵键盘扫描法和线反转法的电路图有什么不同
下面是线反转法的程序。。我把这个函数用在程序中但是运行起来出错了。高四位引脚总是保持在低电平。按了键也没反应这两个电路图的接法有什么不同啊。。http://p1.tuzh...
下面是线反转法的程序。。我把这个函数用在程序中但是运行起来出错了。高四位引脚总是保持在低电平。按了键也没反应
这两个电路图的接法有什么不同啊。。
http://p1.tuzhan.com/200911/upn1/2010-05-22/20/e3399.tuzhan.com_01d592ce3cbb4d54b51e1be3a7b44075_m.JPG
/*请问这个程序有什么问题没??怎么我调用了这个函数按了键没反应呢。*/
void keyScan5()
{
UCHAR i, j;
while(1)
{
P2=0x0F;
if((P2&0x0F)!=0x0F)
{
switch(P2)
{
case 0x07: i=3; break;
case 0x0b: i=2; break;
case 0x0d: i=1; break;
case 0x0e: i=0; break;
default: break;
}
}
delay(10);//软件去抖动
P2=0xF0;//反转行和列上的电平
if((P2&0xF0)!=0xF0)
{
switch(P2)
{
case 0x70: j=3; break;
case 0xb0: j=2; break;
case 0xd0: j=1; break;
case 0xe0: j=0; break;
default: break;
}
//P1=num[j][i];//P1输出对应的按键值
*下面的语句我是为了测试下按键扫描的程序是否有问题
本来按下第一行第二个键灯就应该会亮的。但是我按了不亮
*/
if(i == 0 && j == 1)
{
P1 = 0x00;
while(1);
}
}
}
}
void main()
{
while(1)
{
keyScan5();
}
}
下面是我画的电路图 展开
这两个电路图的接法有什么不同啊。。
http://p1.tuzhan.com/200911/upn1/2010-05-22/20/e3399.tuzhan.com_01d592ce3cbb4d54b51e1be3a7b44075_m.JPG
/*请问这个程序有什么问题没??怎么我调用了这个函数按了键没反应呢。*/
void keyScan5()
{
UCHAR i, j;
while(1)
{
P2=0x0F;
if((P2&0x0F)!=0x0F)
{
switch(P2)
{
case 0x07: i=3; break;
case 0x0b: i=2; break;
case 0x0d: i=1; break;
case 0x0e: i=0; break;
default: break;
}
}
delay(10);//软件去抖动
P2=0xF0;//反转行和列上的电平
if((P2&0xF0)!=0xF0)
{
switch(P2)
{
case 0x70: j=3; break;
case 0xb0: j=2; break;
case 0xd0: j=1; break;
case 0xe0: j=0; break;
default: break;
}
//P1=num[j][i];//P1输出对应的按键值
*下面的语句我是为了测试下按键扫描的程序是否有问题
本来按下第一行第二个键灯就应该会亮的。但是我按了不亮
*/
if(i == 0 && j == 1)
{
P1 = 0x00;
while(1);
}
}
}
}
void main()
{
while(1)
{
keyScan5();
}
}
下面是我画的电路图 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询