LCD1602液晶开发技术详解

版权声明:原创作品,转载请注明来源及本文链接! https://blog.csdn.net/weixin_42625444/article/details/84331059

 

1602液晶它也可以被叫做1602字符型液晶,这个是一种只用来显示字母、数字、符号等的点阵型液晶模块。1602里面存储器有三种:CGROMCGRAMDDRAM

DDRAM(Display Data RAM)就是显示数据RAM用来寄存待显示的字符代码。共80个字节其地址和屏幕的对应关系如下,如图1:

 

图1  数据地址和屏幕对应的关系

 

DDRAM其实就是我们平时说的PC机的显存,如果说我们想要在屏幕上显示我们想要显示的,直接把需要的字符代码送入现实就可以了,很简单就能够在屏幕上显示我们想要显示的。相同的LCD1602总共存在80个字节的显存,就是DDRAM。遗憾的是LCD1602显示不出来这么多的字符,正是因为这样,不是每一个写在DDRAM上的字符

都能够在显示器上显示出来,只有在上图提及到的才能够正常的显示,而上图未提到的则不能够显示出来。正是因为这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。

那么如何在液晶上显示字符呢,就是把要写入的字符给DDRAM。举个例子,我现在想在屏幕上显示“A,我就把我要的字符“A的字符代码41H写入DDRAM00H地址处然后得到。那我们应该怎么去写入呢,我们在后面经行及一步的阐述。我们下面将要介绍的是A的字模,如图2

 

图2  A的字模

 

上面的图左侧显示的就是“A的字模数据,上面的图右侧显示“代表0,用“■”代表 1。这样我们就能够显示出“A这个字形。

LCD1602模块上固化了字模存储器,就是CGROMCGRAMHD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8个允许用户自定义的字符产生RAM称为CGRAM(Character Generator RAM)。下图(字模表)说明了CGROMCGRAM与字符的对应关系。从ROMRAM的名称我们也可以知道,ROM是早已固化在LCD1602模块中的,只能读取;但是RAM即可以读又可以写。那么就是说,若是指要求在屏幕上显示CGROM中已经拥有的字符,那就仅仅需要在DDRAM中写入它的字符代码就可以了;若是说我想显示的是CGROM中不存在的字符,例如美元的符号,那就只能先在CGRAM中规定了,下一步再在DDRAM中写入我们之前自己定义的字符就可以了。但是相比于CGROM中固化的字符不一样,

CGRAM内自身没有任何字符,那就必须在DDRAM中写入一些CGROM没有的字符,一定要在CGRAM中首先把符号定义然后再去使用。程序退出后,CGRAM内之前定义的字符也会随着程序的退出而不再存在,若要是在使用的时候,就一定要重新定义。

那么如何在CGRAM中自定义字符呢?在上面的介绍中,我们知道如何设置CGRAM地址指令,同写DDRAM指令相似,只须设置好某个自定义字符的字模数据,然后按照上面介绍的方法,设置好CGRAM地址,依次写入这个字模数据即可。我们在后面的例子中再进行说明。如图3。

 

图3  设置CGRAM地址指令

 

1602使用三条控制线:EN、RW、RS。

 他们当中EN的作用其实就是中线的功能,RW和RS指示了读、它写的是写的方向和内容。在读数据(或者Busy标志)期间,EN线必须保持高电平;而在写指令(或者数

据)过程中,EN线上必须送出一个正脉冲。RW、RS的组合一共有四种情况,分别对应四种操作:

RS=0、RW=0——表示向LCD写入指令。

RS=0、RW=1——表示读取Busy标志。

RS=1、RW=0——表示向LCD写入数据。

RS=1、RW=1——表示从LCD读取数据。LCD1602引脚定义如表3.2。

 

表3.2 LCD1602引脚定义

引脚号

符号

引脚说明

引脚号

符号

引脚说明

1

VSS

电源地

9

D2

数据端口

2

VDD

电源正极

10

D3

数据端口

3

V0

偏压信号

11

D4

数据端口

4

RS

命令/数据

12

D5

数据端口

5

RW

读/写

13

D6

数据端口

6

E

脉冲使能

14

D7

数据端口

7

D0

数据端口

15

A

背光正极

8

D1

数据端口

16

K

背光负极

 

说明:

(1) 各部分功能:

①VSS接电源地

②VDD接+5V

③V0代表的是液晶上的偏压信号,它是能够接收10K的精准电位器。也可以说相同的阻值的RM065,RM063数据的蓝白是可以调节的。

④RS是命令/数据选择引脚,接单片机的其中一个I/O口。当RS=0,选择指令模式;RS=1,选择数据模式。

⑤RW为读/写模式选择引脚,接单片机的一个I/O口,

RW=0——写,向1602写数据或是指令。

