当前位置:首页 > 技术心得 > 正文内容

线反转法行列键盘扫描

xjtudll15年前 (2009-12-21)技术心得62202

    行列键盘的学习是单片机学习的必经之路,可是对于初学者来说学习起来并不容易。书上的资料不多,或是说明不细,亦或太复杂不易理解。而线反转法行列键盘扫描简单易懂,非常适合初学者学习,也可作为程序开发之用。
    了解行列键盘扫描得从硬件开始学习,我们得知道行列扫描是什么意思。在 单片机系统中为了扩大同一个 I/O 口的键盘个数,则采用了行列式键盘接法,就 是交叉相接。所谓的“行”、“列”是我们人为规定的,如果试着把列看成行,将行看成列是一样的。
    这里我们规定 P1.0~P1.3为列,P1.7~P1.4 为行。 如图所示:

 1、51例子
举一个例子吧。
第一步:行线IO P1.7~P1.4置低电平,列线IO P1.0~P1.3置高电平
假设K1按下,那么P1.0=0 读P1口 P1=00001110
第二步:行线IO P1.7~P1.4置高电平,列线IO P1.0~P1.3置低电平
假设K1按下,那么P1.7=0 读P1口 P1=01110000
两个字节相加,得到新数据:01111110(第一行 第一列)

每按一个键我们都得到不同的字节,比对我们的字节是什么就可以知道键值是什么了。

2、MSP430例子
前面我们已经讲述了51的例子,51有其特性,IO口送出去的数据,如果不改变的话,还可以读回来,类似于一个锁存器。但是MSP430或AVR之类的单片机,是不行的。
因此,对于IO内部无上拉电阻的MSP430单片机,比如MSP430F149,不仅行线需要加上拉电阻,列线也需要加上拉电阻,以便维持高电平。而MSP430F21X1等系列则不必了,因为其IO可以通过配置寄存器得到上拉电阻或下拉电阻。
除了这些不同外,按键扫描流程也略有不同。
同样行列线的定义如上图。
第一步:设置 行线为输入态,列线为输出态
第二步:列线 输出低电平
第三步:读行线P1.7~P1.4的电平,读回来的数据抛弃低四位
第四步:设置 列线为输入态,行线为输出态
第五步:行线 输出低电平

第六步:读列线P1.0~P1.3的电平,读回来的数据抛弃高四位

两个字节相加,得到一个新数据。比对字节同样可以知道键值。
如果是MSP430F21X1等系列单片机,需要加一步配置上拉电阻(在外部无上拉电阻的情况下)。


扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/22/

标签: 键盘MSP43051
分享给朋友:

“线反转法行列键盘扫描” 的相关文章

word文档无法打开插入文档里的RAR文件

问题: 办公室的电脑打不开插入word文档插入文档里的RAR文件,但在其他电脑上可以打开。打开时提示:此对象创建于Package中。此应用程序不能用来打开此对象。请确认此应用程序已正确安装,并且未被删除、移动或重命名。 请问该问题如何解决?谢谢! 答案: C:\WINDOWS\system32 目录...

图像不能包含 alpha 通道或透明度

将app上传到应用市场时,都会要求提供app图标,但是上传时,有时候就会碰到: “图像不能包含 alpha 通道或透明度” 如何解决这个问题呢? 将图片另存为 jpeg格式。如果要求png格式,那么再将jpeg转成png, 使用工具:windows自带的画图。...

Google地图测距

Google地图测距

百度地图上有个测距功能,还是挺好用的。但百度地图有个缺点,没法看国外的东西,国外地图只显示了国家和首都,信息太匮乏了。 今天要测量欧洲两个城市的直线距离,百度不好使了,Google上默认又没有测距功能,搜了半天,找到了方法。 步骤如下: 1、在浏览器中输入http://ditu.google.cn/...

再谈无线网络受限——无法获得IP地址

前面曾经写了一篇[无线网络连接受限]的解决办法(http://xjtudll.cn/Exp/66/),本次再谈一些这方面的内容。上次无线网络受限导致的结果就是:无线网卡无法获得IP地址,即便信号很好,也一直连不上。上次最后的解决办法是用WEP加密方式,后来在网上看到WPA2-PSK加密方式更为安全,...

REG51.H详解

/* BYTE Register */ sfr P0 = 0x80; //P0口 sfr P1 = 0x90; //P1口 sfr P2 = 0xA0; //P2口 sfr P3 = 0xB0; //P3口 sfr PSW = 0xD0; //程序状态字,具体位意义见位定义 sfr ACC = 0x...

水晶报表 文件 xxxx.rpt 文件内部出错:无法加载数据解决方案

水晶报表 文件 xxxx.rpt 文件内部出错:无法加载数据解决方案

  水晶报表 文件 xxxx.rpt 文件内部出错:无法加载数据解决方案 发布的时候,忘记带上这个app.config了,编译以后它的名字叫做xxx.exe.config(在debug和release目录里),xxx表示你的应用程序的启动项的程序文件,或者叫主程序吧,知道是什么就行了,...

评论列表

xjtudll
xjtudll IP:
10年前 (2014-08-05)

是西交毕业的

myxiaonia
myxiaonia IP:
10年前 (2014-08-04)

你好,请问矩阵键盘行扫描法能够避免#型中,任意3个键都能正确读回么
还有你是xjtu的校友么,我看你网址名字很有特殊,我是的哦

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。