如图,13p有一排键盘突然用不了了下面那排怎么弄没?

单片机按键处理技巧及编程方式 在基于单片机为核心构成的应用系统中,用户输入是必不可少的一部分。输入可以分很多种情况,譬如有的系统支 持PS2键盘的接口,有的系统输入是基于编码器,有的系统输入是基于串口或者 USB或者其它输入通道等等。在各种 输入途径中,更常见的是,基于单个按键或者由单个键盘按照一定排列构成的矩阵键盘 (行列键盘)。我们这一篇章主 对于单片机I/O内部有上拉电阻的微控制器而言,还可以省掉外部的那个上拉电阻。简单分析一下按键检测的原 理。当按键没有按下的时候,单片机 I/O通过上拉电阻R接到VCC我们在程序中读取该 I/O的电平的时候,其值为 1(高电平);当按键S按下的时候,该I/O被短接到GND在程序中读取该I/O的电平的时候,其值为 0(低电平)。这样,按键的按下与否,就和与该按键相连的 I/O的电平的变化相对应起来。结论:我们在程序中通过检测到该 I/O 口 电平的变化与否,即可以知道按键是否被按下,从而做出相应的响应。一切看起来很美好,是这样的吗? 在我们通过上面的按键检测原理得出上述的结论的时候,那就是现实中按键按下时候的电平变化状态。我们的结论是基于理想的情况得出来的,而实际中,由于按键的弹片接触的时候,并不是一接触就紧紧的闭合,它还存在一定的抖动,尽管这个时间非常的短暂,但是对于我们执行时间以 US为计算单位的微控制器来说, 它太漫长了。因而,实际的波形图应该如下面这幅示意图一样。 If(O == io_KeyE I/O的状态不断取反,这并不是我们 想要的效果,假如该I/O控制着系统中某个重要的执行的部件,那结果更不是我们所期待的。于是乎有人便提出了软 件消除抖动的思想,道理很简单:抖动的时间长度是一定的,只要我们避开这段抖动时期,检测稳定的时候的电平不 就可以了吗?听起来确实不错,而且实际应用起来效果也还可以。于是就像下面的伪代码所描述的一样。 (假设按键按 下时候,低电平有效) // 如果有键按下了 { 先延时20ms避开抖动时期 然后再检测,如果还是检测到有键按下 { 是真的按下了,返回键值 } else { return KEY_NULL Zz 是抖动,返回空的键值 } While(O == io_KeyE nter) ; ZZ 等待按键释放 } 乍看上去,确实挺不错,在实际的系统中,一般是不允许这么样做的。为什么呢?首先,这里的 DeIaymS(20), 让微 控制器在这里白白等待了 20 ms的时间,啥也没干,考虑我在《学会释放 CPU —章中所提及的几点,这是不可取的。 其次whiIe(0 == io_KeyEnter) 所以合理的分配好微控制的处理时间,是编写按键程序的基础。原本是等待按键释放, 结果CPU就一直死死的盯住该按键,其它事情都不管了,那其它事情不干了吗? 消除抖动有必要吗? 的确,软件上的消抖确实可以保证按键的有效检测。但是,这种消抖确实有必要吗?抖动的出现即意味着按键已 经按下,尽管这个电平还没有稳定。所以只要我们检测到按键按下,即可以返回键值,问题的关键是,在你执行完其 它任务的时候,再次执行我们的按键任务的时候,抖动过程还没有结束,这样便有可能造成重复检测。所以,如何在 返回键值后,避免重复检测,或者在按键一按下就执行功能函数,当功能函数的执行时间小于抖动时间时候,如何避 免再次执行功能函数,就成为我们要考虑的问题了。所以消除抖动的目的是:防止按键一次按下,多次响应。 基于状态转移的独立按键程序设计 本章所描述的按键程序要达到的目的:检测按键按下,短按,长按,释放。即通过按键的返回值我们可以获取到如下的信息:按键按下(短按),按键长按,按键连_发,按键释放。这样的功能到底是如何实现的呢,今天就让我们来 剖析它的原理吧。下面让我们来简单的描绘一下它的状态流程转移图。 下面对上面的流程图进行简要的分析。 首先按键程序进入初始状态 S1 ,在这个状态下,检测按键是否按下,如果有按下,则进入

[版权声明] 本站所有资料由用户提供并上传,若内容存在侵权,请联系邮箱。资料中的图片、字体、音乐等需版权方额外授权,请谨慎使用。网站中党政主题相关内容(国旗、国徽、党徽)仅限个人学习分享使用,禁止广告使用和商用。

京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。

注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。


京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。

划线价:商品展示的划横线价格为参考价,并非原价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或其他真实有依据的价格;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。

折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。

异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。

我要回帖

更多关于 有一排键盘突然用不了了 的文章

 

随机推荐