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

2009-4-10 12:59 2810 2 6 分类: MCU/ 嵌入式

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


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


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


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


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


矩阵键盘的工作原理


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


5873fb21-f02d-4471-a3a6-b9dc2228b2c9.gif


图1


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


e8ad68f1-42ce-4432-88ff-9978bea552b5.gif


图2  4*4矩阵键盘


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


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


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


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


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


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

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户221581 2009-5-19 14:21

谢谢啊 顶

用户154691 2009-4-11 12:57

呵呵 瞎写着玩的

tengjingshu_112148725 2009-4-10 22:09

牛啊,博客精华啊

用户154691 2009-4-10 21:43

自己顶一下哦
相关推荐阅读
用户154691 2010-04-08 13:14
元器件购买
作为一个搞电的,其实重要的工作有很多,比如搭电路、调试、写代码等等,但是在这一切的基础之上要有一个也是很重要的,那就是元器件的选购,元器件的选购会影响到设计的成本,在此给大家推荐一家我常去的电子店铺,...
用户154691 2010-04-07 23:04
ARM学习 序
在学51的时候,我在社区开了博客,来记录我的一点一滴,但是由于本人比较懒惰,没能坚持下来,现在回想起来,深感遗憾。转眼间,大学四年生活已经结束,很幸运的是今年工作很容易找,找了一个比较满意的单位,来到...
用户154691 2009-04-11 10:03
keil学习一下
今天做点什么呢   现在我们有最小系统了  还有了键盘   显示不知大家有法子了没  不过姑且还不怎么用的上   大家可以尝试一下做一排8个LED灯作为显示   因为 我们接下来用的也就是这些就够了 ...
用户154691 2009-04-11 09:44
秀秀我今天做的矩阵键盘
今天用了一中午的时间做了一个矩阵键盘  自己很满意   而且今天我的一个创举足足让我美了一会   大家看看吧    给点评价吧    本来呢 几天也试着做了一个4位数码管显示器来着   可是做着做着就...
用户154691 2009-04-10 12:01
从头学单片机——单片机最小系统(一)
 我这里只提一些基础的入门概念,给真正的入门者起一点抛砖引玉的作用。     一块我们刚刚从商家手里拿到的单片机芯片,还是一块空白,什么也做不了。如同一个刚出世的孩子,我们开发人员要做的,就是教会单片...
我要评论
4
2
关闭 站长推荐上一条 /1 下一条