电子元器件
采购信息平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 公众号

    电子元器件

    采购信息平台

  • 移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

4×4 矩阵式键盘电路的改进

来源: 作者:华仔 浏览:333

标签:

摘要:   本文向大家推荐一个精简IO接口的4×4键盘电路,该键盘电路仅仅使用4条IO接口引线,即可完成一般需要8位接口才能完成的功能。   在51单片机系统中,经常使用4×4键盘,一般情况下,都是使用一个8位的接口,外接16个按键。  

   本文向大家推荐一个精简IO接口的4×4键盘电路,该键盘电路仅仅使用4条IO接口引线,即可完成一般需要8位接口才能完成的功能。

   在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组建的电路中同样适用。



技术资讯 技术方案 技术应用 技术新品 技术前沿 行业方案 行业应用 行业新品 行业前沿
型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67
Baidu
map