3134|5

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

键盘扫描程序疑问 [复制链接]

为了节省时间,给出键盘扫描的部分代码。程序没有错。
unsigned char code key_code[]={
              0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
              0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 };


uchar  keyscan()
{
   uchar  scan1,scan2,keycode,j;

   P1=0xf0;
   scan1=P1;
   if((scan1&0xf0)!=0xf0)           //判键是否按下
   {
     delayms(30);                   //延时30ms
     scan1=P1;
     if((scan1&0xf0)!=0xf0)         //二次判键是否按下
     {
        P1=0x0f;
        scan2=P1;
        keycode=scan1|scan2;         //组合成键编码

        for(j=0;j<=15;j++)
        {
           if(keycode== key_code[j])  //查表得键值
           {
              key=j;
              return(key);
           }
        }
     }
   }
   else  P1=0xff;

   return (16);
}



我的疑问是:当按键按下时,不知道scan1与scan2的值。
我说说个人的理解。。。比如按下第一行第一列的键,那scan1=1110 0000 吧?scan2=0000 1111 吧?
那么keycode=scan1|scan2不就等于1110 1111 吗? 那keycode!=key_code[0](0xee)啊  
哪位帮我具体分析一下当按下键时,scan1与scan2的值。
谢谢呵!

最新回复

回复:qq413187589 确实对scan2理解有误。呵呵  详情 回复 发表于 2009-8-25 11:33
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮忙顶一下~~~
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
兄弟,你没讲清楚,应该是P1口组成的4X4的键盘吧,原理是先把P1的低四位置零,查询是哪一行的键被按下,再把P1的高四位置零,查询被按的键是在哪一列。因此当按下第一行第一列的键时,scan1=1110 0000 ,scan2=0000 1110 ,看看对不对。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
lz用的是线反转法!

一次输出0x0f  读取scan1
一次输出0xf0  读取scan2

所以
if(scan1!=0x0f)
     scan2!=0xf0


所以lz对scan2的理解有误!


 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 licsyhzs 的回复:
兄弟,你没讲清楚,应该是P1口组成的4X4的键盘吧,原理是先把P1的低四位置零,查询是哪一行的键被按下,再把P1的高四位置零,查询被按的键是在哪一列。因此当按下第一行第一列的键时,scan1=1110 0000 ,scan2=0000 1110 ,看看对不对。


你说的对啊。我之前没说清楚。不过我现在知道了。正如你说的。当按下第一行第一列的键时,scan1=1110 0000 ,scan2=0000 1110
谢谢。过了第二天再看程序头脑就清晰多了。呵呵
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
回复:qq413187589
确实对scan2理解有误。呵呵
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表