下面以51单片机综合学习系统为硬件平台,介绍矩阵式键盘的编程方法。具体功能为:按下其键后,在一位数码管上显示出键值。0到16个键分别对应显示0到F。
1、硬件原理
本实验可以直接在配套开发板上完成,电路图如下图所示。
根据电路原理图,键盘扫描方法是:行线P1O~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P1O-P13)全部输出低电平,此时读入列线数据,若列线全为高电平说明没有键接下,若有列线为低电平则调用延时程序来去除按键抖动。延时后再读入列线看是否有低电平,如果列线数据还是有低电平,说明确实有键接下,接下来便是确定键值。下面以第二行的S5键为例,看接下S5后我们应该怎么得到这个键值。当判定确实有键接下之后,将行线轮流置为低电平,根据读入列线的数据可以确定键值。首先,单片机将P1O置为低电平,P11~P13置为高电平,此时读出的列线数据全为高电平,说明第一行没有键接下;接着单片机将P11输出低电平,P1O、P12、P13置为高电平,再读列线数据,此时的列线数值为1011(OxOB),即P11与P15交叉点上的按键S5被接下,而OxOB就代表S5的键值了。转到S5键功能处理子程序就可以达到目的。
2.程序流程
软件流程图如下图所示。51单片机综合学习系统资源丰富,板内有:8位LED数码管、32路LED、4x4矩阵键盘、4个直控按键盘、蜂鸣器喇叭、继电器试验、I2C总线接口、SPI总线接口、l60x液晶、l28x64液晶、红外接收头接口、支持PS/2接口的104键标准键盘、步进电机驱动接口、ADCO832模/数转换接口、PC817光电耦合器、串行时钟芯片DSl302、温度传感器DSl8B2O按口、RS232串口通讯、外扩展接口等,可以方便地接更多的实验资源。
3. 软件代码
相关的软件代码如下:
/* 矩阵键盘测试程序*/