找回密码
 立即注册
查看: 87|回复: 8

关于矩阵键盘库函数的讨论

[复制链接]
已绑定手机

15

主题

60

回帖

81

积分

注册会员

积分
81
发表于 7 天前 | 显示全部楼层 |阅读模式
大家好,这是我写的矩阵键盘库函数:





#include <STC89C5xRC.H>
#define keyboard_pin P1
//x1->P10,x2->P11,...
//y1->P14,y2->P15,...
unsigned char code keyboard_table[4][4]={
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
unsigned char keyboard_check(){
  unsigned char x,y,ch='?';
  keyboard_pin=0xF0;
  for(y=0;y<5;y++){
    if((keyboard_pin&(0x80>>y))==0)break;
  }
  keyboard_pin=0x0F;
  for(x=0;x<5;x++){
    if((keyboard_pin&(0x01<<x))==0)break;
  }
  if(x<4 && y<4)ch=keyboard_table[x][3-y];
  return ch;
}


回复

使用道具 举报 送花

3

主题

26

回帖

113

积分

注册会员

积分
113
发表于 7 天前 | 显示全部楼层
没看懂你这是啥用意

点评

楼主欲收集矩阵键盘函数的各种写法  发表于 7 天前
回复

使用道具 举报 送花

已绑定手机

15

主题

60

回帖

81

积分

注册会员

积分
81
 楼主| 发表于 7 天前 | 显示全部楼层
缘分*** 发表于 2026-9-12 15:33
没看懂你这是啥用意

我写的怎么样,这样写会产生什么问题,等
回复

使用道具 举报 送花

已绑定手机

8

主题

397

回帖

1051

积分

金牌会员

积分
1051
发表于 6 天前 | 显示全部楼层
光头*** 发表于 2026-9-12 18:47
我写的怎么样,这样写会产生什么问题,等

常见矩阵按键写法不下10种,没有优劣之分。唯适用场景不尽相同。如想知道代码写的如何可直接加入应用场景测试。没有一招打遍天下的代码。
回复

使用道具 举报 送花

已绑定手机

15

主题

60

回帖

81

积分

注册会员

积分
81
 楼主| 发表于 6 天前 来自手机 | 显示全部楼层
wulin 发表于 2026-9-13 07:56
常见矩阵按键写法不下10种,没有优劣之分。唯适用场景不尽相同。如想知道代码写的如何可直接加入应用场景 ...

以万变应万变?!学习了!
回复

使用道具 举报 送花

已绑定手机

1

主题

34

回帖

129

积分

注册会员

积分
129
发表于 6 天前 | 显示全部楼层
代码不错。
我补充一下,是不是还有消抖处理。
另外有需求要处理两个以上按键按下的情况吗?
回复

使用道具 举报 送花

3

主题

26

回帖

113

积分

注册会员

积分
113
发表于 5 天前 | 显示全部楼层
光头*** 发表于 2026-9-12 18:47
我写的怎么样,这样写会产生什么问题,等

比较简洁,但是只支持单一按键,要是有多个按键同时按下,会出现鬼键问题,并且多个按键也无法正常获取。
回复

使用道具 举报 送花

已绑定手机

15

主题

60

回帖

81

积分

注册会员

积分
81
 楼主| 发表于 4 天前 | 显示全部楼层
jrc*** 发表于 2026-9-13 23:37
代码不错。
我补充一下,是不是还有消抖处理。
另外有需求要处理两个以上按键按下的情况吗? ...

关于消抖处理可以看一下我的电子密码锁2.0
我没有做多按键,同时按下的处理,不过这是个好主意,我以后会考虑。
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-19 22:07 , Processed in 0.074300 second(s), 82 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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