LMB-018A显示模块的原理及与DSP的接口
摘要:LMB-018A是深圳拓微电子有限公司推出的内含控制器和驱动器的点阵式液晶显示模块。文中介绍了该模块的原理及功能,给出了其与DSP接口的硬件电路和软件设计方法。
关键词:液晶显示模块;DSP;LMB-018A
与LED显示方式相比液晶显示器件具有工作电压低、功耗小、显示信息量大、寿命长、不产生电磁辐射污染,而且可显示复杂的文字及图形等优点特别适合在低功耗设备中应用,因此在移动通讯、仪器仪表、电子设备、家用电器等方面有着日益广泛的应用。本文介绍的LMB-018A点阵式图形液晶显示模块是深圳拓微(TOPWAY)电子有限公司推出的、内藏驱动器和控制器的液晶显示模块。
1 LMB-018A的工作原理
LMB-018A由一块128×64的点阵液晶屏和控制芯片及其辅助电路组成,其原理图如图1所示。
1.1 端口功能
LMB-018A的接口有8位三态数据线D0~D7、命令数据线A0、串行并行接口选择端P/S、片选线CS1、CS2以及读写控制线WR(R/ W)和RD(E)等。
1.2 关键信号说明
在LMB-018A的主要引出信号中,A0信号用于指示LMB-018A模块接收或送出的信息是数据,还是指令状态信息。A0为1表示当前信息为数据,A0为0则表示当前信息为指令码。R/ W和E分别为该模块的读写信号和使能信号,它们均为高电平有效。D0~D7为数据线,三态。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 LMB-018A液晶显示模块的应用
2.1 LMB-018A和DSP的接口
TI公司的TMS320LF2407 DSP开发板结构紧凑,板上资源简洁实用,相配的DSP开发调试软件CCS(Code Composer Studio)功能强大、使用方便。开发板上将TMS320LF2407的所有信号地址总线、数据总线、控制信号、JTAG测试/仿真信号(都已引出)用户可以很容易地利用这些信号搭建配置目标硬件系统并使用CCS进行编程调试。本文就是利用TMS320LF2407丰富的I/O口与点阵液晶显示模块LMB-018A相连接同时在此基础上进行仪器的软件开发和调试。图2是LMB-018A液晶显示模块和TMS320LF2407 DSP的接口电路。
2.2 LMB-018A和DSP的接口软件设计
图3是程序初始化流程和向模块写显示数据的主要流程。通常在A0=0CS1=0,CS2=1RD=0WR=1的条件下CPU将从LMB-018A的数据线上读出状态信息。本模块一般不用读模块的状态来查询是否能往模块中写数据,只要每次向模块写数据后都保持一定的延时就能达到模块的要求。而当A0=1,CS1=0,CS2=1,WR=1,RD=0时,CPU便只能从LMB-018A数据线上读数据。如果A0=1,而CS1=0,CS2=1,RD=1,WR=0,那么CPU则可以向LMB-018A写入数据。而当A0=0,CS1=0,CS2=1,RD=1,WR=0时,CPU可以向LMB-018A写入命令字。在读写有关数据时首先要把LMB-018A指令写入指令寄存器中,并由它选通所需的外部RAM或寄存器通道,然后再读写所需数据。
主控CPU通过接口将指令写入到液晶模块以设置适当的工作方式或控制液晶模块实现某种功能。其常用指令如图4所示。
javascript:window.open(this.src);" style="cursor:pointer;"/>
下面是LMB-018A和DSP进行接口的初始化子程序及向显示模块写显示数据的主要程序清单:
;初始化液晶显示器子程序
LCDINITLDP #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 ;设置寄存器电压
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
;写命令子程序
COMWELDP #0E1H
LACL PCDATDIR
AND #A0_L ;A0=0:控制命令
SACL PCDATDIR
LACL PBDATDIR
OR #0FF00H ;IOPB[0~7]设置为输出
AND #0FF00H ;IOPB[0~7]=0
LDP #DP_USER
OR LCDCMD ;IOPB[0~7]=LCDCMD
LDP #0E1H
SACL PBDATDIR ;送入
CALL Enable
RET
;写数据子程序
DWE:LDP #0E1H
LACL PCDATDIR
OR #A_H ;A0=1
SACL PCDATDIR
LACL PBDATDIR
OR #0FF00H ;IOPB[0~7]设置为输出
AND #0FF00H ;IOPB[0~7]=0
LDP #DP_USER
OR LCDDATA ;IOPB[0~7]=LCDDATA
LDP #0E1H
SACL PBDATDIR 送显示的数据
CALL Enable
MAR *,AR7
ADRK #1 ;列地址增1,以便向下一列写数
LDP #DP_USER
RET
图4
通常的LMB-018A程序包括写LCD命令、移动光标到指定位、在当前位显示LCD数据子程序等,利用该系统能实现自动翻屏,动态显示数据或图形。该模块原理简单,具有子程序调用方便、能自建字符串库、可观性强等优点,实现起来比较方便。