LCD1602液晶開發技術詳解
1602液晶它也可以被叫做1602字元型液晶,這個是一種只用來顯示字母、數字、符號等的點陣型液晶模組。1602裡面儲存器有三種:CGROM、CGRAM、DDRAM。
DDRAM(Display Data RAM)就是顯示資料RAM,用來寄存待顯示的字元程式碼。共80個位元組,其地址和螢幕的對應關係如下,如圖1:
圖1 資料地址和螢幕對應的關係
DDRAM其實就是我們平時說的PC機的視訊記憶體,如果說我們想要在螢幕上顯示我們想要顯示的,直接把需要的字元程式碼送入現實就可以了,很簡單就能夠在螢幕上顯示我們想要顯示的。相同的
都能夠在顯示器上顯示出來,只有在上圖提及到的才能夠正常的顯示,而上圖未提到的則不能夠顯示出來。正是因為這樣,我們在程式中可以利用下面的“游標或顯示移動指令”使字元慢慢移動到可見的顯示範圍內,看到字元的移動效果。
那麼如何在液晶上顯示字元呢,就是把要寫入的字元給DDRAM。舉個例子,我現在想在螢幕上顯示“A”,我就把我要的字元“A”的字元程式碼41H寫入DDRAM的00H地址處然後得到。那我們應該怎麼去寫入呢,我們在後面經行及一步的闡述。我們下面將要介紹的是
圖2 A的字模
上面的圖左側顯示的就是“A”的字模資料,上面的圖右側顯示“○”代表0,用“■”代表 1。這樣我們就能夠顯示出“A”這個字形。
在LCD1602模組上固化了字模儲存器,就是CGROM和CGRAM,HD44780內建了192個常用字元的字模,存於字元產生器CGROM(Character Generator ROM)中,另外還有8個允許使用者自定義的字元產生RAM,稱為CGRAM(Character Generator RAM)。下圖(字模表)說明了CGROM和CGRAM與字元的對應關係。從ROM和RAM
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=0,RW=1,E=高脈衝。輸出:D0~D7為狀態字。
②讀資料:RS=1,RW=1,E=高脈衝。輸出:D0~D7為資料。
③寫指令:RS=0,RW=0,E=高脈衝。輸出:無
④寫資料:RS=1,RW=0,E=高脈衝。輸出:無。
讀操作時序如圖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:顯示開及游標設定
它的特性有:
(1)3.3V或5V工作電壓,對比度可調;
(2)內含復位電路;
(3)提供各種控制命令,如:清屏、字元閃爍、游標閃爍、顯示移位等多種功能;
(5)內建有192個5X7點陣的字型的字元發生器CGROM;
(6)8個可由使用者自定義的5X7的字元發生器CGRAM。
掃描加入電子開發圈,海量雲盤學習資料等你下載!