您的位置 首页 软件

【E电路】4×4矩阵式键盘电路的改善

51单片机系统中,经常使用4×4键盘,一般情况下,都是使用一个8位的接口,外接16个按键。下图就是一个常规的4×4键盘电路图。这种常规的矩阵键盘电路,相信大家都司空见惯了,好多人都

  51单片机体系中,常常运用4×4键盘,一般情况下,都是运用一个8位的接口,外接16个按键。

  下图便是一个惯例的4×4键盘电路图。

    

 

  这种惯例的矩阵键盘电路,信任我们都习以为常了,好多人都会编写它的驱动程序。

  图中运用了P0口的8个引脚(P0.0~P0.7),别离驱动键盘的行和列。按键的编号,在图中别离标示了0~F。

  检测按键的一般的思路是在四个列线,别离输出一个低电平,然后输入行线,逐行检测是否存在低电平。

  假如在某行有低电平呈现,就阐明该行、列的交叉点上的按键,被按下了。

  其实,这些行、列引线,是“分时”作业的,当在某一列输出低电平的时分,其它的列,输出的便是高电平。

  假如运用这些输出高电平的列,进行输入,那么就能够极大的节约IO接口的引线数量。

  根据这个道理,在上图中,下面的四个列驱动引线(P0.4~P0.7),就完全能够省去,只是运用行驱动的引脚(P0.0~P0.3)来分时输出低电平即可。

  电路见下图。

    

 

  为了对引脚之间进行阻隔,图中加上了四个二极管,保证只要在引脚输出低电平的时分,方可把键盘中相应的列置为0。

  针对这个电路,对按键的检测办法,和惯例的4×4键盘检测思路是相同的,例如:

  当在P0.0输出低电平,即最左面的列为0,这时检测P0.1、P0.2及P0.3是否为0,能够判别最左面的三个按键是否按下;

  当在P0.1输出低电平,即左面第二列为0,这时检测P0.0、P0.2及P0.3是否为0,能够判别左面第二列的三个按键是否按下;

  …………;

  这个检测按键是否按下的思路非常简略,会编写惯例4×4键盘驱动程序的网友,必定都会编写出来这种电路的驱动程序。

  由于行和列运用了相同的IO引线,实际上,连接在同一个引线的行、列交叉点处的按键,就现已失效了,那么就把把本来的按键,移动出来,把二极管画在交叉点,电路如下所示。

    

 

  再把移出来四个按键连接在IO引线,另一端直接接地;把其它按键的编号,再收拾一下,就成了下图电路。

    

 

  这个电路比惯例的4×4键盘电路只是多用了四个二极管,可是却节约了四条IO接口引线,这个含义是非常巨大的。

  依照这个电路的规划思路,运用 n 条IO接口引线,就能够驱动 n×n 个按键。

  那么用5个IO引脚,就能够驱动5×5的键盘,这就足以满意各种应用了。

  网上也有一些其它类型的节约接口的键盘电路,可是都有缺乏,不是电路过于杂乱,便是驱动的按键个数较少,远远不及本电路简略有用。

  这是个完美的精简接口的4×4键盘电路,不只能够用在51单片机体系,在运用其它MCU组成的电路中相同适用。

  针对这个电路,现已用汇编言语和C言语编写出了驱动程序,由于汇编言语能够运用“位操作”指令,所以程序的比较简略;C言语的程序,就显得负担一些。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/115414.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部