範文齋

位置:首頁 > 行業範文 > 多媒體

單片機的圖形液顯示模塊接口技術操作方法

多媒體2.9W

摘要:詳述PIC16F877單片機的MG-12232圖形點陣式液晶顯示器的硬件接口電路特點和接口軟件編程方法。

單片機的圖形液顯示模塊接口技術操作方法

關鍵詞:PIC16F877LCD接口

引言

由於液晶顯示器(LCD)具有功耗低、體積小、質量輕、超薄等其他顯示器無法比擬的優點,它廣泛用於各種智能型儀器和低功耗電子產品中。點陣式(或圖形式)LCD不僅可以顯示字符、數字,還可以顯示各種圖形、曲線及漢字,並且可以實現屏幕上下左右滾動、動畫、閃爍、文本特徵顯示等功能,用途十分廣泛。本文在簡介液晶顯示器MG-12232的驅動器SED1520F0A的結構、功能的基礎上,介紹了PIC16F877單片機的LCD硬件接口電路和軟件編程特點。

一、PIC16F877與MG-12232的硬件接口電路

1520F0A的接口信號

SED1520F0A屬行列驅動及控制合一的小規模液晶顯示驅動芯片,電路簡單,經濟實用,內含振盪器,只須外接振盪電阻即可工作。模塊工作的穩定性好。SED1520F0A與微處理器的接口信號如下。

DB0~DB7:數據總線。

A0:數據/指令選擇信號。A0=1表示出現在數據總線上的是數據;A0=0,表示出現在數據總線上的是指令或讀出的狀態。

RES:接口時序類型選擇。RES=1為M6800時序,其操作信號是E和R/W;RES=0為Intel8080時序,操作信號是RD和WR。

RD(E):在Intel8080時序時為讀,低電平有效;在M6800時序時為使能信號,是個正脈衝,在下降沿處為寫操作,在高電平時為讀操作。

WR(R/W):在Intel8080時序時為寫,低電平有效;在M6800時序時為讀、寫選擇信號,R/W=1為讀,R/W=0為寫。

