1. 程式人生 > >LCD1602液晶開發技術詳解

LCD1602液晶開發技術詳解

 

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。

 

掃描加入電子開發圈,海量雲盤學習資料等你下載!