12864LCD屏的基本原理以及使用方法
發(fā)布時(shí)間:2017-07-31
點(diǎn)陣式LCD屏的顯示原理
在數(shù)字電路之中,所有的數(shù)據(jù)情況都是以0和1來(lái)保存的,對(duì)于LCD控制器進(jìn)行不同的數(shù)據(jù)操作,可以得到一些不同的結(jié)果。對(duì)于顯示英文的操作,由于英文字母的種類(lèi)比較少,只需要8位(一字節(jié))就可以了。而對(duì)于中文來(lái)說(shuō),常用的卻有6000以上,于是我們的DOS前輩想了一個(gè)解決辦法,就是將ASCII表的高128個(gè)很少用到的數(shù)值以?xún)蓚€(gè)為一組來(lái)表示出漢字,即:漢字的內(nèi)碼。而剩下的低128位的則留給英文字符來(lái)使用,即:英文的內(nèi)碼。
那么,在得到了漢字的內(nèi)碼之后,還僅是一組數(shù)字而已,那又如何實(shí)現(xiàn)屏幕顯示呢?那么這就涉及到了文字的字模,字模雖然說(shuō)也是一組數(shù)字,但是它的意義卻和數(shù)字的意義有了根本的變化,它是在用數(shù)字的各位信息來(lái)記載英文或者漢字的形狀,比如英文的'A'在字模的記載方式如下圖1所示:

圖1 “A”字模圖
而中文的“你”在字模之中的記載卻如圖2所示:

