2024年3月27日发(作者:)

AVR学习笔记十九、4X4矩阵键盘实验

19.1 实例功能

在前面的实例中我们已经学习了在单片机系统中检测独立式按键的接口电路和程序设

计,独立式按键的每个按键占用1位I/O口线,其状态是独立的,相互之间没有影响,只

要单独测试链接案件的I/O口线电平的高低就能判断键的状态。独立式按键电路简单、配

置灵活,软件结构也相对简单。此种接口方式适用于系统需要按键数目较少的场合。在按

键数量较多的情况下,如系统需要8个以上按键的键盘时,采用独立式接口方式就会占用

太多的I/O口,这对于I/O口资源不太丰富的单片机系统来说显得相当浪费,那么当按键

数目相对较多的时候,为了减少I/O口资源的占用,应该采取什么样的方式才能够既满足

多按键识别,又减少I/O口的占用呢?

当然我们可以采用端口扩展器件比如串并转换芯片实现单片机I/O口的扩展,但是这

种方式既增加了电路的复杂性,又增加了系统的成本开销。有没有比较经济实惠的方法呢?

事实上,在实际引用中我们经常采用矩阵式键盘的方式来节约I/O口资源和系统成本。

在这个实验中,我们采用4X4矩阵键盘来实现使用8个I/O口识别16个按键的实验,

本实例分为三个功能模块,分别描述如下:

● 单片机系统:利用ATmega16单片机与矩阵键盘电路实现多按键识别。

● 外围电路:4X4矩阵键盘电路、LED数码管显示电路。

● 软件程序:编写软件,实现4X4矩阵键盘识别16个按键的程序。

通过本实例的学习,掌握以下内容:

● 4X4矩阵键盘的电路设计和程序实现。

19.2 器件和原理

19.2.1 矩阵键盘的工作原理和扫描确认方式

当键盘中按键数量较多时,为了减少对I/O口的占用,通常将按键排列成矩阵形式,

也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图1所示,它由行线和列

线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的

行线或列线上的电平发生变化,MCU通过检测行或列线上的电平变化可以确定哪个按键被

按下。

图1为一个4 x 4的行列结构,可以构成16个键的键盘。很明显,在按键数量多的场

合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O口线。