LMB-018A顯示模塊的原理及與DSP的接口
摘要:LMB-018A是深圳拓微電子有限公司推出的內(nèi)含控制器和驅(qū)動(dòng)器的點(diǎn)陣式液晶顯示模塊。文中介紹了該模塊的原理及功能,給出了其與DSP接口的硬件電路和軟件設(shè)計(jì)方法。
與LED顯示方式相比?液晶顯示器件具有工作電壓低、功耗小、顯示信息量大、壽命長、不產(chǎn)生電磁輻射污染,而且可顯示復(fù)雜的文字及圖形等優(yōu)點(diǎn)?特別適合在低功耗設(shè)備中應(yīng)用,因此在移動(dòng)通訊、儀器儀表、電子設(shè)備、家用電器等方面有著日益廣泛的應(yīng)用。本文介紹的LMB-018A點(diǎn)陣式圖形液晶顯示模塊是深圳拓微(TOPWAY)電子有限公司推出的、內(nèi)藏驅(qū)動(dòng)器和控制器的液晶顯示模塊。
1?。蹋停拢埃保福恋墓ぷ?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/原理">原理
LMB-018A由一塊12864的點(diǎn)陣液晶屏和控制芯片及其輔助電路組成,其原理圖如圖1所示。
1.1 端口功能
LMB-018A的接口有8位三態(tài)數(shù)據(jù)線D0~D7、命令數(shù)據(jù)線A0、串行并行接口選擇端P/S、片選線CS1、CS2以及讀寫控制線WR(R/ W)和RD(E)等。
1.2 關(guān)鍵信號(hào)說明
在LMB-018A的主要引出信號(hào)中,A0信號(hào)用于指示LMB-018A模塊接收或送出的信息是數(shù)據(jù),還是指令狀態(tài)信息。A0為1表示當(dāng)前信息為數(shù)據(jù),A0為0則表示當(dāng)前信息為指令碼。R/ W和E分別為該模塊的讀寫信號(hào)和使能信號(hào),它們均為高電平有效。D0~D7為數(shù)據(jù)線,三態(tài)。
2 LMB-018A液晶顯示模塊的應(yīng)用
2.1 LMB-018A和DSP的接口
TI公司的TMS320LF2407 DSP開發(fā)板結(jié)構(gòu)緊湊,板上資源簡潔實(shí)用,相配的DSP開發(fā)調(diào)試軟件CCS(Code Composer Studio)功能強(qiáng)大、使用方便。開發(fā)板上將TMS320LF2407的所有信號(hào)?地址總線、數(shù)據(jù)總線、控制信號(hào)、JTAG測(cè)試/仿真信號(hào)(都已引出)用戶可以很容易地利用這些信號(hào)搭建配置目標(biāo)硬件系統(tǒng)?并使用CCS進(jìn)行編程調(diào)試。本文就是利用TMS320LF2407豐富的I/O口與點(diǎn)陣液晶顯示模塊LMB-018A相連接?同時(shí)在此基礎(chǔ)上進(jìn)行儀器的軟件開發(fā)和調(diào)試。圖2是LMB-018A液晶顯示模塊和TMS320LF2407 DSP的接口電路。
2.2 LMB-018A和DSP的接口軟件設(shè)計(jì)
圖3是程序初始化流程和向模塊寫顯示數(shù)據(jù)的主要流程。通常在A0=0?CS1=0,CS2=1?RD=0?WR=1的條件下?CPU將從LMB-018A的數(shù)據(jù)線上讀出狀態(tài)信息。本模塊一般不用讀模塊的狀態(tài)來查詢是否能往模塊中寫數(shù)據(jù),只要每次向模塊寫數(shù)據(jù)后都保持一定的延時(shí)就能達(dá)到模塊的要求。而當(dāng)A0=1,CS1=0,CS2=1,WR=1,RD=0時(shí),CPU便只能從LMB-018A數(shù)據(jù)線上讀數(shù)據(jù)。如果A0=1,而CS1=0,CS2=1,RD=1,WR=0,那么CPU則可以向LMB-018A寫入數(shù)據(jù)。而當(dāng)A0=0,CS1=0,CS2=1,RD=1,WR=0時(shí),CPU可以向LMB-018A寫入命令字。在讀寫有關(guān)數(shù)據(jù)時(shí)?首先要把LMB-018A指令寫入指令寄存器中,并由它選通所需的外部RAM或寄存器通道,然后再讀寫所需數(shù)據(jù)。
主控CPU通過接口將指令寫入到液晶模塊以設(shè)置適當(dāng)?shù)墓ぷ鞣绞交蚩刂埔壕K實(shí)現(xiàn)某種功能。其常用指令如圖4所示。
下面是LMB-018A和DSP進(jìn)行接口的初始化子程序及向顯示模塊寫顯示數(shù)據(jù)的主要程序清單:
;初始化液晶顯示器子程序
LCDINIT?LDP #0E1H
LACL PCDATDIR
OR #0010H
AND #0FFF3H ?;E=1 R/ W=0 A0=0
SACL PCDATDIR
LDP #DP_USER
SPLK #0A3H,LCDCMD ;置LCD偏壓比
CALL COMWE
LDP #DP_USER
SPLK #0A0H,LCDCMD ?;ADC選擇
CALL COMWE
LDP #DP USER
SPLK #89H,LCDCMD ;設(shè)置寄存器電壓
CALL COMWE
LDP #DP USER
SPLK #02FH,LCDCMD ;置供電控制
CALL COMWE
LDP #DP_USER
SPLK #0A6H,LCDCMD ;正常顯示
CALL COMWE
LDP #DP_USER
SPLK #0AFH,LCDCMD ;打開顯示
CALL COMWE
RET
;寫命令子程序
COMWE?LDP #0E1H
LACL PCDATDIR
AND #A0_L ?;A0=0:控制命令
SACL PCDATDIR
LACL PBDATDIR
OR #0FF00H ;IOPB[0~7]設(shè)置為輸出
AND #0FF00H ?;IOPB[0~7]=0
LDP #DP_USER
OR LCDCMD ;IOPB[0~7]=LCDCMD
LDP #0E1H
SACL PBDATDIR ;送入
CALL Enable
RET
;寫數(shù)據(jù)子程序
DWE:LDP #0E1H
LACL PCDATDIR
OR #A_H ;A0=1
SACL PCDATDIR
LACL PBDATDIR
OR #0FF00H ;IOPB[0~7]設(shè)置為輸出
AND #0FF00H ;IOPB[0~7]=0
LDP #DP_USER
OR LCDDATA ;IOPB[0~7]=LCDDATA
LDP #0E1H
SACL PBDATDIR ?送顯示的數(shù)據(jù)
CALL Enable
MAR *,AR7
ADRK #1 ;列地址增1,以便向下一列寫數(shù)
LDP #DP_USER
RET
圖4
評(píng)論