1. 程式人生 > >128*64點陣圖形液晶顯示屏程式設計教程

128*64點陣圖形液晶顯示屏程式設計教程

使用PROTEUS模擬軟體中的液晶顯示屏(型號AMPIRE12864)探索點陣液晶的程式設計方式;該型號液晶屏內部無字型檔,只能自建字模進行字元顯示(使用方法與圖形顯示方式一致);字模可通過“字模提取”軟體提取,省去手工建模

的麻煩。

整體電路圖  

功能說明:該電路使用AT89C52作控制器,電路左下方為時鐘晶片DS1302;用液晶屏顯示當前時間、若干漢字、一幅小圖等內容;

電路連線:

1)液晶模組: E=P2^0;  RW=P2^1;  RS=P2^2;  CS2=P2^3;  CS1=P2^4;  RST(復位訊號)=5V;  

               資料口D0~D7接微控制器P0口;

2)時鐘晶片DS1302:  RST = P3^6 ;    CLK =  P1^6 ;    SDA =  P1^7 ;

電路模擬結果如下:

首先分析下該液晶模組內部控制器的工作原理:

管腳功能:

管腳名稱

LEVER

管腳功能描述

VSS

0

電源地

VDD

+5.0V

電源電壓

V0

-

液晶顯示器驅動電壓 (在PROTUES模擬軟體中可不接)

RS

1/0

RS=0,表示DB7∽DB0為顯示資料

RS=1,表示DB7∽DB0為顯示指令資料

R/W

1/0

R/W=1,E=1資料被讀到DB7∽DB0

R/W=0,E=“1→0”,資料被寫到IR或DR

E

1/0

R/W=0,E訊號下降沿鎖存DB7∽DB0

R/W=1,E=1, DDRAM資料讀到DB7∽DB0

DB0~DB7

1/0

資料線

1/0

0:選擇晶片(左半屏)訊號

1/0

0:選擇晶片(右半屏)訊號

1/0

復位訊號,低電平復位

VOUT

-10V

LCD驅動負電壓 (在PROTUES模擬軟體中可不接)

12864內部功能器件及相關功能:

1. 指令暫存器(IR)

IR是用於寄存指令碼,與指令暫存器寄存指令相對應。當RS =0時,在E訊號下降沿的作用下,指令碼寫入IR。

2.資料暫存器(DR)

DR是用於寄存資料的,與資料暫存器資料相對應。當RS =1時,在下降沿作用下,圖形顯示資料寫入DR,或在E訊號高電平作用下由DR讀到DB7∽DB0資料匯流排。DR和DDRAM之間的資料傳輸是模組內部自動執行的。

3.忙標誌:BF

BF標誌提供內部工作情況。BF=1表示模組在內部操作,此時模組不接受外部指令和資料。BF=0時,模組為準備狀態,隨時可接受外部指令和資料。利用STATUS READ指令,可以將BF讀到DB7匯流排,檢驗模組工作狀態。

4.顯示控制觸發器DFF

此觸發器是用於模組螢幕顯示開和關的控制。DFF=1為開顯示(DISPLAY OFF),DDRAM的內容就顯示在螢幕上,DFF=0為關顯示(DISPLAY OFF)。DDF的狀態是指令DISPLAY ON/OFF和RST訊號控制的。

5.XY地址計數器

XY地址計數器是一個9位計數器。高3位是X地址計數器,低6位為Y地址計數器,XY地址計數器實際上是作為DDRAM的地址指標,X地址計數器為DDRAM的頁指標,Y地址計數器為DDRAM的Y地址指標。

X地址(頁地址,頁的概念遲點會解釋)計數器是沒有記數功能的,只能用指令設定。

Y地址(列地址)計數器具有迴圈記數功能,各顯示資料寫入後,Y地址自動加1,Y地址指標從0到63。

6.顯示資料RAM(DDRAM)

DDRAM是儲存圖形顯示資料的。資料為1表示選擇顯示,資料為0表示選擇非顯示。DDRAM與地址和顯示位置的關係見DDRAM地址表。

7.Z地址計數器

Z地址計數器是一個6位計數器,此計數器具備迴圈記數功能,它是用於顯示行掃描同步。當一行掃描完成,此地址計數器自動加1,指向下一行掃描資料,RST復位後Z地址計數器為0。

Z地址計數器可以用指令DISPLAY START LINE預置。因此,顯示螢幕的起始行就由此指令控制,即DDRAM的資料從哪一行開始顯示在螢幕的第一行。此模組的DDRAM共64行,螢幕可以迴圈滾動顯示64行。

12864LCD的指令系統

    該類液晶顯示模組(即KS0108B及其相容控制驅動器)的指令系統比較簡單,總共只有七種。其指令表如表2所示:

指令名稱

控制訊號

控制程式碼

R/W

RS

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

顯示開關

0

0

0

0

1

1

1

1

1

1/0

顯示起始行設定

0

0

1

1

X

X

X

X

X

X

頁設定

0

0

1

0

1

1

1

X

X

X

列地址設定

0

0

0

1

X

X

X

X

X

X

讀狀態

1

0

BUSY

0

ON/OFF

0

0

0

0

寫資料

0

1

寫資料

讀資料

1

1

讀資料

1、 顯示開/關指令 

R/W RS

DB7 DB6 DB5 DB4 DB3DB2DB1 DB0

0  0

0 0 1 1 1 1 1  1/0

當DB0=1時,LCD顯示RAM中的內容;DB0=0時,關閉顯示。

2、顯示起始行(ROW)設定指令

R/W RS

DB7 DB6 DB5 DB4 DB3DB2DB1 DB0

0  0

1 1顯示起始行(0~63)

該指令設定了對應液晶屏最上一行的顯示RAM的行號,有規律地改變顯示起始行,可以使LCD實現顯示滾屏的效果。

3、頁(PAGE)設定指令

R/W RS

DB7 DB6 DB5 DB4 DB3DB2DB1 DB0

0  0

1 0 1 1 1頁號(0~7)

顯示RAM共64行,分8頁,每頁8行。

4、列地址(Y Address)設定指令

R/W RS

DB7 DB6 DB5 DB4 DB3DB2DB1 DB0

0  0

0 1顯示列地址(0~63)

設定了頁地址和列地址,就唯一確定了顯示RAM中的一個單元,這樣MPU就可以

用讀、寫指令讀出該單元中的內容或向該單元寫進一個位元組資料。

5、讀狀態指令

R/W RS

DB7 DB6 DB5 DB4 DB3DB2DB1 DB0

1  0

BUSY 0 ON/OFF  0 0 0 0

該指令用來查詢液晶顯示模組內部控制器的狀態,各參量含義如下:

BUSY:  1-內部在工作   0-正常狀態

ON/OFF:1-顯示關閉     0-顯示開啟

:  1-正常狀態     0- 復位狀態

在BUSY和狀態時,除讀狀態指令外,其它指令均不對液晶顯示模組產生作用。

在對液晶顯示模組操作之前要查詢BUSY狀態,以確定是否可以對液晶顯示模組進行操作。

6、寫資料指令

R/W RS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0  1

寫資料

7、 讀資料指令 

R/W RS

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

1  1

讀顯示資料

    讀、寫資料指令每執行完一次讀、寫操作,列地址就自動增一。必須注意的是,進行讀操作之前,必須有一次空讀操作,緊接著再讀才會讀出所要讀的單元中的資料。

12864由兩個完全相同的左右半屏拼成,兩個半屏的顯示通過CS1和CS2來選擇,如CS1=0、CS2=1時選擇左半屏顯示,每頁佔8行(指令0xb8~0xbf分別指定頁0~頁7地址);

寫入液晶的資料在屏上為縱向顯示,如在指定位置(頁0第0列)顯示12H:

0xb8 指定頁0

0x40 指定列0

0x12 送入資料,該資料的最高位對應“該頁該列”最下端的點(第0行)

下面以“你”字為例,分析其字模(16*16點陣,佔兩頁位置)

從最左邊上半部開始

上頁字模0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00

下頁字模0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00