收藏 分享(赏)

第5章 MCS-51单片机外部并行口扩展技术-5.4.2 键盘接口工作原理.ppt

上传人:fcgy86390 文档编号:5585626 上传时间:2019-03-09 格式:PPT 页数:28 大小:515KB
下载 相关 举报
第5章 MCS-51单片机外部并行口扩展技术-5.4.2 键盘接口工作原理.ppt_第1页
第1页 / 共28页
第5章 MCS-51单片机外部并行口扩展技术-5.4.2 键盘接口工作原理.ppt_第2页
第2页 / 共28页
第5章 MCS-51单片机外部并行口扩展技术-5.4.2 键盘接口工作原理.ppt_第3页
第3页 / 共28页
第5章 MCS-51单片机外部并行口扩展技术-5.4.2 键盘接口工作原理.ppt_第4页
第4页 / 共28页
第5章 MCS-51单片机外部并行口扩展技术-5.4.2 键盘接口工作原理.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、第5章 MCS-51单片机外部 并行口扩展技术,5.4.2 键盘接口工作原理,5.4.2 键盘接口工作原理,键盘 人机交互的一个重要工具 两种基本类型 编码键盘 除了按键以外,还包括产生键码的硬件电路 使用方便、价格较高 非编码键盘 靠软件来识别键盘上的闭合键,由此计算出编码 几乎不需要附加硬件逻辑 在单片机应用系统中被普遍使用,1. 非编码键盘的工作原理,分类 硬件编码式键盘、二维直读式键盘 独立式键盘简单键盘、行列式键盘(矩阵式键盘),独立式按键 行列式键盘,0 1 1 1,1 0 1 1,1 1 0 1,1 1 1 0,2. 按键开关去抖动问题,按键抖动 在按下和释放时,按键有抖动 按键

2、时间:100ms 前跳沿和后跳沿:20ms,抖动时间一般为510ms,A,为确保:对键的一次闭合仅作一次处理 必须:去除抖动,3. 消除抖动不良后果的方法, 硬件去抖动RC滤波电路去抖动电路简单实用,效果较好。 软件去抖动 检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。,键处理的流程图,4. 独立式按键,处理过程 查键:扫描有否键按下,若无键按下,返回 有键按下软件去抖:延时20ms 找键 等键释放 软件去抖:延时20ms,例1,有键按下,返回键值;否则,返回0FFH,;置P1.05为输入态,JNC KE4 ;Cy=0,转INC BSJMP KE3KE4: O

3、RL P1,#3FHMOV A,P1ANL A,#3FHCJNE A,#3FH,KE4LCALL DL20 ;延时去抖ORL P1,#3FHMOV A,P1ANL A,#3FHCJNE A,#3FH,KE4MOV A,B ;返回键值CJNE A,#06H,KE5 KE5: JC KE6 ;Cy=1,(A)=6 KE6: RET,KE: ORL P1,#3FH MOV A,P1ANL A,#3FH ;P1.0P1.5CJNE A,#3FH,KE1SJMP KE7 ;无键按下KE1: LCALL DL20 ;延时去抖ORL P1,#3FH ;修改P1MOV A,P1 ;读P1ANL A,#3FHC

4、JNE A,#3FH,KE2SJMP KE7 ;误动作返回KE2: MOV B,#0 ;保存键值0 KE3: ANL A,#3FHRRC A ;(A.0)Cy,5. 矩阵式键盘,工作方式 查询 定时 每隔一段时间对键盘扫描一次 利用单片机内部的定时器的定时器溢出中断。 中断,中断方式,处理过程 键扫描 确认有无按键按下 去抖动 延时 按键的识别:确定键的行、列号 扫描算法、线反转法 键号的确定 键号=所在行号键盘列数+所在列号 等待键释放,扫描算法: 逐行置低电平,其余各行为高电平,检查各列电平的变化,如果某列线电平为低电平,即可确定此行列线交叉点处的按键被按下。 交换行列线的输出读取关系也可

5、以实现。 线反转法: 首先,将行线编程为输入线,列线编程为输出线,然后使列线线全输出低电平,读取行线电平,行线从高电平转为低电平的行线为按下按键所在行; 然后,将列线编程为输入线,行线编程为输出线,然后使行线全输出低电平,读取列线电平,列线从高电平转为低电平的列线为按下按键所在列。,例1 扫描算法,用8255A作单片机键盘接口, A口为输出口接键盘列线。C口为输入口接键盘的4条行线,8255A地址 A口:7FFCH B口:7FFDHC口:7FFEH 控制寄存器:7FFFH,子程序 KSI :判定有无闭合键的,KSI: MOV DPTR, #7FFCH ;A口地址MOV A, #00HMOVX

6、DPTR, A ;A口送00HINC DPTRINC DPTR ;C口地址MOVX A, DPTR ;读C口CPL A ANL A, #0FH ;屏蔽高四位RET,0 0 0 0 0 0 0 0,有闭合键,则(A)0 无闭合, 则(A)=0,1 1 1 1,KEY1: ACALL KSI ;检查是否有键闭合JNZ LK1 ;A非“0”则转移ACALL DIR ;显示一次LED(“延时6ms”)AJMP KEY1 LK1: ACALL DIR ;有键闭合二次延时ACALL DIR ;共12ms去抖动ACALL KSI ;再检查是否有键闭合JNZ LK2 ;有键闭合转移到LK2ACALL DIRA

