分享
分销 收藏 举报 申诉 / 8
播放页_导航下方通栏广告

类型按键资料整理.doc

  • 上传人:xrp****65
  • 文档编号:8972021
  • 上传时间:2025-03-09
  • 格式:DOC
  • 页数:8
  • 大小:299.50KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    按键 资料 整理
    资源描述:
    键盘知识讲解 一、键盘的分类 编码键盘 键盘 独立键盘 非编码键盘 矩阵键盘 键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。键盘分两大类:编码键盘和非编码键盘。 编码键盘:由硬件逻辑电路完成必要的键识别工作与可靠性措施。每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。这种键盘易于使用,但硬件比较复杂,对于主机任务繁重之情况,采用8279可编程键盘管理接口芯片构成编码式键盘系统是很实用的方案。 非编码键盘:只简单地提供键盘的行列与矩阵,其他操作如键的识别,决定按键的读数等仅靠软件完成,故硬件较为简单,但占用CPU较多时间。有:独立式按键结构、矩阵式按键结构。 二、键盘系统设计 首先,确定键盘编码方案:采用编码键盘或非编码键盘。随后,确定键盘工作方式:采用中断或查询方式输入键操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。 (一)非编码键盘的键输入程序应完成的基本任务 1.监测有无键按下;键的闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。 2.判断是哪个键按下。 3.完成键处理任务。 (二)从电路或软件的角度应解决的问题 1.消除抖动影响。键盘按键所用开关为机械弹性开关,利用了机械触点的合、断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动,波形如下: 抖动时间的长短由按键的机械特性决定,一般为5~10ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。 为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。按键的消抖,通常有软件,硬件两种消除方法。 硬件消抖 :这种方法只适用于键的数目较少的情况。 软件消抖:如果按键较多,硬件消抖将无法胜任,常采用软件消抖。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。(这种消除抖动影响的软件措施是切实可行的。) 2.采取串键保护措施。串键:是指同时有一个以上的键按下,串键会引起CPU错误响应。 通常采取的策略:单键按下有效,多键同时按下无效。 3.处理连击。连击:是一次按键产生多次击键的效果。要有对按键释放的处理,为了消除连击,使得一次按键只产生一次键功能的执行(不管一次按键持续的时间多长,仅采样一个数据)。否则的话,键功能程序的执行次数将是不可预知,由按键时间决定。连击是可以利用的。连击对于用计数法设计的多功能键特别有效。 三、键盘工作方式 查询方式(编程扫描,定时扫描方式) 键盘的工作方式 中断扫描方式 单片及应用系统中,键盘扫描只是CPU的工作内容之一。CPU忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。考虑仪表系统中CPU任务的份量,来确定键盘的工作方式。 键盘的工作方式选取的原则是:既要保证能及时响应按键的操作,又不过多的占用CPU的工作时间。 四、键盘电路结构 (一)独立式按键接口设计 独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。 优点:电路配置灵活,软件结构简单。 缺点:每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。 因此,此键盘是用于按键较少或操作速度较高的场合。 也可以用扩展I/O口搭接独立式按键接口电路,可采用8255扩展I/O口,用三态缓冲器扩展。这两种配接方式,都是把按键当作外部RAM某一工作单元的位来对待,通过读片外RAM 的方法,识别按键的工作状态。 上电路中独立式按键电路,各按键开关均采用了上拉电阻,是为了保证在按键断开时,各I/O有确定的高电平。如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。 (二)矩阵式键盘接口设计 矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上。节省I/O口。 矩阵键盘工作原理:行线通过上拉电阻接到+5V上。无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平为高。 五、双功能及多功能键设计 在单片机应用系统中,为简化硬件线路,缩小整个系统的规模,总希望设置最少的按键,获得最多的控制功能。 矩阵键盘与独立式按键键盘相比,硬件电路大大节省。可通过软件的方法让一键具有多功能。方法:选择一个RAM工作单元,对某一个按键进行按键计数,根据不同计数值,转到子程序。这种计数多功能键最好与显示器结合用,以便知道当前计数值,同时配合一个启动键。 复合键是使用软件实现一键多功能的另一个途径。所谓复合键,就是两个或两个以上的键的联合,当这些键同时按下时,才能执行相应的功能程序。实际情况做不到“同时按下”,他们的时间差别可以长到50ms,解决策略是:定义一个或两个引导键,这些引导键按下时没什么意义,执行空操作。引导键的例子:微机键盘上的CTRL、SHIFT、ALT。 缺点:一是操作变得复杂,二是操作时间变长。 多功能键的利用,应具体情况具体分析。要求速度的场合最好做一键一功能。如果系统功能很多,一键一功能不现实,可采取一键多功能。 六、功能开关及拨码盘接口设计 设计原因:键盘输入灵活性大,操纵方便。但某些重要功能或数据由键盘输入,误操作将产生一些不良后果。因此常设定静态开关的方法来执行这些功能或输入数据。静态开关一经设定,将不再改变,一直维持设定的开关状态。通常这些开关状态是在单片机系统加电时由CPU读入内存RAM的,以后CPU将不再关注这些开关的状态,因此,即使加电后,这些开关的状态发生变化,也不会影响CPU的正常工作,只有在下一次加电时,这些新状态才能生效。 第一、功能开关:主要是根据开关的状态执行一些重要的功能。 第二、拨码盘:单片机应用系统中,有时要输入一些控制参数,这些参数一经设定,将维持不变,除非给系统断电后重新设定。这时使用数字拨码盘既简单直观,又方便可靠。 七、按键介绍 常用的按键有三种:机械触点式按键、导电橡胶式和柔性按键(又称触摸式键盘)。 机械触点式按键是利用弹性使键复位,手感明显,连线清晰,工艺简单,适合单件制造。但是触点处易侵入灰尘而导致接触不良,体积相对较大。 导电橡胶按键是利用橡胶的弹性来复位,通过压制的方法把面板上所有的按键制成一块,体积小,装配方便,适合批量生产。但是时间长了,橡胶老化而使弹力下降,同时易侵入灰尘。 柔性按键是近年来迅速发展的一种新型按键,可以分为凸球型和平面型两种。凸球型动作幅度触感明显,富有立体感,但制造工艺相对复杂;平面型幅度微小,触感较弱,但工艺简单,寿命长。柔性按键最大特点是防尘、防潮、耐蚀,外形美观,装嵌方便。而且外形和面板的布局、色彩、键距可按照整机的要求来设计。 八、按键的特殊处理 (一)按键“触发”和“长按”有效的核心算法: unsigned char Trg; // Trg(triger) 代表的是触发 unsigned char Cont; // Cont(continue)代表的是连续按下 void KeyRead( void ) {     unsigned char ReadData = PINB^0xff;       Trg = ReadData & (ReadData ^ Cont);          Cont = ReadData;                                } 以PB0接口按键为例,读取结果如下表所示: 数据结果 ReadData Trg Cont 没有按键的时候 0 0 0 第一次PB0按下的时候 0x01 0x01 0x01 PB0按着不松的情况 0x01 0 0x01 按键松开的情况 0 0 0 运用中用“与”即可实现按键“触发”或“长按”的处理任务。 例如: void KeyProc(void) {        if (Trg & KEY_MODE) // 如果按下的是KEY_MODE     {                    //此键长按无效,它是不会执行第二次的哦 , 必须先松开再按下          Mode++;    // 模式寄存器加1 }    if (Cont & KEY_PLUS) // 如果“加”按键被按着不放 {          cnt_plus++;       // 计时          if (cnt_plus > 100) // 20ms*100 = 2S 如果时间到          {               Func();     // 你需要的执行的程序          }               } } 参考内容: 还可以使用状态机解决按键长按处理。以下以一个按键A为例:键值为A_Key(每一次收到A_Key表示按键A被按下一次),假设每50ms扫描一次。 状态 意义 ------------------------------------- Idel ---- 按键没有按下(初始状态) KDown ---- 按键按下 KUp ---- 按键弹起 ------------------------------------- 参考连接: (二)组合按键的使用 阵键盘中组合按键处理 对于传统的矩阵扫描键盘,如下图8.1所示(列输出、行输入)。它无法判断2个以上按键同时在同一输入行线被按下的情况,因为当有2个以上按键被按下时,按键扫描输入端的电平其实不是一个标准的1电平或者0电平。电压大概为多少,这要看有几个按键在同一输入行线上被按下以及MCU的IO驱动能力。 为了能防止IO冲突,又能识别2个以上的按键在同一行输入,这时可以通过软件来改变扫描方式以解决该问题:整个扫描过程中, 只有一条线是输出的,其他剩余的行和所有的列都是输入,这样就能避免冲突。 图8.1 矩阵扫描电路 参考连接: 《从矩阵按键扫描谈软硬件配合的重要性》 九、单片机系统键盘设计实例 实例参考连接: 《AVR单片机定时器按键扫描程序》 十、结语 键盘是单片机系统设计中一种主要的信息输入接口,合理的设计,不仅可以节省系统的设计成本,更可使仪器设备的操作变得更为简单、方便,很大程度上提高系统综合性能。 全文参考连接: 相关连接: 《电脑键盘工作原理》 看见大家发了那么多按键的处理方法,我也发一个。 刚参加工作的时候,对比学校里和同事的按键处理函数,发现总是不尽如人意, 有以下几点: 1. 消抖复杂,效率低。很多人直接在电平判断后使用delay()函数,进行消抖, 耽误时间;有人在按键电平中断中消抖,导致其他的中断,比如串口、定时等 反应很慢,不适合做实时系统; 2. 特殊功能按键的处理麻烦。使用简单电平判断的按键扫描,在需要长按响应、 复合按键响应、复合按键长按响应的时候,需要增加很多的标志位,反复使用 if..else判断,有时候把自个都搞乱了。 3. 不便于移植和修改。使用以上两点编写的函数,如果用在直接端口按键上的, 那么在行列扫描按键的时候,就很难适应。导致每个项目都要更改一次。 想了很久之后,我结合PC的键盘处理方法,编写了自己的按键函数,经过几次修改, 定了下来。这十几年来,一直在用,方便移植,而且比较清晰。 ——至少我自己这么觉得。 它有以下几个特点: 1. 按键扫描和取值分开。 在中断中(一般10ms),反复调用keyScan()进行按键扫描(包括消抖)。 消抖之后的按键值不返回,作为消息放到全局变量中; 在需要判断的地方使用getKeyValue()获取当前的键值,进行处理。 2. 每一个按键,都有单独的标志位和计时变量。 消抖计时: 如果按键按下,每调用一次10ms中断,gucKeyOkTimer增加; gucKeyOkTimer超过消抖的阀值(我一般10次,即100ms),则确认有按键了。 任何一次扫描到按键没有按下,gucKeyOkTimer清空; 标志位: 如果一直按着(通过按键电平判断),会有gfOkPressing; 如果按下过一次,需要响应,会有gfOkNeedAck; 复合按键的响应: 因为每个按键,包括复合按键都有自己的标志位和计时变量,可以跟物理按键的 处理方法相同。只是消抖的条件,不是电平的判断,而是物理按键的pressing标志。 3. 我没有使用怪癖诡异的编程方法。有很多取巧的方法可使实现按键的扫描,甚至有 人写了三行代码就实现消抖。——我个人不喜欢这样的程序风格。我喜欢思路清晰的编程方法, 易于维护和移植。当然代价就是多了一些ROM和RAM占用,但我觉得时间和代码的质量更重要。 如果你跟我的思路相同,也遇见过这样的困惑,可以考虑我的按键扫描方法。
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:按键资料整理.doc
    链接地址:https://www.zixin.com.cn/doc/8972021.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork