12864点阵型液晶显示屏的基本原理与使用方法(很详细)
點(diǎn)陣LCD的顯示原理
???? 在數(shù)字電路中,所有的數(shù)據(jù)都是以0和1保存的,對(duì)LCD控制器進(jìn)行不同的數(shù)據(jù)操作,可以得到不同的結(jié)果。對(duì)于顯示英文操作,由于英文字母種類很少,只需要8位(一字節(jié))即可。而對(duì)于中文,常用卻有6000以上,于是我們的DOS前輩想了一個(gè)辦法,就是將ASCII表的高128個(gè)很少用到的數(shù)值以兩個(gè)為一組來表示漢字,即漢字的內(nèi)碼。而剩下的低128位則留給英文字符使用,即英文的內(nèi)碼。
???? 那么,得到了漢字的內(nèi)碼后,還僅是一組數(shù)字,那又如何在屏幕上去顯示呢?這就涉及到文字的字模,字模雖然也是一組數(shù)字,但它的意義卻與數(shù)字的意義有了根本的變化,它是用數(shù)字的各位信息來記載英文或漢字的形狀,如英文的'A'在字模的記載方式如圖1所示:
圖1 “A”字模圖
???? 而中文的“你”在字模中的記載卻如圖2所示:
圖2 “你”字模圖
12864點(diǎn)陣型LCD簡介
???? 12864是一種圖形點(diǎn)陣液晶顯示器,它主要由行驅(qū)動(dòng)器/列驅(qū)動(dòng)器及128×64全點(diǎn)陣液晶顯示器組成。可完成圖形顯示,也可以顯示8×4個(gè)(16×16點(diǎn)陣)漢字。
| 管腳號(hào) | 管腳名稱 | 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ù)被寫到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ù)線 |
| 8 | DB1 | H/L | 數(shù)據(jù)線 |
| 9 | DB2 | H/L | 數(shù)據(jù)線 |
| 10 | DB3 | H/L | 數(shù)據(jù)線 |
| 11 | DB4 | H/L | 數(shù)據(jù)線 |
| 12 | DB5 | H/L | 數(shù)據(jù)線 |
| 13 | DB6 | H/L | 數(shù)據(jù)線 |
| 14 | DB7 | H/L | 數(shù)據(jù)線 |
| 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的引腳說明
???? 在使用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)下降沿的作用下,指令碼寫入IR。
2.數(shù)據(jù)寄存器(DR)
???? DR是用于寄存數(shù)據(jù)的,與指令寄存器寄存指令相對(duì)應(yīng)。當(dāng)D/I=1時(shí),在下降沿作用下,圖形顯示數(shù)據(jù)寫入DR,或在E信號(hào)高電平作用下由DR讀到DB7∽DB0數(shù)據(jù)總線。DR和DDRAM之間的數(shù)據(jù)傳輸是模塊內(nèi)部自動(dòng)執(zhí)行的。
3.忙標(biāo)志:BF
???? BF標(biāo)志提供內(nèi)部工作情況。BF=1表示模塊在內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù)。BF=0時(shí),模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù)。
???? 利用STATUS READ指令,可以將BF讀到DB7總線,從檢驗(yàn)?zāi)K之工作狀態(tài)。
4.顯示控制觸發(fā)器DFF
???? 此觸發(fā)器是用于模塊屏幕顯示開和關(guān)的控制。DFF=1為開顯示(DISPLAY OFF),DDRAM的內(nèi)容就顯示在屏幕上,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地址計(jì)數(shù)器為DDRAM的Y地址指針。
???? X地址計(jì)數(shù)器是沒有記數(shù)功能的,只能用指令設(shè)置。
???? Y地址計(jì)數(shù)器具有循環(huán)記數(shù)功能,各顯示數(shù)據(jù)寫入后,Y地址自動(dòng)加1,Y地址指針從0到63。
6.顯示數(shù)據(jù)RAM(DDRAM)
???? DDRAM是存儲(chǔ)圖形顯示數(shù)據(jù)的。數(shù)據(jù)為1表示顯示選擇,數(shù)據(jù)為0表示顯示非選擇。DDRAM與地址和顯示位置的關(guān)系見DDRAM地址表。
7.Z地址計(jì)數(shù)器
???? Z地址計(jì)數(shù)器是一個(gè)6位計(jì)數(shù)器,此計(jì)數(shù)器具備循環(huán)記數(shù)功能,它是用于顯示行掃描同步。當(dāng)一行掃描完成,此地址計(jì)數(shù)器自動(dòng)加1,指向下一行掃描數(shù)據(jù),RST復(fù)位后Z地址計(jì)數(shù)器為0。
???? Z地址計(jì)數(shù)器可以用指令DISPLAY START LINE預(yù)置。因此,顯示屏幕的起始行就由此指令控制,即DDRAM的數(shù)據(jù)從哪一行開始顯示在屏幕的第一行。此模塊的DDRAM共64行,屏幕可以循環(huán)滾動(dòng)顯示64行。
12864LCD的指令系統(tǒng)及時(shí)序
???? 該類液晶顯示模塊(即KS0108B及其兼容控制驅(qū)動(dòng)器)的指令系統(tǒng)比較簡單,總共只有七種。其指令表如表2所示:
| 指令名稱 | 控制信號(hào) | 控制代碼 | ||||||||
| R/W | RS | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | |
| 顯示開關(guān) | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1/0 |
| 顯示起始行設(shè)置 | 0 | 0 | 1 | 1 | X | X | X | X | X | X |
| 頁設(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 |
| 寫數(shù)據(jù) | 0 | 1 | 寫數(shù)據(jù) | |||||||
| 讀數(shù)據(jù) | 1 | 1 | 讀數(shù)據(jù) | |||||||
表2:12864LCD指令表
各功能指令分別介紹如下。
- 顯示開/關(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、頁(PAGE)設(shè)置指令
| R/WRS | DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
| 00 | 10111頁號(hào)(0~7) |
顯示RAM共64行,分8頁,每頁8行。
4、列地址(Y Address)設(shè)置指令
| R/WRS | DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
| 00 | 01顯示列地址(0~63) |
設(shè)置了頁地址和列地址,就唯一確定了顯示RAM中的一個(gè)單元,這樣MPU就可以
用讀、寫指令讀出該單元中的內(nèi)容或向該單元寫進(jìn)一個(gè)字節(jié)數(shù)據(jù)。
5、讀狀態(tài)指令
| R/WRS | DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
| 10 | BUSY0ON/OFFREST0000 |
該指令用來查詢液晶顯示模塊內(nèi)部控制器的狀態(tài),各參量含義如下:
BUSY:1-內(nèi)部在工作0-正常狀態(tài)
ON/OFF:1-顯示關(guān)閉0-顯示打開
RESET:1-復(fù)位狀態(tài)0-正常狀態(tài)
在BUSY和RESET狀態(tài)時(shí),除讀狀態(tài)指令外,其它指令均不對(duì)液晶顯示模塊產(chǎn)生作用。
在對(duì)液晶顯示模塊操作之前要查詢BUSY狀態(tài),以確定是否可以對(duì)液晶顯示模塊進(jìn)行操作。
6、寫數(shù)據(jù)指令
| R/WRS | DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
| 01 | 寫數(shù)據(jù) |
- 讀數(shù)據(jù)指令
| R/WRS | DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 |
| 11 | 讀顯示數(shù)據(jù) |
???? 讀、寫數(shù)據(jù)指令每執(zhí)行完一次讀、寫操作,列地址就自動(dòng)增一。必須注意的是,進(jìn)行讀操作之前,必須有一次空讀操作,緊接著再讀才會(huì)讀出所要讀的單元中的數(shù)據(jù)。
12864點(diǎn)陣型LCD軟硬件設(shè)計(jì)實(shí)例
???? 通過以上學(xué)習(xí),現(xiàn)在就來實(shí)際應(yīng)用12864LCD的軟硬件設(shè)計(jì)。本實(shí)例將在LCD上顯示如圖3所示內(nèi)容:
圖3 模擬顯示效果圖
???? 在調(diào)試前先將顯示切換開關(guān)切換到LCD顯示狀態(tài)。
圖4 128*64LCD實(shí)驗(yàn)演示圖
硬件原理圖
圖5 硬件原理圖
程序流程圖
圖6 軟件流程圖
軟件代碼
???? 在編寫軟件代碼之前必須要先掌握漢字取模的方法。要得到上表中的文字,我們可以借助取模軟件來完成。目前點(diǎn)陣LCD的取模軟件有很多,我們以本開發(fā)板配套的取模軟件為例來介紹一下漢字的取模方法。
???? 打開取模軟件出現(xiàn)如下顯示界面:
???? 在文字輸入?yún)^(qū)中輸入文字,我們以輸入一個(gè)歡迎的“歡”字為例,了解其取模過程。在文字輸入?yún)^(qū)中輸入“歡”后按CTRL+ENTER組合鍵后就看到“歡”字已經(jīng)在模擬顯示區(qū)顯示出來了
???? 在“取模方式”中選擇“C51格式”就可以在“點(diǎn)陣生成區(qū)”得到你要的漢字“歡”的顯示代碼。
?
???? 經(jīng)過以上步驟后一個(gè)漢字就取模成功了,在程序中只要調(diào)用這段代碼就可顯示出漢字“歡”了,其它漢字也用同樣的方法。取完要顯示的全部漢字代碼后我們就可以編程了。
總結(jié)
以上是生活随笔為你收集整理的12864点阵型液晶显示屏的基本原理与使用方法(很详细)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【正点原子MP157连载】第一章 Ubu
- 下一篇: java抽象方法声明_java抽象类和抽