1. 单个按键的连接与应用
DESCRIPTION
一、键盘及其接口. 1. 单个按键的连接与应用. 常用的按键,都存在两种状态:断开和闭合。当某一键被按下,则为闭合状态;键释放,则为断开状态。键盘电路的功能就是将键的闭合和断开状态用“ 0” 和“ 1” 来表示,然后通过数据总线送到 CPU 内部进行键的识别。. 图 9 - 18 为单个键的输入电路。用下列两条指令可以识别按键是否被按下:. IN AL, 20H. AND AL, 01H. 程序执行结果若 AL 内容为零( ZF=1 ),说明键被按下;若 AL 内容为非零( ZF=0 ),则说明键未被按下。. 在键处理过程中,有二个问题必须注意:. - PowerPoint PPT PresentationTRANSCRIPT
微机原理及接口技术
第九章
微机原理及接口技术
第九章
1. 单个按键的连接与应用
常用的按键,都存在两种状态:断开和闭合。当某一键被按下,则为闭合状态;键释放,则为断开状态。键盘电路的功能就是将键的闭合和断开状态用“ 0” 和“ 1” 来表示,然后通过数据总线送到 CPU 内部进行键的识别。
一、键盘及其接口
微机原理及接口技术
第九章
微机原理及接口技术
第九章
图 9 - 18 为单个键的输入电路。用下列两条指令可以识别按键是否被按下:
IN AL, 20H
AND AL, 01H
9-18 单个键输入电路
CPU DB0
RD
20H
K
+ 5 V
9-18 单个键输入电路
CPU DB0
RD
20H
K
+ 5 V
程 序 执 行 结 果 若 AL
内 容 为 零 ( ZF=1 ) ,说明键被按下;若 AL
内 容 为 非 零 ( ZF=
0 ) , 则 说 明 键 未 被按下。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
在键处理过程中,有二个问题必须注意:
(1) 键抖动的处理
在实际按键操作中,由于按键动作是一个机械动作,键在闭合或断开的过程会发生抖动,如图 9 - 19 所示。
9-19 键抖动过程
微机原理及接口技术
第九章
微机原理及接口技术
第九章
键抖动时间的长短与开关的机械特性有关,
一般为 5ms ~ 10ms 左右,然后达到稳定状态。
在键盘接口,为了保证 CPU 对键的闭合作一
次且仅作一次处理,必须去除抖动,使 CPU
在键的稳定闭合或断开状态时读取键值。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
在键盘接口中,使用更普遍的是采用软件延时的方法来完成消抖。其基本思想是:在检测到按键按下或释放时,记录按键的状态,延时 10ms ~ 20ms ,再次检测按键的状态,若与前一次的状态相同,说明按键的状态已稳定,可进行处理;否则,表示键的状态不稳定,可能是误动作,不应被处理。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
对于图 9 - 18 电路中单个键的处理,可以使用如下程序:
IN AL , 20H ;读取键状态AND AL , 01H
JNZ EXIT ;无键按下,退出键处理程序CALL Delay ;延时 10ms
IN AL , 20H ;再次读取键状态AND AL , 01H
键处理程序…
JNZ EXIT ;无键按下,退出键处理程序
微机原理及接口技术
第九章
微机原理及接口技术
第九章
(2) 单个按键动作的确认
由于 CPU 的程序执行比按键的机械动作快得多,使得一次按键动作期间, CPU 检测到有按键并执行了相应的键处理程序以后,按下的键可能还没有被释放,因此,在 CPU 再一次测试键盘状态时,该键又被认为是按下状态,从而出现按一次键而 CPU 进行二次或多次键处理的情况。这是一个明显的误操作。解决方法有多种,最简便的解决方法是 CPU 在测试到有键接下时,一直等到键释放才作相应的键处理。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
对于图 9 - 18 ,可采用如下程序段来实现单个按键动作的确认:
IN AL , 20H ;读取键状态
AND AL , 01H
JNZ EXIT ;没有键按下,退出键处理程序
CALL Delay ;延时 10 毫秒
IN AL , 20H ;再次读取键状态
AND AL , 01H
JNZ EXIT ;无键按下,作为误动作退出键处理程序
微机原理及接口技术
第九章
微机原理及接口技术
第九章
L1 : IN AL , 20H ;读取键状态
AND AL , 01H ;等待键释放
JZ L1
键处理程序
CALL Delay ;键释放时消抖
IN AL , 20H
AND AL , 01H
JZ L1
微机原理及接口技术
第九章
微机原理及接口技术
第九章
2. 线性键盘及其接口
线性键盘由若干独立的按键组成。每个按键将其一端与微机系统中某输入端口的一位数据线相连,另一端接地。其接口程序简单,只要查询该输入端口各位的状态,便可判断是否有键按下,以及按下的具体是哪一个键。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
三
态
缓
冲
器
CPU DB0
RD20H
K0
K1
K2
K3
+5V
图9-20 多键接口电路
三
态
缓
冲
器
CPU DB0
RD20H
K0
K1
K2
K3
+5V
图9-20 多键接口电路
微机原理及接口技术
第九章
微机原理及接口技术
第九章
IN AL , 20H
SHR AL , 1
JNC K0 ;转键 K0 的处理程序
SHR AL , 1
JNC K1 ;转键 K1 的处理程序
SHR AL , 1
JNC K2 , ;转键 K2 的处理程序
SHR AL , 1
JNC K3 ;转键 K3 的处理程序
微机原理及接口技术
第九章
微机原理及接口技术
第九章
当然,上述程序段只是完成键识别的工作。在实际应用中,还要考虑键抖动问题的处理以及单个按键动作的确认问题。
线性键盘有多少按键,就有多少根连线与微机输入端口相连,因此只适合于按键少的应用场合,常用于某些微机化仪器或专用微机系统中。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
3. 矩阵键盘及其接口
矩阵键盘的按键排成 n 行 m 列,每个按键占据行列的一个交叉点,需要的输入输出线为 n+m ,最大按键数为 n×m 。显然,在按键较多的应用场合,矩阵键盘可以减少与微机系统接口的连线,是一般微机常用的键盘结构。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
图 9 - 21 为一个 3×4 矩阵键盘及其接口电路。
图9-21 3×4矩阵键盘的接口
PA0
PB0
8255A
PA1
PA2
PB1
PB2
PB3
键0 1 2 3
5 6 74
9 0A 0B8
行0
行1
行3
+5V列0 列1 列2 列3
图9-21 3×4矩阵键盘的接口
PA0
PB0
8255A
PA1
PA2
PB1
PB2
PB3
键0 1 2 3
5 6 74
9 0A 0B8
行0
行1
行3
+5V列0 列1 列2 列3
图 9-21 3×4 矩阵键盘的接口
微机原理及接口技术
第九章
微机原理及接口技术
第九章
图 9 - 22 是实现键处理工作的程序流程。
图9-22 键处理程序流程
初始化
检测键是否已按下?
消抖
判别按键确已按下?
确定键值
等待键释放
键值处理
N
N
Y
Y
图9-22 键处理程序流程
初始化
检测键是否已按下?
消抖
判别按键确已按下?
确定键值
等待键释放
键值处理
N
N
图9-22 键处理程序流程
初始化
检测键是否已按下?
消抖
判别按键确已按下?
确定键值
等待键释放
键值处理
N
N
Y
Y
设图 9 - 21 中 8255A 的端口地址为 00H( A 口 )、 02H ( B口)、 04H ( C 口)和06H (控制口),键处理的程序如下:
微机原理及接口技术
第九章
微机原理及接口技术
第九章
;确定按键闭合,等待键按下MOV AL , 82H
OUT 06H , AL ; 8255A初始化,选择方式 0 , A 口为输
;出, B 口为输入MOV AL , 0
OUT 00H , AL ;使各行线接地(为 0 电平)LOP1: IN AL , 02H ;读列线状态
AND AL , 0FH ;屏蔽无用位,保留列线位CMP AL , 0FH ;有列线为 0 电平吗?JZ LOP1 ;无,则继续查列线状态,等待键按下
微机原理及接口技术
第九章
微机原理及接口技术
第九章
;识别按下的键
MOV BL , 3 ;行数送 BL
MOV BH , 4 ;列数送 BH
MOV AL , 11111110B ;起始扫描码,第一次使行线 0 接地
MOV CH , 0FH ;设置屏蔽码
MOV CL , 0FFH ;取键号初值为 FFH
微机原理及接口技术
第九章
微机原理及接口技术
第九章
LOP2: OUT 00H , AL ;逐行扫描ROL AL ;修改扫描码,准备扫描下一行MOV AH , AL ;扫描码送 AH 保存IN AL , 02H ;读列线数据AND AL , CL ;屏蔽无用位,保留列线位CMP AL , CL ;有列线接地吗?JNZ LOP3 ;有,转去找该列线ADD CH , BH ;否,修改键号,使适合下一行MOV AL , AH ;扫描码送 AL
DEC BL ;行数减 1
JNZ LOP2 ;未扫描完,转下一行JMP BEGIN
微机原理及接口技术
第九章
微机原理及接口技术
第九章
LOP3: INC CH ;键号加 1
RCR AL ;带进位循环右移一位JC LOP3 ; C=1 ,说明该列未接地,
转去检查下一列线MOV AL , CH ;是,键号送 AL
CMP AL , 0 ;是 0号键吗?JZ KEY0 ;转 0号键处理程序CMP AL , 1 ;是 1号键吗?JZ KEY1 ;转 1号键处理
CMP AL , 0BH ;是 B号键吗?JZ KEY 口 ;转 B号键处理
微机原理及接口技术
第九章
微机原理及接口技术
第九章
p g f e d c b a
D7 D6 D5 D4 D3 D2 D1 D0
a
e
f g b
c
d p
共阳极 LED ,使 a, b, g, e, d 段为低电平,其他段为高电平,即显示“ 2” 。 ( 显示代码 A
4H) 。共阴极 LED ,使 a, f, g, c, d 为高电平,其
他段为低电平,即显示“ 5”( 显示代码 6DH) 。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
数字 0~9 ,对应的七段显示代码如下表 1 所示
数 码 十六进制表示的七段显示码共阳极 共阴极
0123456789
C0F9A4B0999282F88098
3F065B4F666D7D077F67
微机原理及接口技术
第九章
微机原理及接口技术
第九章
2. 七段显示吗的译码方法
( 1 )采用专用芯片,即采用专用的带驱动器的 LED 段译码器,比如 CD4511 ,可以实现对 BCD码的译码,但不能对大于 9 的二进制数译码。 CD4511 有 4 位显示数据输入, 7
位显示段输出, 3 位控制信号输入。使用时,只要将 CD4511 的输入端与微机系统输出端口的某 4 个数据位相连,而 CD4511 的的输出直接与 LED 的 a ~ g 相接,便可实现对 1 位 BC
D码的显示。具体电路如图 9 - 24 所示。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
(b)
a
ce
f
d
g b
A
B
C
D
E
F
G
A
B
C
D
LT
BT
LE
A
B
C
D
E
F
G
A
B
C
D
LT
BT
LE
VCC
显示数据
(a)
图9-24 采用CD4511的LED显示电路
(b)
a
ce
f
d
g b
a
ce
f
d
g b
A
B
C
D
E
F
G
A
B
C
D
LT
BT
LE
A
B
C
D
E
F
G
A
B
C
D
LT
BT
LE
VCC
显示数据
(a)
图9-24 采用CD4511的LED显示电路
微机原理及接口技术
第九章
微机原理及接口技术
第九章
( 2 )软件译码法。图 9 - 25 所示的采用 8255A 的 LED 接口,在软件设计时,在数据段定义 0 ~ F共 16 个数字(也可以为 0 ~9 或其他符号)的显示代码表,在程序中利用XLAT 指令进行软件译码。假设用共阳极 LE
D 来显示数据, 0 ~ F 的显示代码表就可以按0 ~ F 的顺序定义如下 :
微机原理及接口技术
第九章
微机原理及接口技术
第九章
DISPCODE DB 0C0H , 0F9H ,…, 06H , 0EH ;
a
ce
f
d
g b驱
动
电
路
图9-25 采用8255A的LED接口
a
b
g
8255
PA0
PA1
PA6
PA7
微机原理及接口技术
第九章
微机原理及接口技术
第九章
利用 8086 的换码指令 XLAT ,便可方便地实现数字到显示代码的译码。
假设要显示的数据存放的 BL 的低四位中,利用下面几条指令就可实现软件译码。
MOV AL , BL ;把要显示的数据送入 AL
AND AL , 0FH ;屏蔽无用位
LEA BX , DISPCODE ;显示代码表的首地址送 BXXLAT ;换码,相应的显示代码即
被存入 AL
微机原理及接口技术
第九章
微机原理及接口技术
第九章
3. 一种实用的多位 LED 显示接口
实际使用时,往往要用几个数码管实现多位显示。这时,如果每一个数码管占用一个独立的输出端口,那么,将占用太多的端口;而且,驱动电路的数目也很多。所以,要从硬件和软件两方面想办法节省硬件电路。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
图 9 - 26 是一种多位显示的接口电路,这是一种常用的方案。在这种方案中,硬件上用公用的驱动电路来驱动各数码管;软件上用扫描方法实现数字显示。
微机原理及接口技术
第九章
微机原理及接口技术
第九章
D0~D7
位1 位2 位3 位4 位5 位6 位7位0 阳极a b c d e f g h
… … … … … … …D0
D1
D2
D3
D4
D5
D6
D7
D0~D7
D0
D1
D2
D3
D4
D5
D6
D7
bitport,IOW
segport,IOW
段控制,正相寄存驱动
位控制,反相寄存驱动
D0~D7
位1 位2 位3 位4 位5 位6 位7位0 阳极a b c d e f g h
… … … … … … …D0
D1
D2
D3
D4
D5
D6
D7
D0~D7
D0
D1
D2
D3
D4
D5
D6
D7
bitport,IOW
segport,IOW
段控制,正相寄存驱动
D0~D7
位1 位2 位3 位4 位5 位6 位7位0 阳极a b c d e f g h
… …… …… …… …… …… ……D0
D1
D2
D3
D4
D5
D6
D7
D0~D7
D0
D1
D2
D3
D4
D5
D6
D7
bitport,IOW
segport,IOW
段控制,正相寄存驱动
位控制,反相寄存驱动
图9-26
多位数码管显示接口示意图
微机原理及接口技术
第九章
微机原理及接口技术
第九章
下面是一段实现 8 位数码管依次显示一遍的子程序。实际应用中,只要按一定频率重复调用它,就可以获得稳定的显示效果。
MOV DI , OFFSET BUFDATA ;指向数字缓冲区
MOV CL , 0FEH ;指向最左边数码管
微机原理及接口技术
第九章
微机原理及接口技术
第九章
DISP: MOV AL , [DI] ;取出数字
MOV BX , OFFSET TABLE ;指向显示代码表
XLAT ;得到显示代码
MOV DX , SEGPORT ; segport 为段控制端口
OUT DX , AL ;送出段码
MOV AL , CL ;取出位显示代码
MOV DX , BITPORT ; bitport 为位控制端口
OUT DX , AL ;送出位码
CALL DELAY ;实现数码管延时显示
INC DI ;指向下一个数字