3078|7

6

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

430 4*4 键盘扫描程序 [复制链接]

那位大哥给我发个 430的键盘扫描程序   感激不尽

最新回复

请问这个程序能够实现么?我想在液晶上显示键值,但是没反应  求指导  谢谢!  详情 回复 发表于 2012-8-3 01:20
 
点赞 关注

回复
举报

28

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
uchar key_val;          //存放键值
uchar key_Map[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
//Check_Key(),检查按键,确认键值
void Check_Key(void)
{
    uchar row ,col,tmp1,tmp2;
   
    tmp1 = 0x80;
    for(row = 0;row < 4;row++)              //行扫描
    {
        P1OUT = 0xf0;                      //P1.4~P1.7输出全1
        P1OUT -= tmp1;                      //P1.4~p1.7输出四位中有一个为0
        tmp1 >>=1;                              
        if ((P1IN & 0x0f) < 0x0f)           //是否P1IN的P1.0~P1.3中有一位为0
        {                       
            tmp2 = 0x01;                         // tmp2用于检测出那一位为0  
            for(col = 0;col < 4;col++)              // 列检测
            {         
                if((P1IN & tmp2) == 0x00)           // 是否是该列,等于0为是
                {         
                    key_val = key_Map[row * 4 + col];  // 获取键值
                    return;                         // 退出循环
                }
                tmp2 <<= 1;                        // tmp2右移1位
            }
        }
    }      
}

这只是一个子程序,我不知道你主程序要执行什么操作,所以只能给你这些,希望对你有帮助。
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

4
 
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

5
 
 
 
 

回复

182

帖子

0

TA的资源

一粒金砂(高级)

6
 
Very Good~
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

7
 
uchar keycode[16]={
                      0xee,0xde,0xbe,0x7e,
                      0xed,0xdd,0xbd,0x7d,
                      0xeb,0xdb,0xbb,0x7b,
                      0xe7,0xd7,0xb7,0x77,                             
                  };//矩阵键盘按键码
unsigned char key_done()
{
  unsigned char row,col,i,k=16;
  flag=0;
  P4DIR=0xf0;
  P4OUT=0x0f;
  if((P4IN&0x0f)!= 0x0f)
  {
    delay1ms(5);
    if((P4IN&0x0f)!= 0x0f)
    {
     
      col=P4IN&0x0f;
      P4DIR=0x0f;
      P4OUT=0xf0;
      row=P4IN&0xf0;
      for(i=0; i<16; i++)
      {
        if((row|col)==keycode)
        {
          k=i;
          flag=1;
          break;
        }
      }
    }
    P4DIR=0xf0;
    P4OUT=0x0f;
    while((P4IN&0x0f)!=0x0f);
  }
  return k;
}

需要在IO口加上拉电阻。

点评

请问这个程序能够实现么?我想在液晶上显示键值,但是没反应 求指导 谢谢!:)  详情 回复 发表于 2012-8-3 01:20
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼 gujiao 的帖子

请问这个程序能够实现么?我想在液晶上显示键值,但是没反应  求指导  谢谢!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表