智能车制作
标题:
一个简单的键盘识别
[打印本页]
作者:
笑傲江湖
时间:
2009-8-19 22:17
标题:
一个简单的键盘识别
很简单的一个先反转法的程序,单独识别行或者列都可以。但是组合起来却识别不出来
各位大侠拔刀相助一下吧
//单独识别列程序
void key1(void)
{
DDRH=0x0f;//0000 1111 高四位为列row
PTH_PTH0=1;
PTH_PTH1=1;
PTH_PTH2=1;
PTH_PTH3=1;
PTH |= 0x0f;
if(PTH!=0x0f) {
delaynms(5);
if(PTH!=0x0f)
{
PTH |=0x0f;
switch( PTH)
{
case 0x1f:
row=0;break;
case 0x2f:
row=1;break;
case 0x4f:
row=2;break;
case 0x8f:
row=3;break;
default:break;
}
}
}
}
//单独识别行程序 ,方法与上面类似
void key2(void) {
DDRA=0xf0;// 1111 0000
PORTA_BIT4=1;
PORTA_BIT5=1;
PORTA_BIT6=1;
PORTA_BIT7=1;
PORTA |= 0xf0; //1111 0000 *
if (PORTA!=0xf0){
delaynms(5);
if(PORTA!=0xf0){
switch( PORTA)
{
case 0xf1:col=0;break;
case 0xf2:col=1;break;
case 0xf4:col=2;break;
case 0xf8:col=3;break;
default:break;
}
}
}
}
//主程序
void main()
{
for(;;) {
key1();//键盘识别一直启用
key2();
}
}
作者:
flyreally
时间:
2009-8-20 10:59
你可以看看这个,4*4矩阵键盘
http://www.ccbeta.net/show-72-1.html
1#
笑傲江湖
作者:
whut_wj
时间:
2009-8-20 23:20
最简单的,最省外部资源的是AD转换。
作者:
401
时间:
2009-10-21 22:18
我给一个89C52单片机4*4KEY程序
void key()
{
uchar a,b,c;
P1=0xf0;
a=P1;
P1=0x0f;
b=P1;
c=a+b;
if(c=0xee)
P0=tab[0];
delay(500);
.......................
}
P1接4*4键盘P0接共阳数码管
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2