按下。但还不能确定是键 3 被按下,以为如果键 3 不被按下,而同一行的键 2、1 或 0
之一被按下,均会产生同样的效果。所以,行线处于低电平只能得出某行有按键被按下
的结论。为进一步判定到底是哪一列的按键被按下,可采用扫描法来识别。即在某一时
刻只让 1 条列线处于低电平,其余所有列线处于高电平。当第一列为低电平,其余各列
为高电平时,以为是键 3 被按下,所以 1 行仍处于高电平状态;而当第二列为低电平,
其余各列为高电平时,同样我们会发现第 1 行仍处于高电平状态;直到让第 4 列为低电
平,其余各列为高电平时,以为是 4 号键被按下,所以第一行的电平将由高电平转换到
第 4 列所处的低电平,据此可以判断出第 1 行第 4 列的交叉点处的按键,即 3 号键被按
下。
根据上面的分析,很容易想到识别键盘有无键盘被按下的方法,此方法分 2 步进行:
第 1 步,识别键盘有无键被按下;第 2 步,如有键盘被按下,识别出具体的按键。分别
介绍如下:
首先把所有的列线均置为低电平,检查各行线是否有变化,如果有变化,则说明有
键被按下,如果没有变化,则说明无键被按下。
上述识别具体按键的方法也称为扫描法,即先把某一列置低电平,其余各列置为高
电平,检查各行线电平的变化,如果某行线为低电平,则可确定次行此列交叉点处的按
键被按下。
2.3.2 键盘的工作方式
单片机应用系统中,键盘扫描只是单片机的工作内容之一。单片机在忙于各项工作
任务时,如何兼顾键盘的输入,取决于键盘的工作方式。键盘工作方式的选取应根据实
际应用系统中 CPU 工作的忙、闲情况而定。其原则是既要保证能即使响应按键操作,
又不要过多的占用 CPU 的时间,通常,键盘工作方式有三种:即编程扫描、定时扫描、
中断扫描。
1) 编程扫描方式(查表)
这种方式就是只有当单片机空闲时,才调用键盘扫描子程序,反复的扫描键盘,等
待用户从键盘上输入命令或数据,来响应键盘的输入请求。图为 1 个 2×4 矩阵键盘与
89C51 单片机的 P1 口相连的原理图,键盘采用编程扫描方式工作,P1 口高 2 位输出逐
行扫描信号,在由 P1 口输入 8 位列信号,均为低电有效。
首先:P1 口高 2 位拉低状态,置全 0 来扫描行,若 P1 低四位输出全 1,则说明键