显示单元是嵌入式项目和电子产品中最重要的输出设备。16x2 LCD是最常用的显示单元之一。16x2 LCD表示两行,每行可显示16个字符,每个字符在LCD上占据5X7矩阵空间。在本教程中,我们将把16X2 LCD模块连接到8051微控制器(AT89S52)。LCD和8051微控制器的接口 对于新手来说可能看起来相当复杂,但是在理解了这一概念之后,它看起来非常简单。尽管可能需要花费一些时间,但因为您需要了解LCD的16引脚并将其连接到微控制器。因此,首先让我们了解LCD模块的16针。
我们可以将其分为五类,电源引脚,对比引脚,控制引脚,数据引脚和背光引脚。
类别 |
销号 |
引脚名称 |
功能 |
电源引脚 |
1个 |
VSS |
接地引脚,接地 |
2 |
VDD或Vcc |
电压引脚+ 5V |
|
对比针 |
3 |
V0或VEE |
对比度设置,通过可变电阻器连接到Vcc。 |
控制销 |
4 |
RS |
寄存器选择引脚,RS = 0命令模式, RS = 1数据模式 |
5 |
读写器 |
读/写引脚,RW = 0写入模式, RW = 1读取模式 |
|
6 |
Ë |
启用,从高到低脉冲需要启用LCD |
|
数据引脚 |
7-14 |
D0-D7 |
数据引脚,存储要在LCD上显示的数据或命令指令 |
背光针 |
15 |
LED +或A |
为背光+ 5V供电 |
16 |
LED或K |
背光地 |
除了控制引脚以外,所有引脚的名称和功能都可以清楚地理解它们,因此下面将对其进行说明:
RS: RS是寄存器选择引脚。如果要发送一些要在LCD上显示的数据,则需要将其设置为1。如果要发送一些命令指令,例如清除屏幕(十六进制代码01),则将其设置为0。
RW:这是读/写引脚,如果要在LCD上写一些数据,我们将其设置为0。如果正在从LCD模块读取数据,则将其设置为1。通常将其设置为0,因为我们不需要从LCD读取数据。只需要读取一条指令“ Get LCD status”。
E:当给模块一个高到低脉冲时,此引脚用于使能模块。应该给出450 ns的脉冲。从高电平到低电平的转换使模块启用。
LCD中有一些预设的命令指令,我们在下面的程序中使用它们来准备LCD(在lcd_init()函数中)。以下是一些重要的命令说明:
十六进制代码 |
LCD指令寄存器命令 |
0楼 |
LCD亮,光标亮 |
01 |
清除显示画面 |
02 |
回家 |
04 |
减少光标(向左移动光标) |
06 |
增量光标(向右移动光标) |
05 |
右移显示 |
07 |
左移显示 |
0E |
显示开,光标闪烁 |
80 |
强制光标到第一行的开头 |
C0 |
强制光标移至第二行的开头 |
38 |
2行和5×7矩阵 |
83 |
光标线1位置3 |
3C |
激活第二行 |
08 |
显示关闭,光标关闭 |
C1 |
跳至第二行,位置1 |
超频 |
显示开启,光标关闭 |
C1 |
跳至第二行,位置1 |
C2 |
跳至第二行,位置2 |
电路图和说明
上图显示了LCD与8051微控制器接口的电路图。如果您对8051有基本的了解,那么您必须了解8051微控制器的EA(PIN 31),XTAL1和XTAL2,RST引脚(PIN 9),Vcc和接地引脚。我在上面的电路中使用了这些引脚。如果您对此没有任何想法,建议您在进行LCD接口之前阅读本文与8051微控制器的LED接口。
因此,除了上述这些引脚外,我们还将LCD的数据引脚(D0-D7)连接至端口2(P2_0 – P2_7)微控制器。并且分别将控制引脚RS,RW和E分别控制到微控制器的引脚12,13,14(端口3的引脚2,3,4)。
LCD的PIN 2(VDD)和PIN 15(背光电源)连接到电压(5v),PIN 1(VSS)和PIN 16(背光地)连接到地。
引脚3(V0)通过一个10k的可变电阻器连接到电压(Vcc),以调节LCD的对比度。可变电阻器的中脚连接到PIN 3,另外两脚连接到电源和地。
代码说明
我试图通过注释来解释代码(在代码本身中)。
正如我之前对命令模式和数据模式的解释,您可以看到在发送命令(函数lcd_cmd)时,我们将RS = 0,RW = 0设置为1,然后将E设置为1,然后将0设置为HIGH至LOW脉冲同样,在向LCD发送数据(函数lcd_data)时,我们将RS = 1,RW = 0并通过将E设为1到0来向E发出HIGH到LOW脉冲。已经创建了msdelay()函数,以毫秒为单位创建延迟并且在程序中经常调用它,以便使LCD模块有足够的时间执行内部操作和命令。
已经创建了一个while循环来打印字符串,该循环每次都调用lcd_data函数以打印一个字符直到最后一个字符(空终止符-'\ 0')。
我们已使用lcd_init()函数通过使用预设的命令指令(如上所述)使LCD准备就绪。