第四篇 C51程序设计典型案例
第14章 C51矩阵式键盘程序设计
在单片机应用系统中,除了完成基本的功能外,另一个最重要的任务是设计优秀的人机交互接口。人机交互接口用来实现控制命令及数据的输入,并且将系统运行信息显示反映给操作者。键盘以按键的形式来设置控制功能或数据,是人机交互的最基本的途径。在键盘中,按键的输入状态本质上是一个开关量。通过键盘为按键编码,从而实现命令或数据的输入,以达到控制的目的。
在单片机应用系统中,有两种常用的键盘结构,独立式按键和矩阵式按键。其中,独立式按键比较简单,适合于较少开关量的输入场合,而矩阵式键盘则适合于输入命令或者数据较多、功能复杂的系统。采用矩阵式键盘结构可以最大限度地使用单片机的引脚资源,因此应用十分广泛。
14.1 键盘接口概述
在单片机的人机交互系统中,键盘用于向单片机输入控制信号或数据。单片机识别键盘的不同输入信号,并做出相应的反应。
14.1.1 独立式按键和矩阵式键盘
键盘有很多种类型,对于简单的系统,如果需要的按键比较少,单片机引脚比较宽裕,则可以使用独立式按键结构。对于比较复杂的系统或者按键比较多的场合,可用采用矩阵式键盘。
1.独立式按键结构
独立式按键结构中,每个按键单独占有一个I/O口,这是最简单的键盘输入设计。8051单片机外接独立式按键的电路结构,如图14.1所示。其中按键和单片机引脚直接使用上拉电阻,当按下和释放按键时,输入到I/O端口的电平是不一样的。当没有按键按下的时候,I/O端口输入的是高电平;当按键按下的时候,I/O端口输入的是低电平,从而实现端口电平的变化来达到按键输入的目的。在程序中,根据不同端口电平的变化判断是否有按键按下以及是哪一个按键被按下,并执行相应的程序段。
独立式按键的程序设计比较简单,一般采用查询方式即可。这里需要注意的是,根据查询顺序的不同,各个按键之间有优先级的顺序。即当两个按键同时按下的时候,优先查询的按键优先执行。
由于每个按键都要单独占用一个单片机I/O引脚,因此独立式按键结构不适用于按键输入较多的场合,这样会占用大量单片机I/O端口资源。
2.矩阵式键盘结构
在矩阵式键盘结构中,采用行线和列线交叉的形式,每个交叉点即为一个按键。矩阵式键盘有很多种,常见的计算机的键盘便是典型的矩阵式键盘。这里以应用最为广泛的4×4矩阵式键盘为例来介绍,其他矩阵式键盘类似。
4×4矩阵式键盘的结构,如图14.2所示。其中由4根行线(X0~X3)和4根列线(Y0~Y3)构成,行线和列线交叉而成,按键位于行列的交叉点上。交叉点的行列线是不连接的,当按键按下的时候,此交叉点处的行线和列线导通。4×4矩阵式键盘可以组成16个按键。
在单片机系统中使用时,一般将4根行线和4根列线连接到单片机的一个8位的并行端口上,例如,P0、P1、P2或者P3端口。在程序中,分别对行线和列线进行不同的操作便可以确定哪个按键被按下。这样,只占用一个8位的并口便可以实现16个按键的检测,因此矩阵式键盘对单片机端口的利用率很高,适用于单片机引脚比较紧张的场合。
图 14.1 独立式按键的电路结构
图 14.2 4×4矩阵式键盘的结构