LCD1602介绍
LCD1602简介
1602 液晶也叫1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。其实物图如下所示:
在上图中可以看到有16个管脚孔,从左至右管脚编号顺序是1-16,其功能定义如下所示:
编号 | 符号 | 引脚说明 | 编号 | 符号 | 引脚说明 |
---|---|---|---|---|---|
1 | VSS | 电源地 | 9 | D2 | Data I/O |
2 | VDD | 电源正极 | 10 | D3 | Data I/O |
3 | VL | 液晶显示偏压信号 | 11 | D4 | Data I/O |
4 | RS | 数据/命令选择端(H/L) | 12 | D5 | Data I/O |
5 | R/W | 读/写选择端(H/L) | 13 | D6 | Data I/O |
6 | E | 使能信号 | 14 | D7 | Data I/O |
7 | D0 | Data I/O | 15 | BLA | 背光源正极 |
8 | D1 | Data I/O | 16 | BLK | 背光源负极 |
下面对几个管脚做下说明:
- 3脚(VL) : 液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0 时可以得到最强的对比度。
- 4脚(RS) : 数据/命令选择端,当此脚为高电平时,可以对1602 进行数据字节的传输操作,而为低电平时,则是进行命令字节的传输操作。命令字节,即是来对LCD1602 的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602 的数据是8位的。
- 5脚(R/W) : 读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。
- 6脚(E) : 使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对 LCD1602的数据传输。
- 7~14脚 : 8 位并行数据口,而51单片机一组IO也是8位,使得对LCD1602的数据读写大为方便。
在LCD1602 内部含有80个字节的DDRAM,它是用来寄存显示字符的。其地址和屏幕的对应关系如下表:
从上图可知,不是所有的地址都可以直接用来显示字符数据,只有第一行中的00-0F,第二行中的40-4F才能显示,其他地址只能用于存储。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为 写入显示地址时要求最高位 D7恒定为高电平 1 所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在 1602 中我们就用前 16 个就行了。第二行也一样用前 16 个地址。
LCD1602常用指令
在使用LCD1602时,我们需要掌握一些常用的指令,这些指令对于LCD1602初始化是必须的。
清屏命令
- 清除液晶显示器,即将DDRAM的内容全部填入“空白”的ASCII码(20H)
- 光标归位,即将光标撤回液晶显示屏的左上方
- 将地址计数器(AC)的值设为0
模式设置指令
- 设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动
- I/D :
- 0 = 写入新数据后光标左移;
- 1 = 写入新数据后光标右移
- S :
- 0 = 写入新数据后显示屏不宜动;
- 1= 写入新数据后显示屏整体右移一个字符
- I/D :
显示开关控制指令
- 控制显示器开/关、光标显示/关闭以及光标是否闪烁
- D :
- 0 = 显示功能开
- 1 = 显示功能开
- C :
- 0 = 无光标
- 1 = 有光标
- B
- 0 = 光标闪烁
- 1 = 光标不闪烁
- D :
功能设定指令
- 设定数据总线位数、显示的行数及字型
- DL :
- 0 = 数据总线位4位
- 1 = 数据总线位8位
- N :
- 0 = 显示1行
- 1 = 显示2行
- F :
- 0 = 5 × 7 点阵/每字符
- 1 = 5 × 10 点阵/每字符
- DL :
LCD1602使用
要使用LCD1602,首先需要对其初始化,即通过写入一些特定的指令实现。然后选择要在LCD1602的哪个位置显示并将所要显示的数据发送到LCD的DDRAM。使用LCD1602通常都是用于写数据进去,很少使用读功能。LCD1602操作步骤如下所示:
- 初始化
- 写命令(
RS=L
),设置显示坐标 - 写数据(
RS=H
)
在此,不需要读出它的数据的状态或者数据本身。所以只需要看两个写时序:
- 当要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。
- 当要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。
写指令和写数据,差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图:
从上图可以看到,以上给的时间参数全部是ns级别的,而51单片机的机器周期是1us,指令周期是2-4个机器周期,所以即便在程序里不加延时程序,也可以很好的配合LCD1602的时序要求了。
当要写命令字节的时候,时间由左往右,RS 变为低电平,R/W 变为低电平,注意看是RS的状态先变化完成。然后这时,DB0~DB7 上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W 电平变化。这样便是一个完整的LCD1602写命令的时序。
硬件设计
本实验使用到硬件资源如下:
- LCD1602液晶显示屏
从上图中可知,LCD1602的8位数据口DB0-DB7与单片机的P0.0-P0.7管脚连接,LCD1602的RS、RW、E脚与单片机的P2.6、P2.5、P2.7管脚连接。RJ1是一个电位器,用来调节LCD1602对比度即显示亮度。
注意:这里原理图是使用的8位LCD1602接口设计,是可以兼容4位LCD1602的。对于非标准接口的LCD1602,我们也会通过转接板将其转接为对应开发板接口的。对于4位LCD1602在传输数据的时候需要将 8 位的数据截成两段,先发送高四位,在发送低四位。其它引脚操作方法不变。
软件设计
本实验所要实现的功能是:在LCD1602液晶上显示字符信息。程序框架如下:
- LCD1602显示函数
- 主函数
1 | /************************************************************************************** |
1 |
|
1 |
|
相关头文件
1 |
|
1 |
|