微机原理键盘、LED.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理键盘、LED

第10章 并行接口 微机原理及接口技术 8.3 并行接口 教学重点 8255A的工作方式和编程 8255A的应用 简易键盘的扫描程序 LED数码管的多位显示 8.3 键盘及其接口(补充) 键盘是微机系统最常使用的输入设备 小键盘:适用于单板机或以微处理器为基础的仪器,实现数据、地址、命令及指令等的输入 独立键盘:通过5芯电缆与PC微机主机连接 1 简易键盘的工作原理 矩阵结构键盘的工作原理 1.扫描法 先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合(通过检查列线电位实现) 此后,再将第1行接地,然后检测列线是否有变为低电位的线。如此往下一行一行地扫描,直到最后一行 在扫描过程中,当发现某一行有键闭合时,便在扫描中途退出 通过组合行线和列线可识别此刻按下的是哪一键 键盘扫描程序第1段:判断是否有键按下 key1: mov al,00 mov dx,rowport out dx,al ;使所有行线为低电平 mov dx,colport in al,dx ;读取列值 cmp al,0ffh jz key1 ;无闭合键,循环等待 call delay ;有闭合键 ;延迟20ms清除抖动 键盘扫描程序第2段:识别按键(扫描) mov cx,8 ;行数送CX mov ah,0feh ;扫描初值送AH key2: mov al,ah mov dx,rowport out dx,al ;输出行值(扫描值) mov dx,colport in al,dx ;读进列值 键盘扫描程序第2段:识别按键(判断) cmp al,0ffh ;判断有无低电平的列线 jnz key3 ;有,则转下一步处理 rol ah,1 ;无,则移位扫描值 loop key2 ;准备下一行扫描 jmp key1 ;所有行都没有键按下,则返回继续检测 key3: …… ;此时,al=列值,ah=行值 2.反转法 首先,将行线作为控制线接一个输出端口,将列线作为检测线接一个输入端口 CPU通过输出端口将行线(控制线)全部设置为低电平,然后从输入端口读取列线(检测线) 然后,将行线和列线的作用互换,即将列线作为控制线接输出端口,行线作为检测线接输入端口 将刚才读得的列值从列线所接端口输出,再读取行线的输入值 这样,当一个键被按下时,必定可以读得一对唯一的行值和列值 键盘扫描程序第2段:识别按键(读取列值) …… ;设置行线接输出端口,列线接输入端口 key2: mov al,00 mov dx,rowport out dx,al ;设置行线全为低 mov dx,colport in al,dx ;读取列值 cmp al,0ffh jz key2 ;无闭合键,循环等待 push ax ;有闭合键,保存列值 push ax 键盘扫描程序第2段:识别按键(读取行值) …… ;设置行线接输入端口,列线接输出端 mov dx,colport pop ax out dx,al ;输出列值 mov dx,rowport in al,dx ;读取行值 pop bx ;组合行列值 mov ah,bl ;此时,al=行值,ah=列值 键盘扫描程序:行列值表和键代码表 ;键盘的行列值表 table dw 0fefeh ;键0的行列值(键值) dw 0fdfeh ;键1的行列值 dw 0fbfeh ;键2的行列值 …… ;其他键的行列值 ;键盘的键代码表 char db …… ;键0的代码值 db …… ;键1的代码值 …… ;其他键的代码值 键盘扫描程序第3段:查找键代码 mov si,offset table mov di,offset char mov cx,64 ;CX=键的个数 key3: cmp ax,[si] ;与键值比较 jz key4 ;相同,说明查到 inc si ;不相同,继续比较 inc si inc di loop key3 jmp key1 ;全部比较完,仍无相同,说明是重键 键盘扫描程序第4段:等待按键释放 key4: mov al,[di] ;获取键代码送AL …… ;判断按键是否释放,没有则等待 call delay ;按键释放,延时消除抖动 …… ;后续处理 3.抖动和重健问题 机械按键存在抖动现象 当按下或释放一个键时,往往会出现按键在闭合位置和断开位置之间跳几下才稳定到闭合状态 抖动的持续时间通常不大于10ms 采用硬件消抖电路或软件延时方法解决 重键指两个或多个键同时闭合 出现重键时,读取的键值必然出现一个以上的0 是否给予识别和识别哪一个键 重健问题的处理 简单情况:不予识别,认为是错误的

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档