- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章:单片机的功能2
第四章:单片机的功能2 ——扫描与显示 一、按键篇 按键总共有四个引脚,一般情况下,处于同一边的两个引脚内部是连接在一起的,如何分辨两个引脚是否处在同一边呢?可以将按键翻转过来,处于同一边的两个引脚,有一条突起的线将他们连接一起,以标示它们俩是相连的。如果无法观察得到,用数字万用表的二极管挡位检测一下即可。搞清楚这点非常重要,对于我们画PCB的时候的封装很有益。它们和我们的单片机系统的I/O口连接一般如上图: 对于单片机I/O内部有上拉电阻的微控制器而言,还可以省掉外部的那个上拉电阻。简单分析一下按键检测的原理。当按键没有按下的时候,单片机I/O通过上拉电阻R接到VCC,我们在程序中读取该I/O的电平的时候,其值为1(高电平); 当按键S按下的时候,该I/O被短接到GND,在程序中读取该I/O的电平的时候,其值为0(低电平) 。这样,按键的按下与否,就和与该按键相连的I/O的电平的变化相对应起来。结论:我们在程序中通过检测到该I/O口电平的变化与否,即可以知道按键是否被按下,从而做出相应的响应。一切看起来很美好,是这样的吗? ◎现实并非理想 在我们通过上面的按键检测原理得出上述的结论的时候,其实忽略了一个重要的问题,那就是现实中按键按下时候的电平变化状态。我们的结论是基于理想的情况得出来的,就如同下面这幅按键按下时候对应电平变化的波形图一样: 而实际中,由于按键的弹片接触的时候,并不是一接触就紧紧的闭合,它还存在一定的抖动,尽管这个时间非常的短暂,但是对于我们执行时间以us为计算单位的微控制器来说, 它太漫长了。因而,实际的波形图应该如下面这幅示意图一样。 这样便存在这样一个问题。假设我们的系统有这样功能需求:在检测到按键按下的时候,将某个I/O的状态取反。由于这种抖动的存在,使得我们的微控制器误以为是多次按键的按下,从而将某个I/O的状态不断取反,这并不是我们想要的效果,假如该I/O控制着系统中某个重要的执行的部件,那结果更不是我们所期待的。于是乎有人便提出了软件消除抖动的思想,道理很简单:抖动的时间长度是一定的,只要我们避开这段抖动时期,检测稳定的时候的电平不久可以了吗?听起来确实不错,而且实际应用起来效果也还可以。于是,各种各样的书籍中,在提到按键检测的时候,总也不忘说道软件消抖。就像下面的伪代码所描述的一样。(假设按键按下时候,低电平有效) ◎消除抖动有必要吗? 的确,软件上的消抖确实可以保证按键的有效检测。但是,这种消抖确实有必要吗?有人提出了这样的疑问。抖动是按键按下的过程中产生的,如果按键没有按下,抖动会产生吗?如果没有按键按下,抖动也会在I/O上出现,我会立刻把这个微控制器锤了,永远不用这样一款微控制器。所以抖动的出现即意味着按键已经按下,尽管这个电平还没有稳定。所以只要我们检测到按键按下,即可以返回键值,问题的关键是,在你执行完其它任务的时候,再次执行我们的按键任务的时候,抖动过程还没有结束,这样便有可能造成重复检测。所以,如何在返回键值后,避免重复检测,或者在按键一按下就执行功能函数,当功能函数的执行时间小于抖动时间时候,如何避免再次执行功能函数,就成为我们要考虑的问题了。这是一个仁者见仁,智者见智的问题,就留给大家去思考吧。所以消除抖动的目的是:防止按键一次按下,多次响应 。 1.2按键时序分析 一次完整的击键过程,包含以下几个阶段: 1.2.1、????等待阶段: 此时按键尚未按下,处于空闲阶段。1.2.2、????闭合抖动阶段: 此时按键刚刚按下,但信号还处于抖动状态,系统在监测时应该有个消抖的延时。这个延时时间为4~20ms。消抖动延时的另一个作用是可以剔除信号线上的干扰,防止误动作。1.2.3、????有效闭合阶段: 此时抖动已经结束,一个有效的按键动作已经产生。系统应该在此时执行按键功能;或将按键所对应的编号(简称“键号”或“键值”)记录下来,待按键释放时再执行1.2.4、????释放抖动阶段: 一般来说,考究一点的程序应该在这里做一次消抖延时,以防误动作。但是,如果前面“闭合抖动阶段”的消抖延时时间取值合适的话,可以忽略此阶段。1.2.5、????有效释放阶段: 如果按键是采用释放后再执行功能,则可以在这个阶段进行相关处理。处理完成后转到阶段1;如果按键是采用闭合时立即执行功能,则在这个阶段可以直接切换到阶段1。 1.3常见击键类型分析 击键类型,也就是用户击键的方式。????击键类型的划分有多种方式,比如:a)????按照击键时间来划分,可以分为“短击”和“长击”;b)????按照击键后执行的
您可能关注的文档
最近下载
- 设备管理软件:IBM Maximo二次开发_(2).IBMMaximo安装与配置.docx VIP
- 医院感染管理办法试题及答案.docx VIP
- 设备管理软件:IBM Maximo二次开发_(4).IBMMaximo数据库管理.docx VIP
- 工程物资供应措施.docx VIP
- 第三章:寻找新闻线索.ppt VIP
- 人教版PEP英语六年级上册Unit 1 How can I get there教案.pdf VIP
- 2025年公安局招聘警务辅助人员考试试卷[附答案].docx
- TCEEIA 558:2021工业机器人可靠性测试与评定.pdf VIP
- 职场数字素养与技能提升培训课件.pptx VIP
- SYT7415-2018 油气集输管道内衬用聚烯烃管.pdf VIP
文档评论(0)