新闻  |   论坛  |   博客  |   在线研讨会
从头学单片机——键盘制作(二)
0750long | 2009-04-11 09:17:04    阅读:1850   发布文章

从头学单片机——键盘制作(二)

 

单片机说白了就是一个小的电脑的主机     那么有了主机以后  想让他正常动起来  当然缺不了键盘  好了长话短说  下面进入正题   让我们一起来制作一个键盘

    键盘有两类  一个是独立键盘  另一个是矩阵键盘   从名字上就知道  后者复杂   那我们先看看前者  这个不复杂的怎么样

这就是一个独立键盘的电路图    其特点是每个按键单独占用一个IO口,每个按键工作不会影响其他的IO口线的状态。多用于按键不多的场合。可采用JNB(或JB)来查询是哪一个按键按下  并转向相应的功能处理程序,如

JNB    P1.0,  A0;如果P1.0键按下,就跳到A0程序

当然    我们说了   这是用到不多的键盘的时候    如果多的话这个方法不免过于麻烦    这样  后者就派上用场了  这就是传说中的矩阵键盘    看起来就比独立键盘复杂的多   矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

矩阵键盘的工作原理

    最常见的键盘布局如图1所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,4*4矩阵键盘的内部电路如图2所示

图1

这个外观也没什么意思了  大家也经常见到  比如电话键盘了  银行的密码盘都是这个样子的  下面还是让我们看看他的原理吧  我们可是要自己制作一个键盘的哦 

图2  4*4矩阵键盘

  当无按键闭合时,P10~P13与P14~P17之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置列线P14~P17为输入状态,从行线P10~P13输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P14~P17读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。

这个矩阵的工作原理很不好理解哦  要仔细看的   不过也很简单的了  

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。
    

这就是抖动产生的原因了   那么如何来解决这个问题呢   其实这也是用键盘需要注意的地方   我们给他取了个名字叫按键消抖说白了就是不叫你激动的抖起来啦

按键消抖的方法有两种  一个是硬件方法   一个是软件的方法  硬件就是要电路自己完成   软件呢就是通过程序解决   我更侧重于后者  因为我这个人很懒的  不想在键盘上在加上一个什么消抖电路     另外加上也不好看了 

下面还是说说软件吧   软件消抖  即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序   好啦   大家去焊接吧   等硬件出来了  我们一起把程序写出来   对了给大家一个测试程序吧  哦对了  有了按键没显示  给了程序也没有   还是等到下次吧   下次我们说说显示器的制作   到时候一起测试吧   记得回帖哦  支持一下吧  

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客