文档介绍:键盘接口
键盘是计算机不可缺少的输入设备,是实现人机对话的纽带。按其结构形式键盘可分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者用硬件方法产生键码。
键盘接口
键盘工作原理
键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间电压会产生波动,即抖动。它的结构和产生的波形如图所示。
VCC
GND
K
抖动时间
<10ms
开关动作时间
>100ms
“断开”
“闭合”
<10ms
“断开”
为了保证CPU对键的一次闭合仅进行一次键功能操作消除按键盘抖动,通常有两种方法:硬件消抖和软件消抖。
&
I/O
接
口
&
+5v
+5v
消除抖动电路
开关
单
片
机
硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用R-S触发器或单稳态电路。
软件消抖是利用延时来跳过抖动过程。在检测到有键按下时,执行一个10ms左右的延时程序后,再确认该键电平是否保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除了抖动影响。
图8-6 键盘结构
4×4 键盘
3. 行列式键盘工作原理
如果把行线接到单片机的输入口,列线接到单片机的输出口。在单片机的控制下,先使列线Y0输出“0”,其余列线都为“1”,读行线状态。如果行线都为“1”,则Y0列上没有键闭合。如果读出的行线不全为“1”,则为“0”的行线和Y0相交的键处于闭合状态,如果Y0这一列上没有键闭合,接着是列线Y1为“0”,其余为“1”,用同样方法检查Y1列上是否有键闭合。这种逐行逐列地检查键盘状态的过程称为对键盘的一次。
图中键盘的行线X0~X3通过电阻接+5V。当键盘上没有键闭合时,所有的行线和列线都断开,行线都呈高电平。当键盘上某一个键闭合时,该键所对应的行线和列线被短路。
键盘的工作方式
键盘的工作方式一般有两种:
一、编程扫描方式(查询方式)
二、中断扫描方式
一、编程扫描方式
CPU对键盘扫描
(1)可以采用程序控制的随机方式调用键盘扫描子程序响应键输入要求;
(2)也可以采用定时控制方式,每隔一定时间,调用键盘扫描子程序,来响应键输入要求。可利用8051内部定时器,定时10ms中断,调用键盘扫描子程序,从而转到键功能处理程序。
键盘扫描子程序一般应具备如下几个功能:
1)判断键盘上有无键按下。
2)用软件去除键的抖动影响。
3)扫描键盘,得到按下键的键号。
4)判断闭合的键是否抬起,键闭合一次仅进行一次键功能操作。
5)输出确定的键号。
接线说明:键盘
~,作键扫描输出线;
~,作读键输入线;
~,与门输出接到INT0引脚,以申请中断。
2)中断扫描方式
编程扫描方式,CPU经常处于空扫状态,为提高 CPU的效率,可采用中断方式。
4×4 键盘
行
列
初始化时使键盘行输出口全为0。当有键按下时,向CPU发出中断请求,CPU中断开放,响应中断请求,进入中断服务程序后,
进入中断服务程序后,要完成以下功能:
键识别:执行键盘识别程序,-,-,如有键按下,必有列线为低电平,转去抖动;
去除抖动:延时10ms左右后,再次识别有无键按下;
确定键并计算键值:执行扫描键盘程序,-,-,如所扫行有键按下,必有列线为低电平,从而根据行号和列号可以计算出键值。
键值=行首值+列号值
键处理程序
中断返回
键盘、显示器接口—8155()
4×8 键盘
8155的端口地址分配如下:
7F00H 命令/状态口
7F01H A口(显示器位选口;键盘列扫描输出口)
7F02H B口(显示器段选口)
7F03H C口(键盘行输入口)
LED采用动态显示、软件译码;
键盘采用编程扫描工作方式。
LED采用共阴极数码管;键盘编码为十六进制数。
LED驱动采用集电极开路同相输出8位驱动器8718芯片