在本教程中,我们将连接一个4x4(16键)键盘与ATMEGA32A微控制器。我们知道键盘是电子项目中使用的最重要的输入设备之一。键盘是向电子系统发出命令或指令的最简单方法之一。
所需组件
硬件: ATMEGA32,电源(5v),AVR-ISP编程器,JHD_162ALCD(16 * 2LCD),100uF电容器,100nF电容器,10KΩ电阻(8个)。
软体: Atmel Studio 6.1或Atmel studio 6.2,Progisp或Flash Magic。
电路图和工作说明
ATMEGA32的PORTB电路连接到数据端口LCD。如果要使用PORTC作为普通通信端口,则应记住通过更改熔丝字节来禁用PORTC或ATMEGA中的JTAG通信。在16x2 LCD中,如果有背光,则全部有16个引脚,如果没有背光,则有14个引脚。一个人可以给背光灯供电或离开。现在,在14个引脚中,有8个数据引脚(7-14或D0-D7),2个电源引脚(1&2或VSS&VDD或gnd&+ 5v),第三个用于对比度控制的引脚(VEE控制字符的粗细)如图所示)和3个控制引脚(RS&RW&E)。
在电路中,您可以观察到我只接了两个控制引脚,这提供了灵活性,对比度位和READ / WRITE不经常使用,因此它们可以接地。这使LCD处于最高对比度和读取模式。我们只需要控制ENABLE和RS引脚即可相应地发送字符和数据。
LCD的连接如下所示:
PIN1或VSS接地
PIN2或VDD或VCC至+ 5v电源
PIN3或VEE接地(为初学者提供最大对比度)
PIN4或RS(寄存器选择)至uC的PD6
PIN5或RW(读/写)接地(将LCD置于读模式可简化用户的通信)
PIN6或E(启用)到uC的PD5
uC的PIN7或D0至PB0
uC的PIN8或D1至PB1
uC的PIN9或D2至PB2
uC的PIN10或D3至PB3
uC的PIN11或D4至PB4
uC的PIN12或D5至PB5
uC的PIN13或D6至PB6
uC的PIN14或D7至PB7
在电路中,您可以看到我们使用了8位通信(D0-D7),但这不是强制性的,我们可以使用4位通信(D4-D7),但是使用4位通信程序会变得有些复杂。因此,仅从上表的观察,我们就可以将LCD的10个引脚连接到控制器,其中8个引脚是数据引脚,另外2个用于控制引脚。
现在让我们谈谈键盘,键盘不过是多路复用键。按钮以多路形式连接,以减少控制系统的引脚使用。
考虑我们有一个4x4键盘,在这个键盘上我们有16个按钮,在正常情况下,我们需要16个控制器引脚来连接16个按钮,但这在控制系统的角度来看不是很好。通过多路连接按钮可以减少该引脚的使用。
例如,假设我们有16个按钮,我们想将其连接到控制器以形成键盘,这些键的排列如图所示:
这些按钮由公共列连接,如图所示:
如图所示,每四个按钮的未标记端都被拖动以形成一列,因此对于16个键,我们有四列。
如果我们忘记了上面的列连接,并且将每四个按钮的共同标记端连接在一起就形成一行:
如图所示,对于16个键,我们将有四行,如图所示。
现在,当它们一起出现时,我们得到如下电路:
在这里,我们以多路复用形式连接了16个按键,以减少控制器的引脚使用量。与第一种连接16键的情况相比,我们需要控制器上的16引脚,但是现在多路复用之后,我们仅需要8针控制器即可连接16个键。
通常,这是键盘内显示的内容:
如上图所示,上述键盘中有16个键,这些键中的每个键代表多路复用按钮配置中的一个按钮。并且还有8针连接,如上图所示,表示多路连接。
现在开始工作:
这里的键盘有四列四行,为了识别按下的按钮,我们将使用交叉引用方法。在这里,首先我们将所有列或所有行都连接到vcc,因此,如果将行连接到公共vcc,我们将把这些列作为控制器的输入。
现在,如果按下按钮一,如图所示:
之后,电流流过电路,如下图所示:
因此我们将C1调高,按下按钮。此时,我们将移动电源和输入端口,即,将为列供电并以行作为输入,
这样,将产生如下图所示的潮流:
因此,对于该行,我们的R1高。
到目前为止,第一种情况下C1为高电平,第二种情况下R1为高电平,因此我们具有按钮的矩阵位置,因此为数字“ one”。
如果按下第二个按钮,则将C1作为列,但在公共列中获得的高逻辑将为'R2'。因此,我们将拥有C1和R2,因此我们将拥有第二个按钮的矩阵位置。
这就是我们要编写程序的方式,我们将把键盘的八个引脚连接到控制器的八个引脚。首先,我们为控制器的四个引脚供电,以便为四行键盘供电,此时将这四个引脚作为输入。当按下按钮时,相应的列引脚被拉起,因此控制器引脚被拉起,这将被识别为将输入更改为电源,而将电源更改为输入,因此我们将以行作为输入。
通过这种方式,我们得到了用户按下的按钮。此矩阵地址指向相应的数字,此数字显示在LCD上。
键盘与AVR微控制器接口的工作将在下面的C代码中逐步说明。您还可以检查:与8051微控制器连接的键盘。