单片机组成的小体系中,有的需求人机交互功用,按键是最常见的输入办法。最常见的按键电路大致有,1对1的直接衔接和动态扫描的矩阵式衔接两种。
1对1的直接衔接便是一个按键直接对应一个CPU的输进口,比方下图
左右两个电路效果相同,区别是左面CPU的输入端常态为高电位,按下按键时为低电位;右边的常态为低电位,按下按键是高电位。
这样的电路简略直接,一个按键独占一个端口,在按键数量较少端口数量殷实时能够直接运用。但许多场合需求的按键数比较多,要尽量少地占用端口就有必要运用矩阵式的按键链接。如下图:
图中将按键按队伍矩阵的办法摆放,其间的每一行共用一根行线,每一列共用一根列线。以此图为例,16个按键,按1对1办法衔接的话需求16个端口,而按这样的矩阵办法链接只需求8个端口,所需端口数很多削减。按键数Knum=line*row,而端口数Pnum=line+row,其间的line和row别离代表行数和列数。
图中的Px,Py为CPU的IO端口,在本例中能够运用不同的端口也能够运用同一个8位端口。上拉电阻不是有必要,单片机IO口内部有上拉电路时此处就可省掉。
这个电路的作业原理是选用程序扫描的办法检测某个按键状况。比方将Px口的4位全置为低电平,这时假如没有任何按键按下的话,从Py口读回的4位应全为高,而假如有某一键按下,则对应按下键的那一列的位读回值将为低。这样就能知道按下键地点的列;接着确认按键所内行,把Py口的输入值作为输出,Px悉数置高并读取输入,就能得到按键地点行方位,于是就确认了所按按键的队伍方位。
扫描能够有两种完成的办法,一种是全行全列扫描,一种是逐行全列扫描。
上面的比如其实便是全行全列扫描办法,见流程框图。
其特点是,一个流程就能到是否有按键按下,并能确认按下按检测队伍值,检测过程简略敏捷。但作为队伍接口的Px,Py有必要是双向的,亦即一起具有输入输出功用,单片机的端口根本都能满意。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/256400.html