新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 跟我学51单片机(四):独立-矩阵键盘应用与设计

跟我学51单片机(四):独立-矩阵键盘应用与设计

作者:时间:2013-02-06来源:网络收藏

二、电路详解

  电路图如图2 所示。

图2

  从图2 中可知独立式按键采用每个按键单独占用一根I/O 口线结构。当按下和释放按键时,输入到单片机I/O 端口的电平是不一样的,因此可以根据不同端口电平的变化判断是否有按键按下以及是哪一个按键按下。从图2(a) 中可以看出,按键和单片机引脚连接并加了上拉电阻,这样当没有按键按下的时候,I/O 输入的电平是高电平,当有按键按下的时候,I/O 输入的电平是低电平。

  虽然独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O 口线,因此,在按键较多时,I/O 口线浪费较大。对于比较复杂的系统或按键比较多的场合,可以用到,图2(b) 中所示的为4×4的矩阵式键盘,其他矩阵式键盘的设计方法类似。

  4×4 的矩阵式键盘由4 根行线和4 根列线交叉构成,按键位于行列的交叉点上,这样就构成了16 个按键。其中交叉点的行列线是不连接的,当按键按下的时候,此交叉点处的行线和列线导通。图2(b) 行线通过上拉电阻接到VCC 上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线在交点导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,中的每条行线与4 条列线相交,交点的按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,键分析时必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。

  值得注意的是本文介绍的,在传统的矩阵键盘的输出端加了一个四输入与门芯片74HC21。当四路输入有一个为低电平的时候,输出为低电平。将74HC21 的输出端接到单片机的外部中断0(P32 管脚)上,这样在实时性要求较高的情况下,设P00~P03 为全低等待按键触发,当任何一个按键按下的情况下,系统都会进入中断服务程序,提高了键盘响应时间,在系统实时性要求较高的情况下非常实用。本文的全部源程序见www.ele169.com。

  三、程序设计

  本文设计实例关键程序如下。

  独立按键程序

  ……

  #define keyio P0 ( 1)

  #define key1 P0_3 ( 2)

  ……

  keyio|=0X0F; ( 3)

  if(key1==0) ( 4)

  {

  delay_nms(20); ( 5)

  if(key1==0) ( 6)

  {

  while(key1==0); ( 7)

  return 1; ( 8)

  }

  }

万能遥控器相关文章:万能遥控器代码


51单片机相关文章:51单片机教程


单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理




评论


相关推荐

技术专区

关闭