- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P.168
b. 线反转法
采用线反转法的键盘行线、 列线端口各自应当可以在输 入与输出方式间切换! 如图:高四位与低四位均可 独立改变其输入或输出方式
实验板4×4键盘 实验板 × 键盘 连接82C55的端口线 连接 的端口线 PC3 PC2 PC1 PC0 PC4 PC5 PC6 PC7
图10-10线反转法原理图 10-10线反转法原理图 第1步:列线输出为全‘0’ ,随后输入行线电平如有‘0’,则 线输出为全‘ 随后输入行线电平如有‘ , 所在的行就是闭合的按键所在行; 则无键闭合。 ‘0’所在的行就是闭合的按键所在行;无‘0’则无键闭合。 所在的行就是闭合的按键所在行 则无键闭合 随后输入列线电平如有‘ , 第2步:行线输出为全‘0’ ,随后输入列线电平如有‘0’,则 线输出为全‘ 则无键闭合。 所在的列就是闭合的按键所在列; 则无键闭合 ‘0’所在的列就是闭合的按键所在列;无‘0’则无键闭合。 所在的列就是闭合的按键所在列 结合上述两步,可确定按键所在行和列。 结合上述两步,可确定按键所在行和列。
键盘扫描子程序---3 TEST2011.ASM 键盘扫描子程序--3 KN:MOV MOV MUL MOV JMP A,61H B,#05H AB DPTR,#K0 DPTR,#K0 @A+DPTR ;根据查表获得的键号00H~0FH之一转向相应处理程序 根据查表获得的键号00H~0FH之一转向相应处理程序 00H ;转移表中每个键号处理程序占 转移表中每个键号处理程序占5 ;转移表中每个键号处理程序占5个地址单元
键盘扫描子程序---1 TEST2011.ASM 键盘扫描子程序--1 KEY:MOV 键盘扫描子程序(反转法) KEY:MOV A,#81H ;键盘扫描子程序(反转法) MOV DPTR,#0FEFFH ;C口先初始化为高 位输出驱行线、 口先初始化为高4 MOVX @DPTR,A ;C口先初始化为高4位输出驱行线、低4位输入列线 MOV DPTR,#0FEFEH 键盘行线 行线( 输出驱动全 驱动全'0' MOV A,#00H ;键盘行线(高4位)输出驱动全'0' MOVX @DPTR,A A,@DPTR 输入键盘列线电平 列线电平( 60H单元 MOVX A,@DPTR ;输入键盘列线电平(低4位)存60H单元 MOV 60H,A ;C口改初始化为高 位输入行线、 口改初始化为高4 MOV A,#88H ;C口改初始化为高4位输入行线、低4位输出驱列线 MOV DPTR,#0FEFFH MOVX @DPTR,A MOV DPTR,#0FEFEH 键盘列线 列线( 输出驱动全 驱动全'0' MOV A,#00H ;键盘列线(低4位)输出驱动全'0' MOVX @DPTR,A 行线电平( 输入键盘行线电平 MOVX A,@DPTR ;输入键盘行线电平(高4位)在A中 ANL 60H,#0FH ;列线电平值保留所在的低4位 列线电平值保留所在的低4 行线电平值保留所在的高4 ANL A,#0F0H ;行线电平值保留所在的高4位 ;两次输入的列线电平值 行线电平值组合成 两次输入的列线电平值、 合成8 ORL 60H,A ;两次输入的列线电平值、行线电平值组合成8位行列码
接口技术-键盘接口 接口技术 键盘接口
(1)确定是否有键按下 (2)消抖动:软件延时消抖动 (3)确定哪个键闭合 扫描法 线反转法
下面看例子! 下面看例子!
实验板键盘接口设计实例
P2.0/A8
FEFEH
4X4键盘接口 控制口 FEFFH 4X4键盘接口 方式字: 方式字:89H 初始为输入 =10001001B
;让左边第四位显示'-',键号显示借用了小时的显示位置键盘扫描程序其他功能需求: 功能需求 • 按键闭合动作、释放动作的判别及处理; 按键闭合动作、释放动作的判别及处理; • 按键闭合、释放时的触点抖动消除功能;(如:每10mS扫描 按键闭合、释放时的触点抖动消除功能; 10mS扫描 一次,扫描到按键动作延迟20mS后再确认等) 20mS后再确认等 一次,扫描到按键动作延迟20mS后再确认等)
1.电路结构 电路结构
程序处理方法与开关量输入相同
图10-7独立式键盘工作电路 10-
接口技术-键盘接口 接口技术 键盘接口 一、独立式键盘接口 1.电路结构 续 电路结构-续 电路结构
各个按键相互独 互不影响。 立,互不影响。
每个按键需占用 一根I/O口线 一根 口线
接口技术-键盘接口 接口技术 键盘接口 2.按键状态的输入与消抖动 按键状态的输入与消抖动 消抖动方法: 1硬件消抖动 2软件消抖动:软件延时
P.168 输 入 口 读 取 行 线 电 平
a. 扫描法
输出口驱动列线
图10-9 4×4行列式键盘结构(扫描法) 10- 4× 行列式键盘结构(扫描法)
第1步:识别键盘有无键按下; 识别键盘有无键按下; 驱动所有列线为‘ ,输入各行线电平如果有‘ , 驱动所有列线为‘0’,输入各行线电平如果有‘0’,就说明 有键按下,如果行线电平全‘ ,则全部无键按下。 有键按下,如果行线电平全‘1’,则全部无键按下。 第2步:如有键被按下,识别具体的按键。 如有键被按下,识别具体的按键。 依序驱动某一列为 驱动某一列为‘ 其余列均为‘ 输入各行线电平, 依序驱动某一列为‘0’ ,其余列均为‘1’ ,输入各行线电平, 如果某行线电平为‘ 可确定此行列交叉点处的按键被按下; 如果某行线电平为‘0’ ,可确定此行列交叉点处的按键被按下; 如果行线电平全为‘1’ 则本列无按键按下。 如果行线电平全为‘ 则本列无按键按下。
利用82C55的 利用82C55的C口高低四位可分别定义为 82C55 输入或输出,扩展4 行列式键盘, 输入或输出,扩展4×4行列式键盘,以线 反转法进行按键的识别及处理 反转法进行按键的识别及处理 TEST2011.ASM所示 所示。 实验板键盘扫描子程序 如TEST2011.ASM所示。 主工作程序中】 【主工作程序中】 LCALL KEY ;调用键盘扫描子程序 扫描到按键则在左第3 位显示“键号、 (扫描到按键则在左第3、4位显示“键号、-”)
键号+KEY_N 00H + 键号+KEY_N
位行列码比较,不同则转NK查下一个 则转NK CJNE A,60H,NK ;与8位行列码比较,不同则转NK查下一个 相同则转KN根据已获取的键号进行 则转KN根据已获取的键号进行相应处理 SJMP KN ;相同则转KN根据已获取的键号进行相应处理 键号加1 NK:INC 61H ;键号加1 INC DPTR ;指向键值表下一个位置 未查完, DJNZ R5,KY ;未查完,继续 键号=10H) 查完, RET ;查完,说明无按键或出现异常行列码则返回 (键号=10H) KEY_N:DB KEY_N:DB DB DB DB 0EEH,0EDH,0EBH,0E7H 0DEH,0DDH,0DBH,0D7H 0BEH,0BDH,0BBH,0B7H 7EH,7DH,7BH,77H ;键码表。K0,K1,K2,K3键码 键码表。K0,K1,K2,K3键码 ;K4,K5,K6,K7键码 ;K4,K5,K6,K7键码 ;K8,K9,K10,K11键码 ;K8,K9,K10,K11键码 ;K12,K13,K14,K15键码 ;K12,K13,K14,K15键码
键盘扫描子程序---2 TEST2011.ASM 键盘扫描子程序--2 置键号初值为00H MOV 61H,#00H ;置键号初值为00H 设定最多进行16 16次的键码查表 MOV R5,#10H ;设定最多进行16次的键码查表 DPTR,#KEY_N MOV DPTR,#KEY_N ;键码表首地址 ;A清 KY:MOV A,#00H ;A清0 查表读取键码表中当前位置键码 MOVC A,@ A + DPTR ;查表读取键码表中当前位置键码
;转向对应的键号处理程序 ;转向对应的键号处理程序 类似于高级语言中的开关语句
K0:MOV ;各键号处理程序 将键号送35H单元(使键号显示在左第三位) 各键号处理程序: 35H单元 K0:MOV 35H,#0 ;各键号处理程序:将键号送35H单元(使键号显示在左第三位) SJMP RT0 K1:MOV 35H,#01H SJMP RT0 K2:MOV 35H,#02H SJMP RT0 K3:MOV 35H,#03H SJMP RT0 K4:MOV 35H,#04H SJMP RT0 K5:MOV 35H,#05H SJMP RT0 K6:MOV 35H,#06H SJMP RT0
键盘扫描子程序---4 TEST2011.ASM 键盘扫描子程序--4 K7:MOV 35H,#07H SJMP RT0 K8:MOV 35H,#08H SJMP RT0 K9:MOV 35H,#09H SJMP RT0 KA:MOV 35H,#0AH SJMP RT0 KB:MOV 35H,#0BH SJMP RT0 KC:MOV 35H,#0CH SJMP RT0 KD:MOV 35H,#0DH SJMP RT0 KE:MOV 35H,#0EH SJMP RT0 KF:MOV 35H,#0FH RT0:MOV 34H,#10H RET
键 盘 管 理 程 序
二、行列式(矩阵式)键盘接口 行列式(矩阵式) • 适于按键数目较多的场合; 适于按键数目较多的场合; • 可节省很多的I/O口线; 可节省很多的I/O口线; I/O口线 • 同时只会有一个键闭合的场合。 同时只会有一个键闭合的场合。 行列式键盘按键的识别方法 行列式键盘按键的识别方法
S
+5V
R
K S按下 按下 S放开 放开
K点输出 点输出
抖动
接口技术-键盘接口 接口技术 键盘接口
开始
3.键盘管理程序 键盘管理程序 N (1)检测是否有按键闭合; )检测是否有按键闭合; (2)若有键闭合,延时消抖动; )若有键闭合,延时消抖动; (3)确认是否有按键闭合; )确认是否有按键闭合; N (4)判断闭合按键键号; )判断闭合按键键号; (5)等待按键释放; )等待按键释放; (6)执行相应键功能。 )执行相应键功能。