《s5-4键盘管理与程序设计》.pptVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
s5-4键盘管理与程序设计 按键的分类 按结构和使用方法的不同,可将按键分为两大类:独立按键和矩阵键盘。 矩阵键盘 独立按键 直接用I/O控制,每个按键独占一个I/O 特点 由行线和列线组成,按键位于交叉点上 互不影响,配置灵活,结构简单 优点 组合灵活,按键数量较多时,节省I/O 按键多时,I/O口浪费严重 缺点 区分和判断按键动作的方法比较复杂 按键不超过8只时 适用场合 按键数量较多时 目 录 独立键盘与消抖 矩阵键盘与扫描方法 逐行逐列扫描法 S1 Vcc P0.7 R1 10K S2 P2.3 (a) (b) 独立按键的常用接法 80C51单片机的两种常见的独立按键接法: I/O口为开漏结构时,需外接上拉电阻,如51的P0口 I/O内部自带弱上拉电阻时,可直接相连,如51的P1、P2、P3口 +E 0V 未按下时 为高电平 刚释放时 出现抖动 刚按下时 出现抖动 按下稳定 后为低电平 实际效果 窄脉冲干扰 刚释放时 出现抖动 按键的“抖动”现象 按键的结构:和电路图中的符号极为相似,它是靠镀银的铜合金簧片在按键柄的挤压下接触而导通,松开后簧片恢复原状而脱离接触断开。 S1 Vcc P0.7 R1 10K “0” “1” 理想效果 按键的抖动:按键在人手指按压/释放簧片的瞬间,因接触不良而产生的反复跳动现象。 “抖动”的脉冲宽度一般在几十到几百微秒,也可能达到毫秒级,若加在运行速度很快的数字电路中将会产生很大的影响。比如将发生“抖动”现象的按键作为数字电路的时钟输入,则每按一次键都会产生一串极不稳定的脉冲。 abcdefgh com1 com2 com3 com4 按键的“抖动”测试原理 编程思路:用按键模拟计数输入信号,用4位LED数码管显示计数值。 实验现象:在理想效果下,每按一次键,I/O口仅检测到1次高/低电平转换,计数加1;在实际效果中,由于“抖动”存在,每按一次键, I/O口检测到多次电平转换,计数好几次。 S Vcc P3.4 R 10K abcdefgh com1 com2 com3 com4 理想效果: 实际效果: 按键的“抖动”测试程序 存放4位计数值 0x7A 0x7B 地址 数据 0x7C 0x7D 0x7E 0x7F 存放将计数值转换成数码管显示的字符码 0x7C 0x7D 0x7E 0x7F ORG 0000H Start: MOV 0x7A,#0x00 ;计数器高2位寄存器0x7A清0 MOV 0x7B,#0x00 ;计数器低2位寄存器0x7B清0 LD_Data: MOV R0,#0x7C ;取显示缓冲区首地址到指针R0 MOV A,0x7A ;取计数器高2位数据 ACALL Split_Display_Byte ;将数据字符送显示缓冲区前2个单元 MOV A,0x7B ;取计数器低2位数据 ACALL Split_Display_Byte ;将数据字符送显示缓冲区后2个单元 0x00 0x00 高4位转换的字符码 低4位转换的字符码 0xC0 0xC0 0xC0 0xC0 Display_Loop: ACALL Scan_Display_Value;调用显示扫描子程序 JB P3.4, Display_Loop ;P3.4是否为0?键未按下,转Display_Loop MOV A, #0x01 ;A取加数1 ADD A, 0x7B ;计数器+1 DA A ;10进制修正指令 MOV 0x7B,A ;回存低2位的运算结果到0x7B CLR A ;清0累加器A ADDC A,0x7A ;带进位加法加计数器高2位数据 DA A MOV 0x7A,A ;回存高2位的运算结果到0x7A JNB P3.4, $ ;检查按键是否松开,P3.4=1 本地循环 AJMP LD_Data ;按键松开,转LD_Data abcdefgh com1 com2 com3 com4 数码管显示: 判断是否有按键按下 0x01 按键的“抖动”测试程序流程图 数码管显示计数 流程图 P3.4=0? N 计数器清0 计数值转换成字符码 计数器+1,调整10进制数 P3.4=1? N Y Y +E K R 1 10K Y +E

文档评论(0)

suxiaojuan1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档