SED1520F0A與兩種總線的接口信號和時序的`詳細資料見液晶顯示模塊使用手冊。

-12232模塊的引腳説明

MG-12232模塊共有18個引腳,各引腳定義如表1所列。

表1MG-12232模塊的引腳定義

序號符號狀態功能説明1Vcc-邏輯電源正2GND-邏輯電源地3V0-液晶顯示驅動電源4RES-接口時序類型選擇5E2輸入主工作方式IC使能信號6E2輸入從工作方式IC使能信號7R/W輸入讀/寫選擇信號8A0輸入寄存器選擇信號9~16DB0~DB7三態數據總線(低位)17SLA-18SLK-背光燈負電源

16F877與MG-12232模塊的接口電路

現以功能強、價格低的PIC16F877為例説明PIC與MG-12232模塊的硬件接口電路。其接口控制時序採用M6800操作時序,這樣SED1520F0A引出的控制信號R/W,A0,E1和E2由PIC16F877的I/O端口portb的4個腳控制。接口電路如圖1所示。圖中利用可調電阻R3實現液晶的背光亮度調節,直接用電阻R2驅動液晶的背光燈。由於PIC16F877的位操作指令豐富,所以用軟件不難模擬出M6800操作時序。

二、接口軟件編程

1520F0A指令集

SED1520F0A液晶顯示驅動器有13條指令。表2所列的以與M6800系列MPU接口為例(RES=1)而總結出的指令。

表2SED1520F0A指令集

指令名稱控制信號控制代碼R/WA0D7D6D5D4D3D2D1D0顯示開/關指令001010111I/O顯示起始行設置00110顯示起行(0~31)設置頁地址00101110頁地址(0~3)設置列地址00

列地址(0~79)

讀狀態指令10BUSYADCOFF/ONRESET0000寫數據01顯示的數據讀數據11顯示的數據ADC選擇指令0010100000/1靜態驅動開/關0010100100/1佔空比選擇0010101000/1改寫開始指令0011100000改寫結束指令0011101110復位0011100010

-12232模塊的編程

下面是以圖1的接口電路為例編寫的只含E1主方式的程序(表1中E1=1,E2=0)。E2從方式(表1中E1=0,E2=1)的程序類推。

系統程序的初始化部分應該對程序中用到的寄存器和臨時變量作説明,如:

lcdfialequ0x20;存放標誌位

sbdataequlcdflag+1;存放顯示數據

clmaddequsbdata+1;存放列地址

pageaddequclmadd+1;存放頁地址

pagenumequpageadd+1;存放總頁數

clmsumequpagenum+1;存放總列數

intscodeequclmsum+1;存放指令代碼

讀液晶顯示器狀態子程序

StebsfSTATUS,RP0;選中存儲區1

movlw0xff

movwfTRISD;設置D口為輸入

bcfSTATUS,RP0;選中存儲區0

bsfPORTB,4;E1=1

bsfPORTB,1;R/W=1

bcfPORTB,0;A0=0

TaemovfPORTD,0;將狀態字讀入W中

movwflcdfiag;將W中的狀態字存入lcdfiag中

btfsclcdflag,7;判斷D7位是否為0

gotoTae;D7=1,為忙狀態

return

對液晶顯示器發指令子程序(指令保存在W寄存器中)

Cwe

Movwfintscode;指令暫存intscode

BcfPORTB,1;R/W=0

BcfPORTB,0;A0=0

mo

vfintscode,0

movwfPORTD

bcfPORTB,4;E1=0寫入指令

return

對液晶顯示器寫數據子程序(數據保存在W寄存器中)

Dwe

Movwfsbdata;數據暫存sbdata

Movfclmadd,0

CallCwe;設置列地址

CallSte

BsfSTATUS,RP0

clrfTRISD;設置D口為輸出方式

bcfSTATUS,RP0

bsfPORTB,4;E1=1

bcfPORTB,1;R/W=0

bsfPORTB,0;A0=1

movfsbdata,0

movwfPORTD

bcfPORTB,4;E1=0,寫入數據

callSte

inctclmadd,1;列地址加1

return

液晶顯示器開顯示、關顯示和清屏子程序

Disp;開E1顯示

movlw0xal;將控制命令放在W中

callCwe

bsfPORTB,4;E1=1

callSte;判是否忙

bsfSTATUS,RP0

clrfTRISD;設置D口輸出方式

bcfSTATUS,RP0

bsfPORTB,4;E1=1

bsfPORTB,1;R/W=1

bcfPORTB,0;A0=0

bsfSTATUS,RP0

movlw0xff

movwfTRISD;設置D口輸入方式

bcfSTATUS,RP0

movfPORTD,0

movwflcdflag;讀入狀態並查詢

btfsclcdflag,5;是否確定打開

gotoDisp

return

Disoff;關E1顯示

movlw0xae;控制命令入在W中

callCwe

bsfPORTB,4;E1=1

bsfPORTB,1;R/W=1

bcfPORTB,0;A0=0

bsfSTATUS,RP0

movlw0xff

movwfTRISD

bcfSTATUS,RP0

movfPORTD,0

movwflcdfiag;讀入狀態並查詢

btfsslcdfiag,5;判是否關閉

gogoDisoff

return

Cler;清屏

movlw0xb8;設置頁地址代碼

movwfpageadd

movlw0x04

movwfpagenum;設置總頁數

clr1movfpageadd,0

callCwe

movlw0x50;設置總列數

movwfclmsum;80或60列

movlw0x00

movwfclmadd;設置起始列

clr2movlw0x00

callDwe;寫入00H

clardecfszclmsum,1;本頁未清完

gotopageadd,1;頁號增1

decfszpagenum,1;4頁未清完

gotoclr1;返回繼續

return

有了以上的通用子程序,就可以構造出各種顯示程序,如字符、漢字、曲線等。當然,在這些程序執行前必須對液晶進行初始化。初始化的順序為:關顯示→正常顯示驅動設置→佔空比設置→復位→ADC選擇→清屏→開顯示。程序如下:

初始化子程序

Lcdinit

callDisoff;關顯示

movlw0xa4;靜態顯示驅動

callCwe

movlw0xe2;復位

callCwe

movlw0xa0;ADC選擇正常輸出

callCwe

movlw0x9;佔空比為1/32

callCwe

callCler;清零

callDisp;開顯示

return

對於字符、漢字和曲線顯示的原理是類似的。它們都是以字節為單位進行顯示。關鍵在於形成字模庫時必須保證每個上字節數據的最高位是與每一列最下面一個點相對應,最低位與每一列最上面點相對應。當然,這可以用專門的軟件來生成相應的代碼,然後再將這些代碼逐字節地寫到相應的頁和列。

結束語

PIC單片機與液晶模塊的接口只在硬件上滿足液晶模塊的接口要求,軟件上能夠模擬出要求的時序,並且初始化正確後,就可以隨心所欲地顯示信息了。

以上接口電路和程

序在PIC試驗板上調試通過,可作為其他單片機與LCD接口的參考。