全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实现简洁高效的键盘处理对于提高单片机系统的可靠性及速度有重要意义。键盘处理的重要环节是扫描和去抖,不少书籍在介绍这些内容时往往只介绍查询和循环延迟的方法,这使初学者比较容易理解,但在实际中通常不会使用这些方法,因为那样的话效率太低了。这里我们介绍一种采用定时扫描和计数去抖的键盘处理方法,它不仅使程序非常简单高效,而且便于灵活扩展实现处理更复杂的键盘要求。本文先介绍它的基本算法。算法流程图图1位该算法的流程图,它用到下面的变量和常数。变量KscnaBuf:键盘扫描码缓存KScan:键盘扫描码KCount:去抖计数器KReady:按键有效标志常量KD_val:去抖计数长度算法的基本过程如下:CPU以一定时间间隔周期地执行此键盘扫描处理程序。先是对键盘作扫描,获得反映键盘状态的键盘扫描码;然后对扫描码进行前后对比和定时计数,实现去抖;去抖后置位KReady标志,通知键盘分析程序已检测到有效按键。关于键盘扫描码键盘扫描码反映读取键盘时刻的键盘动作状态。对键盘扫描码的基本要求是它要能对每一个单键作唯一编码,如果要使用多键组合则要能对每一种组合进行唯一编码。通常能做到对任意单键或双键作唯一编码即能满足大多数场合的要求。具体键盘扫描码的编码方法随采用电路的不同而不同,这里以图2中的4 X 4键盘为例说明。在该电路中,D4 D7是输出,D0 D3是输入。在读取键盘时程序分别将D4,D5,D6和D7单独地置成低电平,然后依次读取D0 D3,即可获得所有按键的状态。我们可以将D0 D3与D4 D7合在一起,作为按键的编码。例如,当A键按下时,得到的编码是10111110;当B键按下时,得到的编码是01110111。为了反映整个键盘的状态,可以将D0 D3不全为1的编码作逻辑与,其结果作为键盘扫描码。可以验证,这样设计的扫描码能够唯一地标识任意单键或双键的动作状态。去抖的实现我们知道,当一个按键按下和释放时,对应信号线电平的变化有一个不稳定期,即所谓“抖动”,这是因为多数开关的闭合和断开都有一个过程,并不是即刻实现的。在读取键盘状态是必须避开这个不稳定期,以免造误判,这样一个做法叫做“去抖”。图3是一按键的动作波形,箭头表示定时扫描时读取键盘的时刻。可以看出,如果当在一段时间内都连续多次读到同一个非空(即有键按下)的扫描码,我们可以认为这时按键已处于稳定状态,这时得到的扫描码就代表了一个键盘动作,抖动的影响已经被剔除。按照这个想法,我们只需设置一计数器,当每次读到的非空扫描码与上一次的相同,就将计数器加1;而当一旦读到不同的扫描码或空码则立即将计数器清0。如果计数器的值达到某预定值N时,则表示连续N次读到同一扫描码,于是可认为已经读到了有效的按键。设键盘扫描的间隔是T,则去抖的时间就是N * T。在实际中可以根据按键的特性选取适当的N和T值,以达到可靠的去抖效果。应用说明及示例键盘扫描程序通常用定时中断周期地启动执行。不过一般不宜将整个键盘扫描程序全部放在中断响应程序里,因为那样会降低系统对其他中断响应的性能。通常可以把它放在程序的主循环里(这里只是针对前后台系统讨论,若是多任务系统可以将其设计成一个任务),由定时中断程序通过一个标志周期地启动其执行。当然,如果系统对中断响应性能要求不高,也可以将整个键盘扫描程序放在中断响应程序里。在系统启动时,需要对键盘扫描程序作初始化,即将KReady和KDcnt清0 。扫描获得的有效键盘动作通过变量KScan和标志KReady传递给键盘分析执行程序。下面应用示例程序。注意这不是完整的程序,若要直接使用则需要加上变量和常量定义,并根据所用的编译器写中断响应函数。/ - 中断程序 DoKeyScan = 1; / - 键盘扫描及去抖程序void KeyScan(void)/ - 扫描键盘,获得扫描码 / - 去抖处理if(KScanBuf = NoKey) | (KScanBuf != KScan) KScan = KScanBuf;KCount = 0;else if(KCount = KD_val) return;/ 避免重复KCount+;If(KCount = KD_val) KReady = 1;/ - 主程序intmain( )/ - 初始化KReady = 0;KCount = 0; while ( 1 ) if (DoKeyScan = 1) / - 作键盘扫描去抖DoKeyScan = 0;KeyScan( );if (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘数学科目极限试题及参考答案
- 浙江省杭州市萧山区万向中学2027届九年级化学第一学期期中考试试题含解析
- 2026年度医院中医科工作总结和2026年工作计划
- 医院口腔科2026年度工作总结及2026年工作计划
- 农林专业果林相关试题及准确答案
- (新)承包经营合同范本
- 广东省惠州市惠阳区2027届九年级化学第一学期期中达标测试试题含解析
- 消防测试题及答案可直接复制
- 广西崇左市宁明县2027届化学九年级第一学期期末考试模拟试题含解析
- 山西省运城市2027届九年级化学第一学期期末学业质量监测试题含解析
- 外研版(三起)(2024)小学三年级上册英语Unit 2《My school things》教案
- 电子产品组装工艺流程手册
- DB4203∕T 239-2024 黄精九蒸九晒加工技术规程
- 《大数据导论》电子教学课件
- 网店客服管理-售前客户服务-课件-
- (高清版)AQ 2004-2005 地质勘探安全规程
- DL∕T 1576-2016 6kV~35kV电缆振荡波局部放电测试方法
- 女病人导尿术操作及评分标准
- 《肺部感染的护理课件》
- 风湿免疫疾病的心理应激与心理干预
- 压力容器制造评审记录
评论
0/150
提交评论