智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2919|回复: 3
打印 上一主题 下一主题

[控制类] 一个简单的键盘识别

[复制链接]

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
威望
180
贡献
22
兑换币
0
注册时间
2009-7-30
在线时间
4 小时
跳转到指定楼层
1#
发表于 2009-8-19 22:17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
很简单的一个先反转法的程序,单独识别行或者列都可以。但是组合起来却识别不出来
各位大侠拔刀相助一下吧
//单独识别列程序
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();
  }
}

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
威望
264
贡献
78
兑换币
56
注册时间
2008-12-19
在线时间
19 小时
2#
发表于 2009-8-20 10:59:11 | 只看该作者
你可以看看这个,4*4矩阵键盘
http://www.ccbeta.net/show-72-1.html
1# 笑傲江湖
回复

使用道具 举报

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
3#
发表于 2009-8-20 23:20:41 | 只看该作者
最简单的,最省外部资源的是AD转换。
回复

使用道具 举报

0

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
489
QQ
威望
222
贡献
265
兑换币
0
注册时间
2009-10-18
在线时间
1 小时
4#
发表于 2009-10-21 22:18:29 | 只看该作者
我给一个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接共阳数码管
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-20 21:28 , Processed in 0.047389 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表