矩阵键盘不行
P2=0xfe;
a=P2;
a=a&0xf0;
while(a!=0xf0)
{
delay(200);
a=P2;
a=a&0xf0;
while(a!=0xf0)
{
a=P2;
switch(a)
{
case 0xee : num1=0;
break;
case 0xde : num1=1;
break;
case 0xbe : num1=2;
break;
case 0x7e : num1=3;
break;
}
while(a!=0xf0)
{
a=P2;
a=a&0xf0;
}
}
} 故障情况是 右边两列矩阵键盘无效
《我是菜鸟啥也不懂》,我觉得键盘检测要根据具体电路编程序吧。看下你开发板是怎么接的电路,郭老师的电路貌似不是接P端口的。另外,这个论坛太没氛围了,我发了两个问题贴都没人理我,直接就沉了
P2=0xfe;
a=P2;
a=a&0xf0;
if(a!=0xf0)
{
delay(200);
P2=0xfe;
a=P2;
a=a&0xf0;
if(a!=0xf0)
{
a=P2;
switch(a)
{
case 0xee : num1=0;
break;
case 0xde : num1=1;
break;
case 0xbe : num1=2;
break;
case 0x7e : num1=3;
break;
}
while(a!=0xf0)
{
a=P2;
a=a&0xf0;
}
}
}
用这个看一下,前两个用while的话,有键按下就一直在第一个循环执行,跳不出去了
可能跟P2^6和P2^7这两个端口有关吧。
等我将那些文件下载下来后,仿真一下试试!
弱弱地问一句,哪个论坛人比较多!本人也在学习单片机!
呵呵 我也想知道
我改了呀 郭老师用的P3口 我按我的电路图接的P2口啊
应该不是那个问题吧 那行列反转扫描法 一点问题都没有
你延时delay(10)
等我给个程序你啦!
uchar key()
{
uchar temp,tepm1;
P0=0xf0;
temp=P0;
P0=0x0f;
temp1=P0;
switch(temp|temp1)
{
case 0xee: return 0;
case 0xde: return 1;
case 0xbe: return 2;
case 0x7e: return 3;
case 0xed; return 4;
case 0xdd: return 5;
case 0xbd; return 6;
case 0x7d; return 7;
case 0xed; return 8;
case 0xdd: return 9;
case 0xbd; return 10;
case 0x7d; return 11;
case 0xed; return 12;
case 0xdd: return 13;
case 0xbd; return 14;
case 0x7d; return 15;
default: return 16; break;
}
}
那两列都没有扫描啊
有问题啊!
什么问题啊 你说出来啊
没有啦 那也扫描了 跟这个格式是一样的 我没发上来
谢谢 不过呢 这是行列式反转扫描法 这个我会 就是不知道为什么这个方法不行
这个有难度啊!
我的也出现那个问题了,我用P3口了,硬件能用,软件怎么也不行
把DISPLAY函数也贴出来,我前天自制键盘调试的时候也是一样,不过我是有一列无法显示,翻来覆去查硬件都找不出原因,后来发现是DISLPAY那里延时了。