一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于单片机矩阵键盘工作原理 矩阵键盘工作原理图的文章,本文对文章单片机矩阵键盘工作原理 矩阵键盘工作原理图好好的分析和解答,希望你能喜欢,只有你喜欢的内容存在,只有你来光临,我们才能继续前行。
如图所示
矩阵式键盘
列线通过上拉电阻连接到电源,因此无键按下时各列线均为高电平。当某一行线输出低电平,且此时正好在此行线上有键按下时,相应列线变成低电平。单片机就是利用这种方法对整个键盘进行扫描。
所谓扫描,就是CPU不断对行线逐行置低电平,然后检查列线输入状态确定按键情况。若无键按下,行线与列线没有相连,列线上全是高电平或说全为“1”。当有键按下时,总有键把某行某列线短接,使列线端口不全为高电平,即不全为“1”。
矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
矩阵键盘
<1>确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
1、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
关于扫描按键的原理,可以看下面这篇文章。
本文以循序渐进的思路,引导大家思考如何用最少的IO驱动更多的按键,并依次给出5种方案原理图提供参考。在实际项目中我们经常会遇到有按键输入的需求,但有的时候为了节省资源成本,我们都会选择在不增加硬件的情况下使用最少的控制器IO驱动更多的按键,那么具体是怎么做的呢,下面我们就以用5个IO引脚为例,讲下怎么设计可以实现更多的按键?共有5种设计思路,下面依次介绍。
首先通常想到的可能是下面这样的设计:
上图形式的按键就是我们通常说的行列式按键,它的驱动思路是这样的:
1.对IO1、2、3配置为推挽输出,依次只让其中一个输出为0其他输出为1。
2.对IO4、5进行读操作,根据读出的结果判断哪个按键按下。
例如:配置IO1、2、3为011,读IO4、5,若IO4为0则SW14按下,若IO5为0则SW15按下;
依次的配置IO1、2、3为101,读IO4、5,若IO4为0则SW24按下,若IO5为0则SW25按下;
依次的配置IO1、2、3为110,读IO4、5,若IO4为0则SW34按下,若IO5为0则SW35按下;
这里我们的思路是先依次读IO1、2、3的电平来识别S1、2、3,哪个按键按下,其后的流程和思路一是一样的,这样就可以识别11个按键了。
按照扫描的思想,某一时刻设置一个IO口为0,其他IO口读,如果有IO口读到0,则有对应按键按下。比如IO1为0,然后读到IO5也为0,那么K15就是按下的。对照这样的思路,我们可以有下面的设计:
这个电路按键识别思路是这样的:
1.只配置IO1为0,其他IO读,若IO5读到0,则K15按下,若IO4读到0,则K14按下,依次识别K13,K12;
2.只配置IO2为0,其他IO读,若IO5读到0,则K25按下,若IO4读到0,则K24按下,依次识别K23;
3.只配置IO3为0,其他IO读,若IO5读到0,则K35按下,若IO4读到0,则K34按下;
4.只配置IO4为0,其他IO读,若IO5读到0,则K45按下;
思路四
对于思路3我们发现,如果只配置IO5为0,其他IO读,若IO1读到0,则K15按下,若IO2读到0,则K25按下,依次可识别K35和K45。这样就存在重复,那么有么有好的方法,解决这样的重复呢?我们发现,若配置IO1为0,K15按下,电流流向IO1的,若配置IO5为0,同样K15按下,电流是流向IO5的。这样我们就可以通过区分电流的流向来避免重复。于是就有了下图的设计:
这样就可以避免重复,IO5为0时,按K15,IO1是读不到0的。那么怎样设计,IO5为0时对应一个按键按下IO1为0呢?如是就有人想到下面的设计:
这个电路按键识别思路是这样的:
1.只配置IO1为0,其他IO读,若IO5读到0,则K51按下,若IO4读到0,则K41按下,依次识别K31,K21;
2.只配置IO2为0,其他IO读,若IO5读到0,则K52按下,若IO4读到0,则K42按下,依次识别K32,K21';
3.只配置IO3为0,其他IO读,若IO5读到0,则K53按下,若IO4读到0,则K43按下,依次识别K32’,K31';
4.只配置IO4为0,其他IO读,若IO5读到0,则K54按下,若IO4读到0,则K43’按下,依次识别K42’,K41';
5.只配置IO5为0,其他IO读,若IO4读到0,则K54’按下,若IO3读到0,则K53’按下,依次识别K52’,K51'。
思路五
这样我们可以先识别K01、K02、K03、K04、K05,若没有按键按下然后再和思路四的设计一样去识别其他按键。但这样存在一个问题,如果IO1配置为0,IO5读到0,那么怎么知道是K51按下还是K05按下呢,这里只需要在程序里做下判断,先判断下是不是K05按下,若不是就是K51,因为按键K01、K02、K03、K04、K05在5个IO口都为读取的情况下,就可以识别,不需要扫描识别处理,相当于这5个按键优先级高与其他按键。
总结
假设有N个IO口按照思路三可以识别N*(N-1)/2个;
按照思路四可识别N*(N-1)个;
按照思路5可以识别N*(N-1)+N个。
最后再说下,如果实际设计时,还是按思路四设计好,软件也没那么麻烦。如果是你的话你会选择哪种方法呢?你还有没有其他的设计方法呢?
以上内容是小编精心整理的关于单片机矩阵键盘工作原理 矩阵键盘工作原理图的精彩内容,好的文章需要你的分享,喜欢单片机矩阵键盘工作原理 矩阵键盘工作原理图这篇精彩文章的,请您经常光顾吧!
上一篇:团务工作 团务工作有哪些
下一篇:更多农历
本文标题:单片机矩阵键盘工作原理 矩阵键盘工作原理图
本文链接:http://m.xzfx123.com/article/112680.html
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于单片机矩阵键盘工作原理 矩阵...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于团务工作 团务工作有哪些的文...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于厨师工作内容 厨师工作内容简...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于人大工作职责 人大工作职责三...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于工作报表表格怎么做 工作报表...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于城市民族工作条例 城市民族工...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于提高工作效率 英文 有利于提高...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于传统文化手工作品 传统文化手...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于工作经历怎么填写 简历没有工...
一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于扎实工作作风 扎实工作作风,严...