圖2 “你”字模圖
12864點(diǎn)陣LCD屏簡(jiǎn)介
12864是一種圖形點(diǎn)陣液晶屏,它主要是由行驅(qū)動(dòng)器/列驅(qū)動(dòng)器以及128×64全點(diǎn)陣液晶屏所組成。它可以完成圖形的顯示,也可以顯示出8×4個(gè)(16×16點(diǎn)陣)漢字。
管腳號(hào) |
管腳名稱(chēng) |
LEVER |
管腳功能描述 |
1 |
VSS |
0 |
電源地 |
2 |
VDD |
+5.0V |
電源電壓 |
3 |
V0 |
- |
液晶顯示器驅(qū)動(dòng)電壓 |
4 |
D/I(RS) |
H/L |
D/I=“H”,表示DB7∽DB0為顯示數(shù)據(jù)
D/I=“L”,表示DB7∽DB0為顯示指令數(shù)據(jù) |
5 |
R/W |
H/L |
R/W=“H”,E=“H”數(shù)據(jù)被讀到DB7∽DB0
R/W=“L”,E=“H→L”數(shù)據(jù)被寫(xiě)到IR或DR |
6 |
E |
H/L |
R/W=“L”,E信號(hào)下降沿鎖存DB7∽DB0
R/W=“H”,E=“H”DDRAM數(shù)據(jù)讀到DB7∽DB0 |
7 |
DB0 |
H/L |
數(shù)據(jù)線(xiàn) |
8 |
DB1 |
H/L |
數(shù)據(jù)線(xiàn) |
9 |
DB2 |
H/L |
數(shù)據(jù)線(xiàn) |
10 |
DB3 |
H/L |
數(shù)據(jù)線(xiàn) |
11 |
DB4 |
H/L |
數(shù)據(jù)線(xiàn) |
12 |
DB5 |
H/L |
數(shù)據(jù)線(xiàn) |
13 |
DB6 |
H/L |
數(shù)據(jù)線(xiàn) |
14 |
DB7 |
H/L |
數(shù)據(jù)線(xiàn) |
15 |
CS1 |
H/L |
H:選擇芯片(右半屏)信號(hào) |
16 |
CS2 |
H/L |
H:選擇芯片(左半屏)信號(hào) |
17 |
RET |
H/L |
復(fù)位信號(hào),低電平復(fù)位 |
18 |
VOUT |
-10V |
LCD驅(qū)動(dòng)負(fù)電壓 |
19 |
LED+ |
- |
LED背光板電源 |
20 |
LED- |
- |
LED背光板電源 |
表1:
12864LCD屏的引腳說(shuō)明
在使用12864LCD屏之前必須要先了解以下的功能器件后才能夠進(jìn)行編程。12864的內(nèi)部功能器件以及相關(guān)功能如下所示:
1. 指令寄存器(IR)
IR它是用于寄存指令碼,與數(shù)據(jù)寄存器的數(shù)據(jù)相對(duì)應(yīng)。當(dāng)D/I=0時(shí),在E信號(hào)下降沿的作用之下,指令碼寫(xiě)入IR。
2.?dāng)?shù)據(jù)寄存器(DR)
DR是用來(lái)寄存數(shù)據(jù)的,與指令寄存器的寄存指令相對(duì)應(yīng)。當(dāng)D/I=1時(shí),在下降沿的作用下,圖形顯示數(shù)據(jù)寫(xiě)入DR,或者在E信號(hào)高電平的作用下由DR讀到DB7∽DB0數(shù)據(jù)總線(xiàn)。DR和DDRAM之間的數(shù)據(jù)傳輸是模塊內(nèi)部自動(dòng)執(zhí)行的。
3.忙標(biāo)志:BF
BF的標(biāo)志是提供內(nèi)部的工作情況。BF=1是表示模塊在內(nèi)部操作,此時(shí)的模塊不會(huì)接受外部指令和數(shù)據(jù)。BF=0時(shí),模塊為準(zhǔn)備的狀態(tài),隨時(shí)可以接受外部的指令和數(shù)據(jù)。
利用好STATUS READ的指令,就可以將BF讀到DB7的總線(xiàn),從驗(yàn)?zāi)K的工作狀態(tài)。
4.顯示控制觸發(fā)器:DFF
此觸發(fā)器是用于模塊的屏幕顯示開(kāi)和關(guān)的控制。DFF=1是開(kāi)顯示(DISPLAY OFF),DDRAM的內(nèi)容就會(huì)顯示在屏幕上,DFF=0為關(guān)顯示(DISPLAY OFF)。
DDF的狀態(tài)是指令DISPLAY ON/OFF和RST信號(hào)所控制的。
5.XY地址計(jì)數(shù)器
XY地址計(jì)數(shù)器就是一個(gè)9位的計(jì)數(shù)器。高3位的是X地址計(jì)數(shù)器,低6位的為Y地址計(jì)數(shù)器,XY地址計(jì)數(shù)器實(shí)際上就是作為DDRAM的地址指針,X地址計(jì)數(shù)器是DDRAM的頁(yè)指針,Y地址的計(jì)數(shù)器為DDRAM的Y地址指針。
X地址的計(jì)數(shù)器是沒(méi)有記數(shù)功能的,只能夠用指令來(lái)設(shè)置。
Y地址的計(jì)數(shù)器具有循環(huán)記數(shù)的功能,在各顯示數(shù)據(jù)寫(xiě)入后,Y地址自動(dòng)加1,Y地址指針從0到63。
6.顯示數(shù)據(jù)RAM(DDRAM)
DDRAM是來(lái)存儲(chǔ)圖形顯示數(shù)據(jù)的。數(shù)據(jù)為1則表示顯示選擇,數(shù)據(jù)為0則表示顯示非選擇。DDRAM與地址和顯示位置的關(guān)系詳細(xì)見(jiàn)DDRAM地址表。
7.Z地址的計(jì)數(shù)器
Z地址計(jì)數(shù)器實(shí)際是一個(gè)6位計(jì)數(shù)器,此計(jì)數(shù)器具備有循環(huán)記數(shù)的功能,它是用于顯示行掃描同步的。當(dāng)一行掃描完成后,此地址的計(jì)數(shù)器會(huì)自動(dòng)加1,指向下一行掃描數(shù)據(jù),RST復(fù)位后Z地址計(jì)數(shù)器為0。
Z地址的計(jì)數(shù)器是可以用指令DISPLAY START LINE預(yù)置。因此,顯示屏幕的起始行就是由此指令控制,即DDRAM的數(shù)據(jù)從哪一行開(kāi)始顯示在屏幕的第一行。此模塊的DDRAM一共64行,屏幕可以循環(huán)滾動(dòng)顯示出64行。
12864LCD的指令系統(tǒng)以及時(shí)序
該類(lèi)的液晶顯示模塊(即:KS0108B及其兼容控制驅(qū)動(dòng)器)的指令系統(tǒng)就比較簡(jiǎn)單,總共只有七種。其指令表如下表所示:
指令名稱(chēng) |
控制信號(hào) |
控制代碼 |
R/W |
RS |
DB7 |
DB6 |
DB5 |
DB4 |
DB3 |
DB2 |
DB1 |
DB0 |
顯示開(kāi)關(guān) |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1/0 |
顯示起始行設(shè)置 |
0 |
0 |
1 |
1 |
X |
X |
X |
X |
X |
X |
頁(yè)設(shè)置 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
X |
X |
X |
列地址設(shè)置 |
0 |
0 |
0 |
1 |
X |
X |
X |
X |
X |
X |
讀狀態(tài) |
1 |
0 |
BUSY |
0 |
ON/OFF |
RST |
0 |
0 |
0 |
0 |
寫(xiě)數(shù)據(jù) |
0 |
1 |
寫(xiě)數(shù)據(jù) |
讀數(shù)據(jù) |
1 |
1 |
讀數(shù)據(jù) |
表2:12864LCD屏的指令表
各功能指令分別介紹如下。
· 顯示開(kāi)/關(guān)指令
R/WRS |
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
00 |
00111111/0 |
當(dāng)DB0=1時(shí),LCD顯示RAM中的內(nèi)容;DB0=0時(shí),則關(guān)閉顯示。
2、顯示起始行(ROW)設(shè)置指令
R/WRS |
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
00 |
11顯示起始行(0~63) |
該指令設(shè)置了對(duì)應(yīng)液晶屏最上一行的顯示RAM的行號(hào),有規(guī)律地改變顯示起始行,可以使得LCD實(shí)現(xiàn)顯示滾屏的效果。
3、頁(yè)(PAGE)設(shè)置指令
R/WRS |
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
00 |
10111頁(yè)號(hào)(0~7) |
顯示RAM共64行,分為8頁(yè),每頁(yè)8行。
4、列地址(Y Address)設(shè)置指令
R/WRS |
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
00 |
01顯示列地址(0~63) |
設(shè)置了頁(yè)地址以及列地址,就唯一確定了顯示RAM中的一個(gè)單元,這樣MPU就可以用讀、寫(xiě)指令來(lái)讀出該單元中的內(nèi)容或者向該單元寫(xiě)進(jìn)一個(gè)字節(jié)數(shù)據(jù)。
5、讀狀態(tài)指令
R/WRS |
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
10 |
BUSY0ON/OFFREST0000 |
該指令是用來(lái)查詢(xún)液晶模塊內(nèi)部控制器的狀態(tài),各參量含義如下所示:
BUSY:1-內(nèi)部正在工作0-正常狀態(tài)
ON/OFF:1-顯示關(guān)閉0-顯示打開(kāi)
RESET:1-復(fù)位的狀態(tài)0-正常的狀態(tài)
在BUSY和RESET的狀態(tài)時(shí),除了讀狀態(tài)指令外,其它指令均不會(huì)對(duì)液晶顯示模塊產(chǎn)生作用。
在對(duì)液晶顯示模塊操作之前需要查詢(xún)BUSY狀態(tài),以確定是否可以對(duì)液晶顯示模塊來(lái)進(jìn)行操作。
6、寫(xiě)數(shù)據(jù)指令
R/WRS |
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
01 |
寫(xiě)數(shù)據(jù) |
· 讀數(shù)據(jù)指令
R/WRS |
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
11 |
讀顯示數(shù)據(jù) |
讀、寫(xiě)數(shù)據(jù)指令每每執(zhí)行完一次讀、寫(xiě)操作,列地址就會(huì)自動(dòng)增一。必須要注意的是,進(jìn)行讀操作之前,必須要有一次空讀操作,緊接著再讀才會(huì)讀出所要讀的單元中的數(shù)據(jù)。
12864點(diǎn)陣LCD屏軟硬件設(shè)計(jì)實(shí)例
通過(guò)以上的學(xué)習(xí),現(xiàn)在就來(lái)實(shí)際應(yīng)用12864LCD屏的軟硬件設(shè)計(jì)。本實(shí)例將會(huì)在LCD上顯示如圖3所示內(nèi)容:

