第 13章 键盘与 LED显示技术
13.1 键盘技术键盘是微机系统中最基本的人机对话输入设备 。 键盘由按阵列布局的按键构成 。
13.1.1 键盘的布局与分类
1,键盘的布局主 键 区功 能 键 区光标 / 数字复合键区光标控制键区
2,按键的分类
( 1) 键盘按其按键的结构形式分类一般有机械式,电容式,电感式,磁感式,薄膜式和橡胶垫式等 。 其中最常用的是机械式和电容式键盘 。
V c c V c c
上拉电阻上拉电阻列 (读出信号) 列 (读出信号)
机械触点 等效电容行扫描 行扫描
( a )机械式键盘 ( b )电容式键盘按钮结构 ( c )电容式键盘
( 2)键盘按其按键引入信号的形式分类可分为压按式、触摸式。
( 3)键盘按其功能分类可分为编码键盘和非编码键盘。
编码键盘 是键盘电路在某个键被按下后,能提供该键所代表的信息代码,并以并行或串行信号输给 CPU。由硬件完成判键、去抖、防串键、键码,价格较高。
非编码键盘 是一种便宜而广泛用于微机系统的输入设备 。
简单的行列矩阵布局 。 这种键盘内部有一个扫描电路,不断地扫描键盘是否有键被按下 。 此键所代表的键盘信息代码,则由键盘接口及键盘处理软件根据键盘送来的位置信息产生,然后再送给 CPU。 价格较低 。
3,按键的插口方式按照键盘插口方式,键盘可分为串口 ( AT) 键盘 ( 大口 ),
并口 ( 即 PS/2) 键盘 ( 小口 ) 两类 。
13.1.2 使用非编码键盘必须解决的问题
( 1) 消除键抖动键稳定 ( 按下到接触 ) 需要经过 10~ 20ms的时间,在判断是否有键按下时,需要去抖动,以消除干扰 。
消除键抖动的方法可分为:
软件方法,检测到有键按下,软件延时 10~ 20ms,在判是否真的有键按下,若有,则读取键码,若无,则认为是抖动干扰 。
硬件滤波,采用硬件的方法,每个键加上 RC滤波或 RS去抖 。 这种方法适用于键数不多的场合 。
( 2)消除键盘操作中的串键错误串键,同一键盘中有两个或两个以上的键同时按下的现象称为串键。
消除键盘操作中的串键错误的方法:
双键锁定,当检测到两个或两个以上的键同时按下时,只把最后释放的键当作有效的键,并产生相应的代码。
硬件保护,当检测到两个或两个以上的键同时按下时,只把第一个按下的键当作有效的键,并产生相应的代码。
N健轮回,当检测到有多个键同时按下时,能根据发现它们的顺序依次产生相应的代码。
( 3)被按键的识别被按键的识别采用软硬件结合的方法,可分为行扫描法和线反转法两种。
① 行扫描法由程序对键盘进行逐行扫描 ( CPU输出 ),通过 CPU检测到的列线输出状态确定闭合键 ( CPU输入 ) 。
硬件,设置输入,输出口各一个 。
该方法在微机系统中被广泛应用 。 行输出 0,读入列线,若列线数据中有 0,则行与该列交叉处的键被按下 。
行 0
行 1
行 2
行 3
列 0 列 1 列 2 列 3
② 线反转法通过行列点到两次扫描来识别键闭合。
硬件,设置两个可编程的双向输入 /输出端口。
过程,先行出列入,行输出 0000,读入列线,若列线中有 0(如
1110),则向 CPU发出中断申请,表明有键按下;然后,线反转,
列出行入,列输出上述的列值 1110,读行线(如为 1011),则并口输出值为,10111110,隐含键值为行 2列 0( 2,0)。
优点:软件简单,不需要逐行扫描,速度快,但需要采用双向并行接口。应用广泛。
( 4)键码的产生为了从键的行列坐标编码中得到反映键功能的键码,一般在内存中建立一个键盘编码表,通过查表获得被按键的键码。
例,假定有一个 3× 4的矩阵键盘通过并行接口芯片 8255与微机相连,8255的 A口与键盘行线相连(定义为输出),B口与键盘列线相连(定义为输入),设 8255的口地址为 60~ 63H。硬件连接如下:
行 0
行 1
行 2
列 0 列 1 列 2 列 3
CPU
PA0
PA0
PB0
PA2
PB2
PB1
PB3
8255
+VCC
程序如下:
设,BL----行数,BH----列数,CH----键号,
CL----列线屏蔽码 0FH
MOV AL,82H
OUT 63H,AL; 8255初始化,方式 0,A口输出,B口输入
LP1,MOV AL,00H
OUT 60H,AL;行扫描输出,A口
LP2,IN AL,61H;读入列线,B口
AND AL,0FH;取列线低 4位
CMP AL,0FH;
JZ LP2;无键按下转 LP2继续等待判断,有键按下则继续
MOV CX,7FFH
LP3,LOOP LP3;延时去键抖动
LP4,MOV BL,3;设置行数
MOV BH,4;设置列数
MOV AL,0FEH;逐行扫描开始,先设置扫描码,0行为 0
MOV CL,0FH;设置列线屏蔽码
MOV CH,0FFH;设置键号初值为 -1
LP5,OUT 60H,AL; 扫描一行
ROL AL,1; 循环左移,为扫描下一行作准备
MOV AH,AL;保存扫描码
IN AL,61H; 读入列线,真正判具体哪一个键按下
AND AL,CL; 保留低 4位,高 4位屏蔽掉 (CL= 0FH)
CMP AL,CL
JNZ LP6;有列线为 0,则转入 LP6,找出该列线
ADD CH,BH;列线无 0,无键按下,指向该行末列键号,为下行作准备
MOV AL,AH;取回扫描码,为扫描下行作准备
DEC BL;行数 -1
JNZ LP5;所有行没有扫描完,转 LP5继续扫描
JMP LP1;所有行扫描完,转 LP1重新开始
LP6,INC CH;键号 +1,指向本行首列键号 (原来 CH= 0FFH(-1))
RCR AL,1 ;循环右移,
JC LP6;该列非 0,转 LP6检查下一列
MOV AL,CH ;该列为 0,键号送 AL
JMP KEYTAB;散转查找键盘编码子程序,获取与键对应的键码
13.1.3 微机中键盘的原理在微机中,键盘通常用一片单片机来控制 ( 在键盘内部 ),
电路如下:
地线电源 CL OC K OU T
双向时钟 REQ IN
电容五芯插头
1 3
电阻
2 DA T A OU T
4 5
双向数据
DA T A IN
KEY DEP
复位线
P2 1 V c c
V d d
EA
P1 0 V ss
IN T
X2
X 1
P2 2 DB6
8048
DB0
P1 1 T1
RESE T
键盘扫描
1 时钟
2 地
3 复位
4 数据
5 电源
13.2 LED数字显示
LED也称发光二极管,多只发光二极管组合排列可形成七段码 LED、米字块 LED、点阵 LED。常说的数码管一般是指七段码
LED。它是在一定形状的绝缘材料上,利用单只 LED组合排列成
,8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出 0-9的数字。
LED数码管根据接法不同分为共阴和共阳两类,下页图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只 LED的阴极连在一起即为共阴式,而将多只 LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将,b”和,c”段接上正电源,其它端接地或悬空,那么,b”和,c”段发光,此时,
数码管显示将显示数字,1”。而将,a”,,b”,,d”,,e”和
,g”段都接上正电源,其它引脚悬空,此时数码管将显示,2”。
其它字符的显示原理类同。
( a) 共阴极 ( b) 共阳极 ( c) 管脚配置七段 LED显示块对于共阴极 LED,欲点亮的段在字节中所处的位为,1”;
对于共阳极 LED,欲点亮的段在字节中所处的位为,0”。 例如:
显示字符 5,共阴极字型码为 01101101B(6DH),共阳极字型码为
10010010B(92H)。
LED显示器显示方式要使 LED显示器显示出字符,必须提供段选码和位选码。
LED显示器有静态显示和动态显示两种显示方式:
1,LED静态显示方式所谓静态显示,就是当显示器显示某一个字符时,
相应的发光二极管恒定地导通或截止,例如七段显示器的 a,b,c,d,e,f导通,g截止,显示 0。 这种显示方式每一位都需要有一个8位输出口控制 。
优点,编程容易,管理简单,亮度较高,
缺点,占用口线资源较多 。
a b c d e f R dp a b c d e f R dp a b c d e f R dp a b c d e f R dp a b c d e f R dp
3.8 3.8 3.8 3.8 3.8
I/O 口位选控制

