OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 821|回复: 12

51单片机矩阵多个按键同时按下如何写程序?

[复制链接]

  离线 

1

主题

4

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2017-12-12
在线时间
1 小时
发表于 2017-12-12 21:26:06 | 显示全部楼层 |阅读模式
1金钱
矩阵扫描键盘已经写完了,单个按键按下没问题,如何写两个、多个按键同时按下的程序

最佳答案

查看完整内容[请看2#楼]

第一次回帖,不太懂规矩。 刚才写了一长篇,因为说是验证码错误(明明我输对了),给弄丢了。 那我长话短说。 逐行检测吧。分四次,把第一、二、三、四行分别检测,这样的话,就不会冲突了。 通常做法是两步操作,置位高四位,测低四位,确定X坐标,置位低四位,测高四位,确定Y坐标。这样,必然只能测一个按键,如果多键同时按下,如果程序编制不当,甚至会得到一个根本不存在的按键值,引起程序逻辑故障。
回复

使用道具 举报

  离线 

5

主题

427

帖子

0

精华

高级会员

Rank: 4

积分
778
金钱
778
注册时间
2017-12-15
在线时间
90 小时
发表于 2017-12-12 21:26:07 | 显示全部楼层
第一次回帖,不太懂规矩。
刚才写了一长篇,因为说是验证码错误(明明我输对了),给弄丢了。

那我长话短说。

逐行检测吧。分四次,把第一、二、三、四行分别检测,这样的话,就不会冲突了。
通常做法是两步操作,置位高四位,测低四位,确定X坐标,置位低四位,测高四位,确定Y坐标。这样,必然只能测一个按键,如果多键同时按下,如果程序编制不当,甚至会得到一个根本不存在的按键值,引起程序逻辑故障。
回复

使用道具 举报

  离线 

29

主题

1587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3699
金钱
3699
注册时间
2016-5-29
在线时间
573 小时
发表于 2017-12-12 21:41:01 | 显示全部楼层
超过3个有点复杂..两个可以.比较简单
回复

使用道具 举报

  离线 

6

主题

149

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2015-3-27
在线时间
43 小时
发表于 2017-12-14 09:49:47 | 显示全部楼层
矩阵扫描应该不存在单个和多个按下之说吧...
回复

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2017-12-12
在线时间
1 小时
 楼主| 发表于 2017-12-14 15:22:28 | 显示全部楼层
正点原子公众号
操作系统 发表于 2017-12-12 21:41
超过3个有点复杂..两个可以.比较简单

那两个怎么写,是扫第一行时候再从第一行开始扫一遍吗
回复

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2017-12-12
在线时间
1 小时
 楼主| 发表于 2017-12-14 15:23:33 | 显示全部楼层
弦子的弦 发表于 2017-12-14 09:49
矩阵扫描应该不存在单个和多个按下之说吧...

就是按下一个按键返回一个值,同时按下两个或者多个返回其他值
回复

使用道具 举报

  离线 

29

主题

1587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3699
金钱
3699
注册时间
2016-5-29
在线时间
573 小时
发表于 2017-12-14 16:41:52 | 显示全部楼层
准备一个数组..比方说KEY[8], 还有按键数量.
回复

使用道具 举报

  离线 

6

主题

149

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2015-3-27
在线时间
43 小时
发表于 2017-12-14 16:51:18 | 显示全部楼层
Lelouchvi 发表于 2017-12-14 15:23
就是按下一个按键返回一个值,同时按下两个或者多个返回其他值

一般的做法是建立一个数组,每按下一个按键就存放进去.然后单片机再一个一个处理.
回复

使用道具 举报

  离线 

6

主题

149

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2015-3-27
在线时间
43 小时
发表于 2017-12-14 16:51:29 | 显示全部楼层
Lelouchvi 发表于 2017-12-14 15:23
就是按下一个按键返回一个值,同时按下两个或者多个返回其他值

一般的做法是建立一个数组,每按下一个按键就存放进去.然后单片机再一个一个处理.
回复

使用道具 举报

  离线 

6

主题

149

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2015-3-27
在线时间
43 小时
发表于 2017-12-14 16:51:53 | 显示全部楼层
Lelouchvi 发表于 2017-12-14 15:23
就是按下一个按键返回一个值,同时按下两个或者多个返回其他值

一般的做法是建立一个数组,每按下一个按键就存放进去.然后单片机再一个一个处理.
回复

使用道具 举报

  离线 

2

主题

172

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2013-6-5
在线时间
80 小时
发表于 2017-12-17 21:16:12 | 显示全部楼层
矩阵,没有办法检测多键同时按下。
回复

使用道具 举报

  离线 

8

主题

526

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1009
金钱
1009
注册时间
2014-6-27
在线时间
392 小时
发表于 2018-2-1 15:08:12 | 显示全部楼层
单个按键可以了,多个按键同时按下的,你判断多个按键按下时的物理状态,给个键值出来就行了,就算是所有按键同时按下,都可以得出键值。
回复

使用道具 举报

  离线 

4

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2015-12-16
在线时间
26 小时
发表于 2018-2-1 16:33:33 | 显示全部楼层
那得看你是怎么扫描的按键,如果你扫描到一个按键按下就给按键状态标志字某一位置位,如果确定按键释放再清零相应位,那么检查这个标志字就可以知道所有按键的当前状态了!
回复

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-5-24 04:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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