OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 16412|回复: 10

哪位给点写STM32 4*4矩阵键盘的思路,要用中断的。

[复制链接]

21

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2011-6-30
在线时间
0 小时
发表于 2011-7-4 21:33:14 | 显示全部楼层 |阅读模式
哪位给点写STM32 4*4矩阵键盘的思路,要用中断的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-7-2
在线时间
3 小时
发表于 2011-7-5 15:49:43 | 显示全部楼层
应该是用8个IO端口组成4*4的矩阵,通过循环检测各IO口的0/1 状态变化确认是那一行那一列,先将8个IO口置1。应该是用EXIT中断吧,我还没有入门啊,但这个思路肯定是没错的。。。。,建议你去参考原子的开发板列程KEY0和KEY1的列程!!

希望能对你有帮助!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-5 18:37:30 | 显示全部楼层
矩阵键盘还要用中断,我倒真没弄过.
想想原理,矩阵键盘要靠扫描才能发挥作用,那么程序里面必定有一个扫描的函数,用于循环检测各行各列的按键.检测的时候就可以读到键值了.
我实在想不出中断用在这里,有什么意思?  有点脱裤子放屁的感觉.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2011-3-8
在线时间
0 小时
发表于 2011-7-5 22:55:40 | 显示全部楼层
楼主可能是不想做轮询检测吧,其实用中断和用轮询在检测方式上都是一样的,只不过轮询扫描8个IO,中断函数扫描4个IO。
回复 支持 反对

使用道具 举报

6

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2011-3-22
在线时间
3 小时
发表于 2011-7-10 08:48:56 | 显示全部楼层
楼主的意思可能是,平时懒得扫描,有按键触发后再开始扫描(或许是想唤醒)。
可以做,看看下面的方法行不行:
1. 行4个IO口输出低。
2. 列4个IO口带上拉输入。(低电平触发中断)
3. 当对应的列中断触发后,再开始逐行扫描。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-7-10 09:12:18 | 显示全部楼层
楼上的方法是可行的.不过会占用4个中断输入口.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2011-3-8
在线时间
0 小时
发表于 2011-7-10 12:07:38 | 显示全部楼层
而且按楼主的目的来说,可能还要使用0~4这几个独立中断口,否则中断函数里还是行列都要扫描。。
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-2-15
在线时间
0 小时
发表于 2012-2-20 11:04:16 | 显示全部楼层
回复【7楼】leavic:
---------------------------------
我也是需要使用矩阵键盘,但是我想到的方法是,16个键中留一个作为按键输入的启动键,
产生中断之后就开始进行按键扫描,这样就只占用一个IO啦~
回复 支持 反对

使用道具 举报

55

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
628
金钱
628
注册时间
2014-2-24
在线时间
82 小时
发表于 2018-9-1 17:24:57 | 显示全部楼层
本帖最后由 疯子韩 于 2018-9-1 17:29 编辑
dgdzov 发表于 2011-7-10 08:48
楼主的意思可能是,平时懒得扫描,有按键触发后再开始扫描(或许是想唤醒)。
可以做,看看下面的方法行不 ...

您好,我也做了一个扫描的矩阵键盘。端口设置同您说的第1和2条。具体过程:第1行输出低另三行输出高,扫描列,第二行输出低另三行输出高,扫描列,直到第四行完成一次整体扫描。
现在想做一个中断的,主要是新手练习练习,但是想不通用中断怎么弄的。您的第1条行全部输出低,如此按下按键对应列上应该有四个键值,怎么区分是哪个键。
不明白第三条逐行扫描怎么做,前面不是已经4行输出低的吗。

回复 支持 反对

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4518
金钱
4518
注册时间
2018-5-11
在线时间
945 小时
发表于 2018-9-1 22:12:43 | 显示全部楼层
疯子韩 发表于 2018-9-1 17:24
您好,我也做了一个扫描的矩阵键盘。端口设置同您说的第1和2条。具体过程:第1行输出低另三行输出高,扫 ...

看我的主题,
可以设置为全部按键使用中断方式,
并且不占用任何外部中断口。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
852
金钱
852
注册时间
2018-10-11
在线时间
69 小时
发表于 2020-5-20 20:54:05 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 20:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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