搜索
bottom↓
回复: 4

怎么做矩阵键盘的连续输入

[复制链接]

出0入0汤圆

发表于 2012-10-23 16:29:24 | 显示全部楼层 |阅读模式
本帖最后由 zengdz 于 2012-10-23 16:37 编辑

   一个小项目里面有一个充值部分,通过键盘把要输入的数值显示在1602液晶上并且保存下来。但是我用大家常用的那种矩阵键盘扫描方法都不能实现,只显示一个按键输入就可以,但是要连续输入三个数字并且显示,总是有问题,里面应该有不能判断按键次数的问题,但是怎么判断呢?还有一种是中断法,但是没有找到可参考的资料,哪位有相关资料可否提供下,谢了!
  下面是我用的那种常用的扫描方法:
  void Keycan(void) //按键扫描程序 P34--P37为行线 P30--P33为列线
{
  unsigned char r, c;
  P3 = 0xF0;      // 发全0行列扫描码,列线输入
  if(P3 != 0xF0) // 若有键按下
  {
//      delay(10);// 延时去抖动
      r=P3;                   //保存行输入码
          P3=0x0f;           // 发全0行列扫描码,列线输入
          if(P3!=0x0f) // 若有键按下
          {
              c=P3;           //保存列输入码
          }
          Key=(r+c);   //键盘编码
//          delay(10);// 延时去抖动
  }  
}

/********对扫描到的键盘编码进行转换处理,变成数据键盘S1-S16*******/

unsigned char KeyDeal(unsigned char Key)
{
   unsigned char S;
   if(Key!=0)
{
   
                   switch(Key)
                   {
                   case 0xe7: S=1; break;
                   case 0xeb: S=2; break;
                   case 0xed: S=3; break;
                   case 0xee: S=4; break;
                   case 0xd7: S=5; break;
                   case 0xdb: S=6; break;
                   case 0xdd: S=7; break;
                   case 0xde: S=8; break;
                   case 0xb7: S=9; break;
                   case 0xbb: S=10; break;
                   case 0xbd: S=11; break;
                   case 0xbe: S=12; break;
                   case 0x77: S=13; break;
                   case 0x7b: S=14; break;
                   case 0x7d: S=15; break;
                   case 0x7e: S=16; break;
                   default: break;
                   }
         
  }
  return (S); // 返回键编码
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-10-23 17:22:25 | 显示全部楼层
最简单,延时间隔一下,连续检测

出0入0汤圆

 楼主| 发表于 2012-10-23 17:30:53 | 显示全部楼层
devcang 发表于 2012-10-23 17:22
最简单,延时间隔一下,连续检测

能不能简要写几个函数名表示下?

出0入0汤圆

发表于 2012-10-23 19:42:15 | 显示全部楼层
在这个基础上,用状态机,做松手检测

出0入0汤圆

 楼主| 发表于 2012-10-23 23:57:25 | 显示全部楼层
参考一个计算器的基本解决了、
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 20:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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