键盘是广泛用于各种电子设备和嵌入式项目的输入设备。它们用于获取数字和字母的形式的输入,并将其输入系统以进行进一步处理。在本教程中,我们将连接4x4矩阵键盘和8051微控制器。
4X4矩阵键盘
在将键盘与微控制器连接之前,首先我们需要了解其工作原理。矩阵键盘由一组相互连接的按钮组成。像我们的情况一样,我们使用4X4矩阵键盘,其中四行中的每行有4个按钮。按钮的端子按图连接。在第一行中,所有4个按钮的一个端子连接在一起,而4个按钮的另一个端子分别代表4列,每行相同。因此,我们获得了8个与微控制器连接的端子。
与8051微控制器(AT89S52)连接的键盘
首先,我们需要连接LCD模块以显示将通过KEYPAD馈送的数据,因此在连接KEYPAD之前,请先阅读“与8051微控制器的LCD接口”一文。
如上面的电路图所示,要连接键盘,我们需要将键盘的8个端子连接到微控制器的任何端口(8个引脚)。就像我们将键盘终端连接到8051的端口1一样。每当按下任何按钮时,我们都需要获取按钮的位置,这意味着对应的行号为。一旦获得按钮的位置,就可以相应地打印字符。
现在的问题是如何获取按下按钮的位置?我将在以下步骤中对此进行解释,并且还希望您看一下代码:
1.首先,我们将所有行设置为逻辑级别0,将所有列设置为逻辑级别1。
2.每当我们按下一个按钮时,对应于该按钮的列和行都会短路,并使对应的列达到逻辑电平0。因为该列已连接(短路)到逻辑级别0的行。列号 请参见main()函数。
3.现在我们需要找到行号,因此我们创建了与每个列相对应的四个函数。就像按下第一列的任何按钮一样,我们调用函数row_finder1()来查找行号。
4.在row_finder1()函数中,我们反转了逻辑级别,这意味着现在所有的Rows为1,column为0。现在被按下的按钮的Row应该为0,因为它已连接(短路)到被按下按钮的列,并且所有列均为0逻辑。因此,我们在所有行中扫描了0。
5.因此,只要我们在逻辑0处找到行,就意味着这是按下按钮的行。因此,现在我们有了列号(在步骤2中获得了)和行号,并且可以打印号。使用lcd_data函数的按钮。
每次按下按钮都遵循相同的步骤,我们使用while(1)连续检查是否按下了按钮。