I/O 口段选控制
GND/+5V GND/+5V GND/+5V GND/+5V
GND/+5V
I/O (1 ) I/O (2 ) I/O (3 ) I/O (4 )
2,LED 动态显示方式动态显示,一位一位地轮流点亮显示器各个位 ( 扫描 ),对于显示器的每一位来说,每隔一段时间点亮一次 。 显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关 。 调整电流和时间参数,可实现亮度较高较稳定的显示 。
在多位 LED显示时,为了简化硬件电路,通常将所在位段选线相应地并联在一起,由一个 (7段 LED)8位 I/O口控制,形成段线的多路复用。而各位的共阳极或共阴极分别由相应的 I/O口线控制,实现各位的分时选通。
扫描显示方式,即在某一时刻,只让某一位的位选线处于选通状态,
而其它各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的字型码,这样同一时刻,多位 LED中只有选通的那一位显示出字符,而其它各位则是熄灭的。
由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的 。
动态显示特点,可能有闪烁,用元器件少,占 I/O线少,必须扫描,
占用 CPU时间,编程复杂。 (有多个 LED时尤为突出)
I/O(1)
D D D D D D D D
I/O(2)
7 56 4 3 2 1 0
驱动,每个发光二极管需要 2----20mA的驱动电流才能点亮,在一定范围内,驱动电流越大,发光二极管亮度越高。所以,在共阴极接法中,阳极需要加驱动电路(如,7407或三极管),同理,在共阳极接法中也需要加驱动电路。
码的转换,需要显示的数字是 BCD码,必须经过码制转换( BCD码到七段 LED段码),转换成 LED的段码才能显示。可采用软件查表法或专用集成芯片 74LS247(共阳极),74LS248(共阴极)实现。
8255
PB7
PB0
7
4
0
7
7
4
0
7
PA1
PA0
PA3
PA2

