本节主要内容是与矩阵键盘和LCD1602液晶屏进行通信,实现按键的数字显示,以及小型电子钥匙锁项目。 如果需要源码,直接进入:3.代码分享;
目录
实验简介:利用51单片机的矩阵按键模块和LCD1602液晶显示模块,实现矩阵键盘的控制显示等; 包括:电子锁项目的电路分析、源码分享和讲解; 通过本节学习,熟悉51单片机相关模块的理解,加深对电路分析、扫描概念的理解,以及对相关C语言程序的理解和学习;
实验设备:普中51-实验开发板
实验目录:
1、矩阵按键数字显示;
2、矩阵按键实现电子锁项目;
1. 硬件部分 1.1 矩阵按键
矩阵键是微控制器外围设备中使用的类似矩阵的键盘组。 之前我们已经讲解过普通独立按键模块; 矩阵键盘可以看作是独立按键的升级版,因为独立按键中的一个按键需要一个I/O进行输入输出。 当按键数量增加时,I/O 数量也需要增加; 矩阵键盘将大部分按键排列成矩阵,用更少的IO口控制更多的按键;
矩阵键盘的结构:为了减少I/O端口的占用,按键通常呈矩阵形式排列; 矩阵键盘中,每条水平线和垂直线在交叉点处通过一个按键连接,因此(4×4=16)的矩阵键盘只需要通过8个接口进行控制; 下图为矩阵键盘实物图;
1.2LCD1602液晶显示屏
LCD1602液晶显示屏主要用于测试矩阵键盘; 矩阵键盘的输出显示会显示在LCD1602上; 对LCD1602液晶显示模块感兴趣的朋友可以参考我之前关于1602的博客;
51单片机–LCD1602显示自定义字符、HD44780驱动(含源码、驱动、及指令集讲解)! ! ! 好文章推荐! -CSDN博客
开发板上矩阵按钮和LCD1602液晶显示屏的位置如下图所示:
2、原理图 2.1 矩阵按键模块
下图是普中51实验板的矩阵按键模块电路图。 图中共有16个按钮(4行,4列); 它们通过8个(P10-P17)端口进行控制; 例如:按下S1按钮时,P17和P13端口处于短路状态; 基于矩阵按键模块本身的独特特性,我们引入扫描的概念;
扫描:
1、数码管的显示:在数码管的动态显示部分,当我们谈到同时显示两个或多个数码管时,采用的方法是:显示第一位数字—>显示第二位数字— -> 显示第三位…然后快速循环; 达到肉眼无法辨别的速度,可以实现同步显示;
2、矩阵按键模块:读取第一行(列)—>读取第二行(列)—>读取第三行(列)…然后快速循环; 矩阵按键扫描有两种扫描方式,即行扫描和列扫描;
可能上面对矩阵键盘扫描的解释还不够清楚; 下面我将通过例子进一步解释:
使用逐行扫描:规定P17、P16、P15、P14引脚为0111,扫描第一行(S1、S2、S3、S4),检测P13、P12、P11、P10引脚; 如果其中有0或低电平,则表示对应的按钮被按下; (例如:如果检测到P13为低电平,则表示S1按钮被按下);
然后将P17、P16、P15、P14引脚设置为1011,扫描第二行(S4、S5、S6、S7),检测P13、P12、P11、P10引脚; 如果其中有0或低电量,如果为平,则表示相应的按钮被按下;
然后将P17、P16、P15、P14引脚设置为1101,扫描第三行;
然后将P17、P16、P15、P14引脚设置为1110,扫描第四行;
采用逐列扫描:规定P13、P12、P11、P10引脚为0111,扫描第一列(S1、S5、S9、S13),检测P17、P16、P15、P14引脚; 如果有0或低电平,则表示相应的按钮被按下; (例如:如果检测到P14为低电平,则表示S13按钮被按下);
将P13、P12、P11、P10引脚设置为1011,扫描第二列(S2、S6、S10、S14),检测P17、P16、P15、P14引脚; 如果其中有0或低电量为平,则表示对应的按钮被按下;
然后将P13、P12、P11、P10引脚设置为1101,扫描第三列;
然后将P13、P12、P11、P10引脚设置为1110,扫描第四列;
2.2 单片机核心模块
下图是单片机的核心模块电路图。 使用的引脚为红框中选择的部分,连接到矩阵按键模块;
3. 代码共享 3.1 矩阵按钮的数值显示
项目描述:按下按钮后,LCD1602上显示该按钮的编号;