3030|0

362

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

从头学单片机——键盘制作(二) [复制链接]

单片机说白了就是一个小的电脑的主机     那么有了主机以后  想让他正常动起来  当然缺不了键盘  好了长话短说  下面进入正题   让我们一起来制作一个键盘
    键盘有两类  一个是独立键盘  另一个是矩阵键盘   从名字上就知道  后者复杂   那我们先看看前者  这个不复杂的怎么样
这就是一个独立键盘的电路图    其特点是每个按键单独占用一个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的延时,待后沿抖动消失后才能转入该键的处理程序   好啦   大家去焊接吧   等硬件出来了  我们一起把程序写出来   对了给大家一个测试程序吧  哦对了  有了按键没显示  给了程序也没有   还是等到下次吧   下次我们说说显示器的制作   到时候一起测试吧   记得回帖哦  支持一下吧   
此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表