190 likes | 370 Views
第五讲 键盘及接口. 一、键盘工作原理. 键盘接口要解决的问题. ---- 扫描 (判断哪个键按下)、 去抖动 、判断按键是否抬起(以防止重复进行键处理)。. 键按下. 键释放. 闭合稳定. 前沿抖动. 后沿抖动. ★ 请思考 : 什么是键抖动?为什么键盘要考虑去抖动?一般常用哪两种去抖动的方法?. 二 . 独立式键盘工作原理. 原理 ---- 当任何一个键被按下时,与其相连的输入线被置成 “ 0 ” ,平时该线为 “ 1 ” 。. 键处理程序 (查询方式). ORG 2000H.
E N D
第五讲 键盘及接口 模块四:单片机接口技术——键盘技术
一、键盘工作原理 键盘接口要解决的问题 ----扫描(判断哪个键按下)、去抖动、判断按键是否抬起(以防止重复进行键处理)。 键按下 键释放 闭合稳定 前沿抖动 后沿抖动 模块四:单片机接口技术——键盘技术
★请思考:什么是键抖动?为什么键盘要考虑去抖动?一般常用哪两种去抖动的方法?★请思考:什么是键抖动?为什么键盘要考虑去抖动?一般常用哪两种去抖动的方法? 二.独立式键盘工作原理 模块四:单片机接口技术——键盘技术
原理----当任何一个键被按下时,与其相连的输入线被置成 “0”,平时该线为“1”。 键处理程序(查询方式) ORG 2000H START:MOV A ,#0FFH ;先置P1口为“1” MOV P1,A MOV A,P1 ;输入键状态 JNB ACC.0, P0F ;查询0号键 JNB ACC.1, P1F ;查询1号键 键盘扫描 JNB ACC.2, P2F ;查询2号键 JNB ACC.3, P3F ;查询3号键 JNB ACC.4, P4F ;查询4号键 JNB ACC.5, P5F ;查询5号键 JNB ACC.6, P6F ;查询6号键 JNB ACC.7, P7F ;查询7号键 LJMP START 模块四:单片机接口技术——键盘技术
P0F:LJMP PROM0 ;入口地址表 P1F:LJMP PROM1 …… P6F:LJMP PROM6 P7F:LJMP PROM7 PROM0:………………….. ;0号键功能程序 ………………….. LJMP START ;0号键处理完返回键盘扫描 . . . . PROM7:………………….. ;7号键功能程序 ………………….. LJMP START ;7号键处理完返回键盘扫描 模块四:单片机接口技术——键盘技术
三.行列式键盘工作原理 +5V 5.1KΩ╳4 X3 X2 X1 X0 Y3 Y2 Y1 Y0 I/O接口 特点:节省I/O口线 模块四:单片机接口技术——键盘技术
(1)过程:先判断有无键按下 列线输出0000,然后输入行线状态, 若没有键按下,则行线状态为全1( 1111 ); 若有任一键按下,则行线状态不为全(1111); 再确认哪个键被按下 列线逐行输出0(如1110),然后输入行线状态, 若没有键按下,则行线状态为全1( 1111 ); 若有任一键按下,则行线状态不为全为1(如0111,说明右上角那个键被按下) 确定每个键的键值 键号=所在行号*键盘列数+所在列号 模块四:单片机接口技术——键盘技术
(2)键盘扫描的控制方式 程序控制扫描方式----连续扫描 定时控制扫描方式----定时扫描 中断控制扫描方式----中断后扫描 模块四:单片机接口技术——键盘技术
PA7 PA6 . . . . . PA0 PC0 PC1 PC2 PC3 CE P2.7 IO/M P2.0 WR WR RD RD +5V ALE ALE 5.1KΩ╳4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P0 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 8031 8155 程序控制扫描方式—以8155扩展I/O口组成的行列式键盘为例 8155 PA口地址7F01H PC口地址7F03H 8155扩展I/O口组成的行列式键盘 模块四:单片机接口技术——键盘技术
8155:PA口输出列扫描信号 PC口输入行状态信号 ⅰ.判断有无键按下 PA口输出00H PC口输入行状态信号,若PC3~PC0≠1111,有键按下 ⅱ.去抖动 延时5~10ms后再判断有无键按下 ⅲ.再确认哪个键被按下及其键号 8155的PA口依次输出下列扫描字: PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 1 1 1 1 1 1 1 0 FEH 1 1 1 1 1 1 0 1 FDH …… 0 1 1 1 1 1 1 1 7FH 模块四:单片机接口技术——键盘技术
8155的PC口输入行状态,可能为下列之一: PC5 PC4 PC3 PC2 PC1 PC0 ╳╳ 1 1 1 0 ╳EH ╳╳ 1 1 0 1 ╳DH ╳╳ 1 0 1 1 ╳BH ╳╳ 0 1 1 1 ╳7H 则每个键的键值(列行组合) FE ╳ E 、FD ╳ E 、 FB╳ E 、 F7╳ E 、EF ╳ E、DE ╳ E、BF ╳ E、 7F╳ E FE ╳ D 、FD ╳ D 、 FB╳ D 、 F7╳ D 、EF ╳ D、DE ╳ D、BF ╳ D、 7F╳ D FE ╳ B 、FD ╳ B 、 FB╳ B 、 F7╳ B 、EF ╳ B、DE ╳ B、BF ╳ B、 7F╳ B FE ╳ 7 、 FD ╳ 7 、 FB╳ 7 、 F7╳ 7、 EF ╳ 7、 DE ╳ 7、 BF ╳ 7、 7F╳ 7 每个键的键号(自己安排) N=行首键号+列号 模块四:单片机接口技术——键盘技术
ⅳ.判断按键是否抬起(以防止重复进行键处理)ⅳ.判断按键是否抬起(以防止重复进行键处理) 等待键释放后再进行进一步处理。 入口 ① 键扫描程序框图 Y 有键按下? 键号入栈保存 N N 按键抬起? Y 延时12ms 键号送A N 有键按下? 返回 Y ① 模块四:单片机接口技术——键盘技术
Ⅴ.键操作及功能处理 求出键号后要进行键处理: 先判断是何种键,然后: 对数字键----送显示缓冲区显示; 对功能键----执行相应的功能键处理程序。 模块四:单片机接口技术——键盘技术
【例1】80C51直接扫描矩阵键盘 模块四:单片机接口技术——键盘技术
SMKEY:MOV P1,#0FH ;置P1口高4位为“0”、低4位为输入状态 MOV A,P1 ;读P1口 ANL A,#0FH ;屏蔽高4位 CJNE A,#0FH,HKEY ;有键按下,转HKEY SJMP SMKEY ;无键按下转回 HKEY:LCALL DELAY10 ;延时10ms,去抖 MOV A,P1 ; ANL A,#0FH ; CJNE A,#0FH,WKEY ;确认有键按下,转判哪一键按下 SJMP SMKEY ; 是抖动转回 WKEY:MOV R2,#00H ;R2中存放列值 MOV P1,#1110 1111B ;置扫描码,检测P1.4列 MOV A,P1 ; ANL A,#0FH ; CJNE A,#0FH,PKEY ;P1.4列(Y0)有键按下,转键处理 模块四:单片机接口技术——键盘技术
INC R2 ;列值加一 MOV P1,#1101 1111B ;置扫描码,检测P1.5列 MOV A,P1 ANL A,#0FH CJNE A,#0FH,PKEY ;P1.5列(Y1)有键按下,转键处理 INC R2 ;列值加一 MOV P1,#1011 1111B ;置扫描码,检测P1.6列 MOV A,P1 ANL A,#0FH CJNE A,#0FH,PKEY ;P1.6列(Y2)有键按下,转键处理 INC R2 ;列值加一 MOV P1,#0111 1111B ;置扫描,检测P1.7列 MOV A,P1 ANL A,#0FH CJNE A,#0FH,PKEY ;P1.7列(Y3)有键按下,转键处理 LJMP SMKEY 模块四:单片机接口技术——键盘技术
PKEY:CJNE A,#0EH,LOOP1 MOV R3,#00H ;R3中存放行值 LOOP1:CJNE A,#0DH,LOOP2 MOV R3,#01H LOOP2:CJNE A,#0BH,LOOP3 MOV R3,#02H LOOP3:MOV R3,#03H MOV A,R3 MOV B,#04H ADD A,R2 MOV R7,A ;键号存放在R7中 模块四:单片机接口技术——键盘技术
设上图中,0~15号键为数字键,即键号<10H的是数字键;16~31号键为功能键,即键号≥10H的是功能键,其功能键处理程序入口地址分别为:AAA、BBB、CCC、……PPP。设上图中,0~15号键为数字键,即键号<10H的是数字键;16~31号键为功能键,即键号≥10H的是功能键,其功能键处理程序入口地址分别为:AAA、BBB、CCC、……PPP。 则转入功能键处理程序清单如下: ORG 8000H KEYADR:MOV A ,BUFF ;键号送A CLR C SUBB A,#10H ;Y与10H比较 JC DIGPRO ;<10H,数字键,转 模块四:单片机接口技术——键盘技术
KEYTBL:MOV DPTR,#JMPTBL RL A ;使键值为0、2、4、6、…偶数 AJMP @A+DPTR JMPTBL:AJMP AAA ;2 字节指令散转到16个功能键处理 AJMP BBB ; 程序入口 AJMP CCC AJMP DDD AJMP EEE AJMP FFF AJMP GGG AJMP HHH AJMP III AJMP JJJ AJMP KKK AJMP LLL AJMP MMM AJMP NNN AJMP OOO AJMP PPP 模块四:单片机接口技术——键盘技术