LMB-018A顯示模塊的原理及與DSP的接口
摘要:LMB-018A是深圳拓微電子有限公司推出的內(nèi)含控制器和驅(qū)動(dòng)器的點(diǎn)陣式液晶顯示模塊。文中介紹了該模塊的原理及功能,給出了其與DSP接口的硬件電路和軟件設(shè)計(jì)方法。
關(guān)鍵詞:液晶顯示模塊;DSP;LMB-018A 與LED顯示方式相比?液晶顯示器件具有工作電壓低、功耗小、顯示信息量大、壽命長(zhǎng)、不產(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)器和控制器的液晶顯示模塊。 LMB-018A由一塊128×64的點(diǎn)陣液晶屏和控制芯片及其輔助電路組成,其原理圖如圖1所示。 1.1 端口功能 LMB-018A的接口有8位三態(tài)數(shù)據(jù)線D0~D7、命令數(shù)據(jù)線A0、串行并行接口選擇端P/S、片選線CS1、CS2以及讀寫(xiě)控制線WR(R/ W)和RD(E)等。 1.2 關(guān)鍵信號(hào)說(shuō)明 在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分別為該模塊的讀寫(xiě)信號(hào)和使能信號(hào),它們均為高電平有效。D0~D7為數(shù)據(jù)線,三態(tài)。 2.1 LMB-018A和DSP的接口 TI公司的TMS320LF2407 DSP開(kāi)發(fā)板結(jié)構(gòu)緊湊,板上資源簡(jiǎn)潔實(shí)用,相配的DSP開(kāi)發(fā)調(diào)試軟件CCS(Code Composer Studio)功能強(qiáng)大、使用方便。開(kāi)發(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)行儀器的軟件開(kāi)發(fā)和調(diào)試。圖2是LMB-018A液晶顯示模塊和TMS320LF2407 DSP的接口電路。 2.2 LMB-018A和DSP的接口軟件設(shè)計(jì) 圖3是程序初始化流程和向模塊寫(xiě)顯示數(shù)據(jù)的主要流程。通常在A0=0?CS1=0,CS2=1?RD=0?WR=1的條件下?CPU將從LMB-018A的數(shù)據(jù)線上讀出狀態(tài)信息。本模塊一般不用讀模塊的狀態(tài)來(lái)查詢是否能往模塊中寫(xiě)數(shù)據(jù),只要每次向模塊寫(xiě)數(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寫(xiě)入數(shù)據(jù)。而當(dāng)A0=0,CS1=0,CS2=1,RD=1,WR=0時(shí),CPU可以向LMB-018A寫(xiě)入命令字。在讀寫(xiě)有關(guān)數(shù)據(jù)時(shí)?首先要把LMB-018A指令寫(xiě)入指令寄存器中,并由它選通所需的外部RAM或寄存器通道,然后再讀寫(xiě)所需數(shù)據(jù)。 主控CPU通過(guò)接口將指令寫(xiě)入到液晶模塊以設(shè)置適當(dāng)?shù)墓ぷ鞣绞交蚩刂埔壕K實(shí)現(xiàn)某種功能。其常用指令如圖4所示。 ;初始化液晶顯示器子程序 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 ;打開(kāi)顯示 CALL COMWE RET ;寫(xiě)命令子程序 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 ;寫(xiě)數(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,以便向下一列寫(xiě)數(shù) LDP #DP_USER RET |