5459|13

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

矩阵键盘的疑问 [复制链接]

wince里编写矩阵键盘驱动。(7行*6列)矩阵键盘,引出13根线,6列的引线连接的GPIO设成外部中断口,7行的引线连接的GPIO方向为out输出口。

采用“行扫”的方式的话我想是不是要这样操作:
1. 等待键盘按下时,6列引线接口设成eint外部中断状态;7行引线接口方向设成out输出状态,输出低电平;
2. 有外部中断时,由中断口可判断哪一列有按键被按下;
3. 7行引线输出口分别输出:
   0111111, 1011111, 1101111, 1110111, 1111011, 1111101, 1111110等状态,
   6列的GPIO由eint外部中断功能转为方向为in的输入口,分别读取各个状态下列引线的电平状态,
   从而判断哪一行的按键被按下。
4. 综合2和3可得出具体哪个按键被按下。
5. 6列的GPIO由方向为in的输入口转为eint外部中断功能,等待下一次中断


关键是在步骤3里,6列的GPIO原来是eint外部中断口,要转成in输入口读取引脚状态,中断处理完以后还要转回eint外部中断,这样允许吗?会不会影响其他的寄存器工作呢?

GPIO口在设成外部中断功能的情况下能否通过寄存器读取外部引脚的电平?如果能的话就不用转来转去了。谢谢

最新回复

在自己不断尝试下终于好了,谢谢各位!!!!!!!!!!!!!!!!!  详情 回复 发表于 2009-7-6 11:31
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
这样切来切去的多麻烦啊?

timer 5ms扫描一次
行设为in 接上拉
列设为out 输出0
创建一个matrix表,里面包含几种status

按下时能确定哪一行
依次在out输出高电平能确定列

首先in中断的时候先去抖50ms
当持续低电平超过300ms-500ms则认为按键是被按下的,
之后抬起的去抖50ms

具体数据可以依照按键特性调整。

 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
那用矩阵键盘,光有键盘没有附带译码芯片的时候,只能用定时扫描方式了??
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
路过……
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
行列扫描进入中断时,一定要要把中断口配置成输入口,处理完时又配置成中断。
另外中断完成时,要把所有列输出低电平,保证下次按下时有行会拉低。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 2 楼 larryk 的回复:
那用矩阵键盘,光有键盘没有附带译码芯片的时候,只能用定时扫描方式了??

基本上吧
至少看了一些单片机上的程序都是这么弄得
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢,我先用中断方式试一下,中断处理的时候要切换一下io口的属性。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 2 楼 larryk 的回复:
那用矩阵键盘,光有键盘没有附带译码芯片的时候,只能用定时扫描方式了??


是这样。
建议使用芯片。哈哈。

这个和单片机的做法一样。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
同做WINCE矩阵键盘驱动,WINCE5.0下扫描函数都写好了,但是进行中断注册时出问题了,采用的4×5,外加2个中断,共6个中断,在S3C2440KBD.CPP文件不知道怎么注册了。这个文件里只能注册上一个中断,如果用静态映射的话因该就可以把,有人做过没?
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

10
 
用KernelIoControl注册,怎么会只能注册上一个中断?这个不懂了
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
路过。。。。看看
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
学而时习之
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

13
 
可在中断时转输入口,但要注意其他中断口与其他扫描线程同步的问题。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

14
 
在自己不断尝试下终于好了,谢谢各位!!!!!!!!!!!!!!!!!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表