7、JMP KEY1 ;无键闭合,延时6ms后转KEY1,有闭合键,则(A)0 无闭合, 则(A)=0,LK2: CLR F0 ;有键标志MOV R2, #0FEH ;扫描初值送R2MOV R4, #00H ;扫描列号送R4 LK4: MOV DPTR, # 7FFCH ;A口地址MOV A, R2MOVX DPTR, A ;扫描初值送A口INC DPTRINC DPTR ;C口地址MOVX A, DPTR ;读C口,有闭合键,则(A)0 无闭合, 则(A)=0,0 1 1 1 1 1 1 1,KEY1: ACALL KSI ;检查是否有键闭合JNZ LK1 ;A非“0”则转移ACALL DIR

8、;显示一次LED(“延时6ms”)AJMP KEY1 LK1: ACALL DIR ;有键闭合二次延时ACALL DIR ;共12ms去抖动ACALL KSI ;再检查是否有键闭合JNZ LK2 ;有键闭合转移到LK2ACALL DIRAJMP KEY1 ;无键闭合,延时6ms后转KEY1 LK2: MOV R2, #0FEH ;扫描初值送R2MOV R4, #00H ;扫描列号送R4 LK4: MOV DPTR, # 7FFCH ;A口地址MOV A, R2MOVX DPTR, A ;扫描初值送A口INC DPTRINC DPTR ;C口地址MOVX A, DPTR ;读C口,有闭合键,则(

9、A)0 无闭合, 则(A)=0,0 1 1 1 1 1 1 1,全程序,JB ACC.0, LONE ;ACC.0=1,第0行无键闭合,转LONEMOV A, #00H ;装第0行值AJMP LKP LONE: JB ACC.1, LTWO ;ACC.1=1,第1行无键闭合,转LTWOMOV A, #08H ;装第1行值AJMP LKP LTWO: JB ACC.2, LTHR ;ACC.2=1,第2行无键闭合,转LTHRMOV A, #10H ;装第2行值AJMP LKP LTHR: JB ACC.3, NEXT ;ACC.3=1,第3行无键闭合,转NEXT MOV A, #18H ;装第3

10、行值 LKP: ADD A, R4 ;计算键码PUSH ACC ;保护键码 LK3: ACALL DIR ;延时6msACALL KSI ;检查是否继续闭合,若闭合再延时JNZ LK3POP ACC ;若键起,则键码送ARET,扫描列号:R4,NEXT: INC R4 ;扫描列号加1MOV A, R2JNB ACC.7, KND ;若第7位=0,已扫完最高列则转KNDRL AMOV R2, AAJMP LK4 ;进行下一列扫描KND: SETB F0 ;无键标志RET ;扫描完毕,扫描列号:R4,例2 线反转法,KEY: MOV P1, #0F0H ;行线置低电平,列线置输入态 KEY0: M

11、OV A, P1 ;读列线数据CPL A ;数据取反,“1”有效ANL A, #0F0H ;屏蔽行线,保留列线数据MOV R1, A ;存列线数据(R1高4位)JZ GRET ;全0,无键按下,返回 KEY1: MOV P1, #0FH ;行线置输入态,列线置低电平MOV A, P1 ;读行线数据 CPL A ;数据取反,“1”有效ANL A, #0FH ;屏蔽列线,保留行线数据MOV R2, A ;存行线数据(R2低4位)JZ GRET ;全0,无键按下,返回JBC F0, WAIT ;已有消抖标志,转SETB F0 ;无消抖标志,置消抖标志 LCALL DY10ms ;调用10ms延时子程

12、序消抖SJMP KEY0 ;重读行线列线数据 GRET: RET,参考程序:,WAIT: MOV A, P1 ;等待按键释放CPL A ANL A, #0FHJNZ WAIT ;按键未释放,继续等待 KEY2: MOV A, R1 ;取列线数据(高4位)MOV R1, #03H ;取列线编号初值MOV R3, #03H ;置循环数CLR C KEY3: RLC A ;依次左移入C中JC KEY4 ;C=1,该列有键按下,(列线编号存R1)DEC R1 ;C=0,无键按下,修正列编号DJNZ R3, KEY3 ;判循环结束否?未结束继续寻找有键按下的列线 KEY4: MOV A, R2 ;取行线

13、数据(低4位)MOV R2, #00H ;置行线编号初值MOV R3, #03H ;置循环数CLR C KEY5: RRC A ;依次右移入C中JC KEY6 ;C=1,该行有键按下,(行线编号存R2)INC R2 ;C=0,无键按下,修正行线编号DJNZ R3, KEY5 ;判循环结束否?未结束继续寻找有键按下的行线,KEY6: MOV A, R2 ;取行线编号CLR C RLC A ;行编号2RLC A ;行编号4ADD A, R1 ;行编号4+列编号=按键编号KEY7: CLR C RLC A ;按键编号2RLC A ;按键编号4(LCALL+ RET共4字节)MOV DPTR, #TABJ JMP A+DPTR ;散转,执行相应键功能子程序TABJ: LCALL WORK0 ;调用执行0#键功能子程序RET LCALL WORK1 ;调用执行1#键功能子程序RET LCALL WORK15 ;调用执行15#键功能子程序RET,键盘/显示一体 8255接口图,小结,键盘接口工作原理 相应的程序设计方法,实验:键盘扫描显示,74LS245,双向总线收发器,74LS273,地址锁存器,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑环境 > 建筑资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报