RW=1——读,我们可以说是从1602读取信息也可以是说是状态,是没有必要进行读取操作,它能够直接接Vss。

⑥LCD1602执行命令的使能信号,接单片机的一个I/O口。

⑦D0~D7:LCD1602的并行数据输入/输出端口,能够接单片机上的所有的8位的I/O端口(P0~P3),要是说是接P0口的话一定要接一个8位的上拉电阻。当应用4线并行驱动模式的时候,只需接4个并行的I/O端口。

⑧A:背光正极,可以接一个10~47Ω的限流电阻接到VDD。

⑨K:背光负极,接VSS。

 

(2) LCD1602的基本操作

读状态:RS=0RW=1E=高脉冲。输出:D0~D7为状态字。

读数据:RS=1RW=1E=高脉冲。输出:D0~D7为数据。

写指令:RS=0RW=0E=高脉冲。输出:无

写数据:RS=1RW=0E=高脉冲。输出:无。

 

读操作时序如图4

图4  读写做时序

 

写操作时序如图5。

 

 

图5  写操作时序

    

LCD1602液晶显示屏指令:

(1)工作方式设置指令,如图6。

 

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

1

DL

N

F

X

X

 

                       

 

 

X:忽略,也就是说这个位是0或1都可以,一般取0。

DL:设置数据接口位数。

DL=1:8位数据接口(D7—D0)。

DL=0:4位数据接口(D7—D4)。

N=0:一行显示。

N=1:两行显示。

F=0:5×8点阵字符。

F=1:5×10点阵字符。

 说明:正是由于是写指令字,那就是说RS与RW全是0。LCD1602仅仅能用并行方式驱动,并不允许使用串行方式驱动。而并行方式又可以选择8位数据接口或4位数据接口。这里我们选择8位数据接口(D7—D0)。我们的设置是8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38。

 

(2) 显示开关控制指令,如图7。

 

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

1

D

C

B

 

                     

 

 

D=1:显示开,D=0:显示关。

C=1:光标显示,C=0:光标不显示。

B=1:光标闪烁,B=0:光标不闪烁。

 

(3) 进入模式设置指令,如图8。

 

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

1

I/D

S

 

                      

 

 

(4) I/D=1:写入新数据后光标右移。

   I/D=0:写入新数据后光标左移。

   S=1:显示移动。

   S=0:显示不移动。如图9,光标控制指令。

                           

S=1

I/D=1

It shift the display to the left

S=0

I/D=0

It shift the display to the right

 

说明:这里的设置是0x06。

 

(5) 显示移动指令,如图10。

 

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

1

S/C

R/L

X

X

 

 

 

 

 

(6) 清屏指令,如图11。

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

0

1

 

 

 

 

 

(7) 光标归位指令,如图12。

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

1

X

 

 

 

 

说明:光标返回屏幕左上角,它不改变屏幕显示内容。

 

(8) 设置CGRAM地址指令,如图13。

 

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

1

a

a

a

a

a

a

 

 

 

 

 

(9) 设置DDRAM地址指令,如图14。

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

a

a

a

a

a

a

a

 

 

 

 

 

(10) 读忙信号和地址计数器AC,如图15。

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

1

BF

a

a

a

a

a

a

a

 

 

 

 

有很多人都会有这样的问题,就是执行一条指令的时候,从来都没有成功过。好在我们有另外的办法,也就是延时。通过查看每条指令的执行时间,再经过一些试验,可以确定指令的延时。这样就可以在上一条指令执行完毕后再执行下一条指令了。

 

(11) 写数据到CGRAM或DDRAM指令,如图16。

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

D

d

d

d

d

d

d

d

d

 

 

 

 

 

(12) 从CGRAM或DDRAM读数据指令,如图17。

 

Code

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

1

d

d

d

d

d

d

d

d

 

                    

 

   

1602LCD的一般初始化(复位)过程 

延时15mS 

写指令38H(不检测忙信号) 

延时5mS 

写指令38H(不检测忙信号) 

延时5mS 

写指令38H(不检测忙信号) 

以后每次写指令、读/写数据操作均需要检测忙信号 

写指令38H:显示模式设置 

写指令08H:显示关闭 

写指令01H:显示清屏 

写指令06H:显示光标移动设置 

写指令0CH:显示开及光标设置

 

它的特性有:

13.3V5V工作电压,对比度可调;

2)内含复位电路;

3)提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;

4)有80字节显示数据存储器DDRAM

5)内建有1925X7点阵的字型的字符发生器CGROM

(6)8个可由用户自定义的5X7的字符发生器CGRAM。

 

扫描加入电子开发圈,海量云盘学习资料等你下载!

 

猜你喜欢

转载自blog.csdn.net/weixin_42625444/article/details/84331059