1 / 22

一、 键输入过程与软件结构

一、 键输入过程与软件结构. 图 9.1 MCS – 51 单片机键输入过程. 键按下. 键稳定. 前沿抖动. 前沿抖动. 图 9.2 键合断时的电压抖动. 二、 键盘接口和键输入软件中应解决的几个问题 1 .消除键抖动. 2 .键编码及键值. 顺序排列键编码--如图 9.3 所示。这种方法,键值的形成要根据 I/O 线的状态作相应处理。键码可按下式形成: 键码 = 行首键码 + 列号. 0 列 1 列 2 列 3 列. +5V. 0 行 1 行 2 行 3 行. 图 9.3 行列式键盘的编码与键值. 顺序排列编码.

liliha
Download Presentation

一、 键输入过程与软件结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 一、 键输入过程与软件结构 图9.1 MCS–51单片机键输入过程

  2. 键按下 键稳定 前沿抖动 前沿抖动 图9.2 键合断时的电压抖动 二、 键盘接口和键输入软件中应解决的几个问题 1.消除键抖动

  3. 2.键编码及键值 顺序排列键编码--如图9.3所示。这种方法,键值的形成要根据I/O线的状态作相应处理。键码可按下式形成: 键码=行首键码+列号

  4. 0列1列 2列3列 +5V 0行 1行 2行 3行 图9.3 行列式键盘的编码与键值 顺序排列编码

  5. 3.键盘的监测方法 对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。

  6. 三、 独立式按键 1.独立式按键接口结构 图9.4 独立式按键的接口电路示意图 (a) 中断方式;(b) 查询方式

  7. 2.独立式按键的软件结构 下面是查询方式的键盘程序。K0~K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0~PROM7分别为每个按键的功能程序。设I/O为P1口。 START:MOV A,#0FFH ; MOV P1,A ;置P1口为输入状态 MOV A,P1 ;键状态输入 JNB ACC.0,K0 ;检测0号键是否按下,按下转 JNB ACC.1,K1 ;检测1号键是否按下,按下转

  8. JNB ACC.2,K2 ;检测2号键是否按下,按下转 JNB ACC.3,K3 ;检测3号键是否按下,按下转 JNB ACC.4,K4 ;检测4号键是否按下,按下转 JNB ACC.5,K5 ;检测5号键是否按下,按下转 JNB ACC.6,K6 ;检测6号键是否按下,按下转 JNB ACC.7,K7 ;检测7号键是否按下,按下转 JMP START ;无键按下返回,再顺次检测 K0:AJMP PROM0 K1:AJMP PROM1 K7:AJIMP PROM7 ;入口地址表 …

  9. PROM0:……………………… ;0号键功能程序 ……………………… JMP START ;0号键功能程序执行完返回 PROM1:……………………… ;0号键功能程序 ……………………… JMP START ;1号键功能程序执行完返回 ……………………… ;7号键功能程序 PROM7: ……………………… JMP START ;7号键功能程序执行完返回 …

  10. 0列1列 2列3列 +5V 0行 1行 2行 3行 图9.5键盘的组成 四、行列式(矩阵)键盘(省I/O口) 行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如4×4的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。

  11. 1.行列式键盘的接口 行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用一种可编程的键盘、显示接口芯片8279进行接口等。 其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比较常用(实验箱8255)。 2.原理 按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5 V,被箝位在高电平状态。

  12. 2.键盘工作方式 编程扫描和中断扫描

  13. 8255 PA7 … … +5V PA1 PA0 PB0 PB1 … … PB7 …… +5V 图9.6 8×8键盘连接 1)编程扫描方式 CPU在完成其它工作的空余来响应键输入要求。

  14. 键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为"1"。键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为"1"。 键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出"0",置对应的列线为低电平,然后从PC口读入行线状态,如果全为"1",则所按下之键不在此列;如果不全为"1",则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。 求取键码

  15. +5V & INT1 80C51 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 图9.7中断连接方式 2)中断扫描方式

  16. 中断工作方式: 提高CPU的效率,可采用中断工作方式。 这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。

  17. KEY 有键闭合吗? 调用延时 子程序6ms N Y 二次调用延时子程序12ms 有键闭合吗? N Y 判断闭合键键码 闭合键释放吗? N Y 转键码处理 返回 图9.8软件消除抖动和识别键码流程图 3.键盘接口举例:

  18. 键盘扫描子程序如下: KEY1:ACALL KS1 ;调用判断有无键按下子程序 JNZ LK1 ;有键按下时,(A)≠ 0转消抖延时 AJMP KEY1 ;无键按下返回 LK1:ACALL TM12S ;调12 ms延时子程序 ACALL KS1 ;查有无键按下,若有则真有键按下 JNZ LK2 ;键(A)≠ 0逐列扫描 AJMP KEY1 ;不是真有键按下,返回 LK2;MOV R2,#0FEH ;初始列扫描字(0列)送入R2 MOV R4,#00H ;初始列(0列)号送入R4

  19. LK4:MOV DPTR,#7F01H ;DPTR指向8155PA口 MOV A,R2 ;列扫描字送至8155PA口 MOVX @DPTR,A INC DPTR ;DPTR指向8155PC口 INC DPTR MOVX A,@DPTR ;从8155 PC口读入行状态 JB ACC.0,LONE ;查第0行无键按下,转查第1行 MOV A,#00H ;第0行有键按下,行首键码#00H→A AJMP LKP ;转求键码 LONE:JB ACC.1,LTWO ;查第1行无键按下,转查第2行 MOV A,#08H ;第1行有键按下,行首键码#08H→A AJMP LKP ;转求键码

  20. LTWO:JB ACC.2,LTHR ;查第2行无键按下,转查第3行 MOV A,#10H ;第2行有键按下,行首键码#10H→A AJMP LKP ;转求键码 LTHR:JB ACC.3,NEXT ;查第3行无键按下,转该查下一列 MOV A,#18H ;第3行有键按下,行首键码#18H→A LKP:ADD A,R4 ;求键码,键码=行首键码+列号 PUSH ACC ;键码进栈保护 LK3:ACALL KS1 ;等待键释放 JNZ LK3 ;键未释放,等待 POP ACC ;键释放,键码→A RET ;键扫描结束,出口状态(A)=键码

  21. NEXT:INC R4 ;准备扫描下一列,列号加1 MOV A,R2 ;取列号送累加器A JNB ACC.7,KEND ;判断8列扫描否?扫描完返回 RL A ;扫描字左移一位,变为下一列扫描字 MOV R2,A ;扫描字送入R2 AJMP LK4 ;转下一列扫描 KEND:AJMP KEY1 KS1:MOV DPTR,#7F01H ;DPTR指向8155PA口 MOV A,#00H ;全扫描字→A MOVX @DPTR,A ;全扫描字送往8155PA口

  22. INC DPTR ;DPTR指向8155PC口 • INC DPTR • MOVX A,@DPTR ;读入PC口行状态 • CPL A ;变正逻辑,以高电平表示有键按下 • ANL A,#0FH ;屏蔽高4位,只保留低4位行线值 • RET ;出口状态:(A)≠0时有键按下 • TM12ms:MOV R7,#18H ;延时12 ms子程序 • TM: MOV R6,#0FFH • TM6 : DJNZ R6,TM6 • DJNZ R7,TM • RET

More Related