设,显示缓存区为 3000H----3003H,8255的口地址为 60---63H,编制程序,将显示缓存区的内容送入 4位 LED显示。
STACK SEGMENT
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
TABLE DB 3FH,06H,58H,4FH,66H,6DH,7DH,07H,7FH,6FH
DATA ENDS
CODE SEGMENT
ASSUME CS,CODE,DS,DATA
START,MOV SI,3000H
MOV DL,0F7H ;左侧第一位显示器位选通有效 1111,0111B
LP1,MOV AL,DL
OUT 60H,AL ;左侧的第一个显示器选中
MOV AL,[SI] ;缓冲区的数据
MOV BX,OFFSET TABLE; BX指向选码的首地址
AND AX,00FFH ;为 16位加法作准备,AH= 0
ADD BX,AX ;找到缓冲区数据的对应选码的地址
MOV AL,[BX] ;把缓冲区数据对应的选码传送给 AL
OUT 61H,AL ;输出到显示器
CALL DELAY ;调用延时程序
INC SI ;修改指针,指向缓冲区的下一个数据
MOV AL,DL
TEST AL,01H ;判断 4位显示器都显示了?
JZ LP2
ROR AL,1 ;
MOV DL,AL ;修改 DL数据
JMP LP1 ;显示下一位数据
LP2,HLT
DELAY,PUSH CX ;延时程序
MOV CX,0FFFH
DEL1,LOOP DEL1
POP CX
RET
CODE ENDS
END START
作业:
1,使用非编码键盘必须解决的问题有哪几方面?
2,简述识别被按键的行扫描法和线反转法的基本原理。
3,叙述 LED显示器中的共阴与共阳极接法。
4,LED显示器在显示数据时需要提供哪些信号?
5,叙述 LED显示器的两种工作方式及特点。