组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么
形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按
其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。
编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检
测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的
键码(如 ASCII 码)送往 CPU。所以,编码键盘接口简单、使用方便。但由于硬
件电路较复杂,因而价格较贵。
非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键
码的确定与输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低
成本大多数采用非编码键盘。
键盘接口必须具有去抖动、防串键、按键识别和键码产生 4 个基本功能。
(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持
续时间与键的质量相关,一般为 5—20mm。所谓抖动是指在识别被按键是必须避
开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问
题可通过软件延时或硬件电路解决。
(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有
新的按键按下时产生的问题。常用的方法有双键锁定和 N 键轮回两种方法。双键
锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产
生相应的键码。N 键轮回,是当检测到有多个键被按下时,能根据发现它们的顺
序依次产生相应键的键码。
(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬
结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想
是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需
要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思
想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/
输出端口。
(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内
存区中建立一个键盘编码表,通过查表获得被按键的键码。
用 AT89S51 的并行口 P1 接 4×4 矩阵键盘,以 P1.0-P1.3 作输入线,以
P1.4-P1.7 作输出线;在数码管上显示每个按键的“0-F”序号。
总体电路具体原理如下: