为了在人类世界和机器世界之间建立良好的沟通,显示单元扮演着重要的角色。因此,它们是嵌入式系统的重要组成部分。显示单元-不论大小,都遵循相同的基本原理。除了图形显示和3D显示等复杂的显示单元外,还必须知道如何使用16x1和16x2单元之类的简单显示。16x1显示单元将包含16个字符,并在一行中。的16×2 LCD将在总16英寸1 32个字符第一线和另一条16在2次线。在此必须理解,每个字符中都有5x10 = 50像素,因此要显示一个字符,所有50像素必须一起工作。但是我们不必担心,因为人机界面中还有另一个控制器(HD44780)负责控制像素。(您可以在LCD单元中看到它,它是背面的黑眼圈)。
所需组件
硬件:
ATmega32微控制器
电源(5v)
AVR-ISP编程器
JHD_162ALCD(16x2液晶屏)
100uF电容器。
软件:
爱特梅尔工作室6.1
Progisp或闪光魔术
电路图和说明
如与ATmega32电路连接的LCD所示,您可以看到ATMEGA32的PORTA连接到数据端口LCD。如果要使用PORTC作为普通通信端口,则应记住通过更改熔丝字节来禁用ATMEGA PORTC中的JTAG通信。在16x2 LCD中,总共有16个引脚,如果有背光,则没有背光,则有14个引脚。一个人可以给背光灯供电或离开。现在,在14个引脚中,有8个数据引脚(7-14或D0-D7),2个电源引脚(1&2或VSS&VDD或gnd&+ 5v),第三个用于对比度控制的引脚(VEE控制字符的粗细) 3个控制针(RS&RW&E)
在上述将16x2 LCD与AVR微控制器接口的电路中,您可以观察到我只接了两个控制引脚。这提供了更好理解的灵活性。对比度位和READ / WRITE不经常使用,因此它们可以接地。这使LCD处于最高对比度和读取模式。我们只需要控制ENABLE和RS引脚即可相应地发送字符和数据。
ATmega32微控制器和16x2 LCD之间的连接如下所示:
PIN1或VSS-接地
PIN2或VDD或VCC-+ 5v电源
PIN3或VEE-地面(为初学者提供最大对比度)
PIN4或RS(寄存器选择)-微控制器的PD6
PIN5或RW(读/写)-接地(将LCD置于读模式下使用户易于通信)
PIN6或E(启用)-微控制器的PD5
PIN7或D0-微控制器的PA0
PIN8或D1-PA1
PIN9或D2-PA2
PIN10或D3-PA3
PIN11或D4-PA4
PIN12或D5-PA5
PIN13或D6-PA6
PIN14或D7-PA7
在电路中,您可以看到我们使用了8位通信(D0-D7),但这不是强制性的,我们也可以使用4位通信(D4-D7),但是对于初学者来说,使用4位通信程序会变得有些复杂,因此8位通讯。
因此,仅从上表的观察,我们就可以将LCD的10针连接到控制器,其中8针是数据针,而2针是控制针。
加工
现在开始,您必须了解16x2 LCD的10个引脚的功能(8个数据引脚+ 2个控制引脚)。8个数据引脚用于向LCD发送数据或命令。在两个控制引脚中:
1. RS(寄存器选择)引脚用于告诉LCD我们是向其发送数据还是向其发送命令。
例如:
在上表中,数据端口(D7-D0)的值为“ 0b0010 1000或0x28”,告诉LCD显示“(”符号。在表2中,相同的0x28值告诉LCD,“您是5x7点LCD,行为就像一个”,因此对于相同的值,用户可以定义两件事,现在这种情况已被寄存器选择引脚所抵消,如果RS引脚设置为低电平,则LCD理解我们正在发送命令。如果我们将RS引脚设置为高电平,则LCD知道我们正在发送数据,因此在两种情况下,LCD都会根据RS引脚值来考虑数据端口值。
2. E(启用)引脚仅用于指示“ PC的电源指示LED”,该引脚设置为高电平以指示LCD“从控制器的数据端口接收数据”。一旦该引脚从高电平变为低电平,LCD就会处理接收到的数据并显示相应的结果。因此,该引脚在发送数据之前设置为高电平,并在发送数据之后下拉至地。
现在,在连接硬件之后,启动Atmel studio并启动一个用于编写程序的新项目,现在打开编程屏幕并开始拧紧程序。该程序必须遵循如下所示。
首先,我们告诉控制器我们将哪些端口用于LCD的数据和控制。然后通过使用RS和E引脚告诉控制器何时发送数据或命令。
程序中使用的概念的简要说明:
1. E设置为高(告诉LCD接收数据),RS设置为低(告诉LCD我们给出命令)
2.将值0x01赋予数据端口作为清除屏幕的命令
3. E设置为高(告诉LCD接收数据),RS设置为高(告诉LCD我们正在发送数据)
4.取一个字符串,将字符串中的每个字符一一发送。
5. E设置为低(告诉LCD我们已经完成发送数据)
6.最后一条命令后,LCD终止通讯并处理数据,并在屏幕上显示字符串。
在这种情况下,我们将一个接一个地发送字符。字符通过ASCII码(美国标准信息交换码)提供给LCD。
ASCII码表如上所示。为了使LCD显示字符“ @”,我们需要发送一个十六进制代码“ 64”。如果我们向液晶显示屏发送“ 0x62”,它将显示“>”符号。这样,我们将向LCD发送适当的代码以显示名称。
LCD和ATmega32 AVR微控制器之间的通讯方式最好通过下面的C代码逐步说明,