您的位置:首页 > 其它

关于CT107D开发板矩阵按键前两列不工作问题的研究

2018-02-26 19:10 691 查看
CT107D开发板矩阵按键原理图如下所示:



其中CON3的1引脚和2引脚相连构成矩阵键盘。

//经典矩阵按键处理函数
unsigned char keyProcess(void)
{
unsigned char keyTemp = 0;
unsigned char keyValue = 0;
unsigned char P3_Value = 0;

P3 = 0xf0;
if(P3 != 0xf0)
{
Delay15ms();
if(P3 != 0xf0)
{
P3_Value = P3;
switch(P3_Value)
{
case 0xe0:
{
keyTemp = 1;
}break;
case 0xb0:
{
keyTemp = 2;
}break;
case 0xd0:
{
keyTemp = 3;
}break;
case 0x70:
{
keyTemp = 4;
}break;
}
}
}

P3 = 0x0f;
if(P3 != 0x0f)
{
Delay15ms();
if(P3 != 0x0f)
{
P3_Value = P3;
switch(P3_Value)
{
case 0x0e:
{
keyValue = keyTemp;
}break;
case 0x0b:
{
keyValue = 4 + keyTemp;
}break;
case 0x0d:
{
keyValue = 8 + keyTemp;
}break;
case 0x07:
{
keyValue = 12 + keyTemp;
}break;
}
}
}
return keyValue;
}


由上述经典矩阵键盘扫描函数编写按键驱动时发现由P3^6和P3^7两个引脚控制的两列键盘无论如何按,都不产生任何效果,也许有人会认为这是开发板坏掉了,其实不然,开发板没有坏掉,只是这里的P3^6和P3^7实际上不控制该两列按键。

若使用如下代码进行矩阵键盘驱动代码的编写,则完全可以实现功能,代码如下:

sfr P4 = 0xC0;

sbit r1=P3^0;
sbit r2=P3^1;
sbit r3=P3^2;
sbit r4=P3^3;

sbit c1=P4^4;
sbit c2=P4^2;
sbit c3=P3^5;
sbit c4=P3^4;

unsigned char keyProcess(void)
{
unsigned char key_value;

r1=0;
r2=r3=r4=1;
c1=c2=c3=c4=1;

if(!c1)
{
key_value=0;
}
else if(!c2)
{
key_value=1;
}
else if(!c3)
{
key_value=2;
}
else if(!c4)
{
key_value=3;
}

r2=0;
r1=r3=r4=1;
c1=c2=c3=c4=1;

if(!c1)
{
key_value=4;
}
else if(!c2)
{
key_value=5;
}
else if(!c3)
{
key_value=6;
}
else if(!c4)
{
key_value=7;
}

r3=0;
r2=r1=r4=1;
c1=c2=c3=c4=1;

if(!c1)
{
key_value=8;
}
else if(!c2)
{
key_value=9;
}
else if(!c3)
{
key_value=10;
}
else if(!c4)
{
key_value=11;
}

r4=0;
r2=r3=r1=1;
c1=c2=c3=c4=1;

if(!c1)
{
key_value=12;
}
else if(!c2)
{
key_value=13;
}
else if(!c3)
{
key_value=14;
}
else if(!c4)
{
key_value=15;
}

return key_value;
}


让人惊讶的是,矩阵键盘的第1列和第2列竟然是有P4^4引脚和P4^2引脚控制的,这又是为何呢?

蓝桥杯开发板的矩阵键盘电路连接和普通的开发板一样,它使用的是P3口,但蓝桥杯比赛要求使用IAP转接板转接的IAP15F2k61s2芯片,这个单片机内置晶振,运行速度快,由于其没有P36,P37口,在转接板上用芯片的P42,P44口代替。因此在开发时需要改变一下控制引脚的地址。

最终测试程序参考代码下载地址:

http://download.csdn.net/download/qq_34706280/10260248
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: