一.接口
LCD1602是很多單片機愛好者較早接觸的字符型液晶顯示器,它的主控芯片是HD44780或者其它兼容芯片。與此相仿的是LCD12864液晶顯示器,它是一種圖形點陣顯示器,能顯示的內(nèi)容比LCD1602要豐富得多,除了普通字符外,還可以顯示點陣圖案,帶有漢字庫的還可以顯示漢字,它的并行驅(qū)動方式與LCD1602相差無幾,所以,在這里花點時間是值得的。
一般來說,LCD1602有16條引腳,據(jù)說還有14條引腳的,與16腳的相比缺少了背光電源A(15腳)和地線K(16腳)。這塊LCD1602的型號是HJ1602A,是繪晶科技公司的產(chǎn)品,它有16條引腳。如圖1所示:
圖1
再來一張它的背面的,如圖2所示:
圖2
它的16條引腳定義如下:
引腳號
符號
引腳說明
引腳號
符號
引腳說明
1
VSS
電源地
9
D2
數(shù)據(jù)端口
2
VDD
電源正極
10
D3
數(shù)據(jù)端口
3
VO
偏壓信號
11
D4
數(shù)據(jù)端口
4
RS
命令/數(shù)據(jù)
12
D5
數(shù)據(jù)端口
5
RW
讀/寫
13
D6
數(shù)據(jù)端口
6
E
使能
14
D7
數(shù)據(jù)端口
7
D0
數(shù)據(jù)端口
15
A
背光正極
8
D1
數(shù)據(jù)端口
16
K
背光負極
對這個表的說明:
1.VSS接電源地。
2.VDD接+5V。
3.VO是液晶顯示的偏壓信號,可接10K的3296精密電位器。或同樣阻值的RM065/RM063藍白可調(diào)電阻。見圖3。
圖3
4.RS是命令/數(shù)據(jù)選擇引腳,接單片機的一個I/O,當(dāng)RS為低電平時,選擇命令;當(dāng)RS為高電平時,選擇數(shù)據(jù)。
5.RW是讀/寫選擇引腳,接單片機的一個I/O,當(dāng)RW為低電平時,向LCD1602寫入命令或數(shù)據(jù);當(dāng)RW為高電平時,從LCD1602讀取狀態(tài)或數(shù)據(jù)。如果不需要進行讀取操作,可以直接將其接VSS。
6.E,執(zhí)行命令的使能引腳,接單片機的一個I/O。
7.D0—D7,并行數(shù)據(jù)輸入/輸出引腳,可接單片機的P0—P3任意的8個I/O口。如果接P0口,P0口應(yīng)該接4.7K—10K的上拉電阻。如果是4線并行驅(qū)動,只須接4個I/O口。
8.A背光正極,可接一個10—47歐的限流電阻到VDD。
9.K背光負極,接VSS。見圖4所示。
圖4
二.基本操作
LCD1602的基本操作分為四種:
1.讀狀態(tài):輸入RS=0,RW=1,E=高脈沖。輸出:D0—D7為狀態(tài)字。
2.讀數(shù)據(jù):輸入RS=1,RW=1,E=高脈沖。輸出:D0—D7為數(shù)據(jù)。
3.寫命令:輸入RS=0,RW=0,E=高脈沖。輸出:無。
4.寫數(shù)據(jù):輸入RS=1,RW=0,E=高脈沖。輸出:無。
讀操作時序圖(如圖5):
圖5
寫操作時序圖(如圖6):
圖6
時序時間參數(shù)(如圖7):
圖7
三.DDRAM、CGROM和CGRAM
DDRAM(Display Data RAM)就是顯示數(shù)據(jù)RAM,用來寄存待顯示的字符代碼。共80個字節(jié),其地址和屏幕的對應(yīng)關(guān)系如下(如圖8):
圖8
DDRAM相當(dāng)于計算機的顯存,我們?yōu)榱嗽谄聊簧巷@示字符,就把字符代碼送入顯存,這樣該字符就可以顯示在屏幕上了。同樣LCD1602共有80個字節(jié)的顯存,即DDRAM。但LCD1602的顯示屏幕只有16×2大小,因此,并不是所有寫入DDRAM的字符代碼都能在屏幕上顯示出來,只有寫在上圖所示范圍內(nèi)的字符才可以顯示出來,寫在范圍外的字符不能顯示出來。這樣,我們在程序中可以利用下面的“光標(biāo)或顯示移動指令”使字符慢慢移動到可見的顯示范圍內(nèi),看到字符的移動效果。
前面說了,為了在液晶屏幕上顯示字符,就把字符代碼送入DDRAM。例如,如果想在屏幕左上角顯示字符‘A’,那么就把字符‘A’的字符代碼41H寫入DDRAM的00H地址處即可。至于怎么寫入,后面會有說明。那么為什么把字符代碼寫入DDRAM,就可以在相應(yīng)位置顯示這個代碼的字符呢?我們知道,LCD1602是一種字符點陣顯示器,為了顯示一種字符的字形,必須要有這個字符的字模數(shù)據(jù),什么叫字符的字模數(shù)據(jù),看看下面的這個圖就明白了(如圖9)。
圖9
上圖的左邊就是字符‘A’的字模數(shù)據(jù),右邊就是將左邊數(shù)據(jù)用“○”代表0,用“■”代表1。從而顯示出‘A’這個字形。從下面的圖可以看出,字符‘A’的高4位是0100,低4位是0001,合在一起就是01000001b,即41H。它恰好與該字符的ASCII碼一致,這樣就給了我們很大的方便,我們可以在PC上使用P2=‘A’這樣的語法。編譯后,正好是這個字符的字符代碼。
在LCD1602模塊上固化了字模存儲器,就是CGROM和CGRAM,HD44780內(nèi)置了192個常用字符的字模,存于字符產(chǎn)生器CGROM(Character Generator ROM)中,另外還有8個允許用戶自定義的字符產(chǎn)生RAM,稱為CGRAM(Character Generator RAM)。下圖(如圖12)說明了CGROM和CGRAM與字符的對應(yīng)關(guān)系。從ROM和RAM的名字我們也可以知道,ROM是早已固化在LCD1602模塊中的,只能讀取;而RAM是可讀寫的。也就是說,如果只需要在屏幕上顯示已存在于CGROM中的字符,那么只須在DDRAM中寫入它的字符代碼就可以了;但如果要顯示CGROM中沒有的字符,比如攝氏溫標(biāo)的符號,那么就只有先在CGRAM中定義,然后再在DDRAM中寫入這個自定義字符的字符代碼即可。