圖3 模擬顯示的效果圖
在調(diào)試之前先將顯示切換開(kāi)關(guān)切換到LCD顯示狀態(tài)。

圖4 128*64LCD實(shí)驗(yàn)演示圖
硬件的原理圖

圖5 硬件原理圖
程序流程圖

圖6 軟件流程圖
軟件代碼
在編寫(xiě)軟件代碼之前必須要先掌握到漢字取模的方法。要得到上表之中的文字,我們可以借助取模軟件來(lái)完成。目前點(diǎn)陣LCD的取模軟件有很多,我們就以本開(kāi)發(fā)板配套的取模軟件為例來(lái)介紹一下漢字的取模方法。
打開(kāi)取模軟件,會(huì)出現(xiàn)如下的顯示界面:

在文字輸入?yún)^(qū)之中輸入文字,我們以輸入一個(gè)歡迎的“歡”字為例,了解其取模的過(guò)程。在文字輸入?yún)^(qū)中輸入“歡”后按CTRL+ENTER組合鍵后就看到“歡”字已經(jīng)在模擬顯示區(qū)中顯示出來(lái)了

在“取模方式”之中選擇“C51格式”就可以在“點(diǎn)陣生成區(qū)”得到你想要的漢字“歡”的顯示代碼。

經(jīng)過(guò)以上步驟之后。一個(gè)漢字就取模成功了,在程序中只要調(diào)用這一段代碼就可以顯示出漢字“歡”了,其它漢字也可以用同樣的方法。取完要顯示的全部漢字代碼后我們就可以開(kāi)始編程了。
上一篇:電阻、電容觸摸屏原理以及基礎(chǔ)知識(shí)的全解析
下一篇:12864液晶模塊的介紹