摘要:LPH7366是一种低功耗、串行通信接口液晶显示模块,可广泛应用于移动电话或便携式设备的液晶显示系统中。文中介绍了LPH7366显示模块的功能原理及操作方式,给出了基于MCS51单片机的控制软件程序。 关键词:液晶显示;移动电话;单片机;LPH7366 1 引言 LPH7366是NOKIA公司生产的可用于其6150、6100等系列移动电话的液晶显示模块,国内厂家也生产有类似的兼容产品。该产品除应用于移动电话外,也可广泛应用于各类便携式设备的显示系统。与其它类型的产品相比,该模块具有以下特点: ●采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9条。 ●采用多种串行通信协议进行数据通信(如MCS51单片机的串口模式0以及SPI等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。 ●可通过导电斑马条连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。 ●LCD控制器/驱动器芯片已绑定到LCD晶片上,模块的体积很小。 ●采用低电压供电,正常显示时的工作电流在200μA以下,且具有掉电模式。 LPH7366的这些特点非常适合于电池供电的便携式通信设备和测试设备中。 LPH7366液晶显示模块采用Philips公司生产的PCD8544芯片为其内部控制器,可在单片IC上同时实现LCD的控制和驱动功能以及LCD电源和偏置电压产生功能。该IC具有很高的集成度,它不需要其它元件就可实现与微处理器的连接与通信。 LPH7366的引脚功能如下: SDIN:串行数据输入线; SCLK:串行时钟输入,速率为0.0~4.0Mbps; D/ C:模式选择,该端为高电平时输入控制命令,为低电平输入显示数据; SCE:芯片使能,低有效; OSC:外部时钟输入端,当使用内部时钟时,该引脚接地; RES:复位输入端,低电平可复位控制器; VLCD:LCD电源升压电容接入端,接10μF电容可用于产生LCD工作电压; VDD1,VDD2:电源输入端,电压为2.7~3.3V; VSS:电源地。 3.1 DDRAM寻址模式 模块控制器PCD8544内有48×84bit显示数据存储器DDRAM(Display Data RAM),因而具有矩阵式图形显示功能。通过串行接口命令可直接访问该存储器,以更新显示数据。控制器内部处理总线采用8b宽度,因而可通过DDRAM组成6×84b的矩阵。整个显示数据区可划分为6行,每行84个字节。 每个显示数据字节由行地址和列地址共同寻址,行地址范围为Y0~Y5,列地址范围为X0~X83。通过修改行、列地址的指针可访问任意字节的显示数据。此外,PCD8544内部还设置了地址指针自动增加功能,这样,每次显示数据字节写入后,指针会自动寻址跳到下一字节,从而加快显示速度。地址指针自动增加功能有如下两种模式: (1)垂直寻址方式(逐列显示模式) 这种寻址模式如图1所示,当寻址控制位V为1时,每次写入显示数据后,行地址指针Y增1,Y到5后自动清零,列地址X增1,并寻址到下一列。当寻址到最后一行(Y为5)的最后一列(X=83)时,行、列地址均自动清零,并返回到首行首列; (2)水平寻址方式(逐行显示模式) 这种寻址模式的示意图如图2所示,与垂直寻址方式类似,当寻址控制位V为0时,每次写入显示数据后X增1,当X为83后自动清零,Y增1,寻址到下一行。当寻址到最后一行(Y为5)的最后一列(X=83)时,行、列地址均自动清零,并返回到首行首列。 3.2 控制指令和数据格式 对液晶控制器的访问分为控制指令和显示数据两种操作模式,两种模式可由D/ C引脚来控制。当D/ C为高电平时,表明当前写入的字节是显示数据,当D/ C为低电平时,表明当前写入的字节是控制指令。在发送每个字节最后一个比特时,可由微处理器读取D/ C引脚的状态,其工作时序如图3所示。在写入每个显示数据后,地址指针会自动增加,因此在设定了起始指针后,可连续写入显示数据。控制指令和显示数据均由8比特组成,MSB位首先发送,在每个SCLK的上升沿,SDIN被采样。 指令和数据可以按任意需要的先后顺序写入。当SCE为高时,控制器的串行接口被初始化,此时由于SCLK以及SDIN引脚的变化不会对控制器产生任何作用,因此,串行接口不会消耗电能。由于系统在SCE的下降沿使能串行口,因此,在该引脚保持低电平期间,可对串行口进行操作。 3.3 模块控制器指令集 LPH7366模块控制器的指令集分为基本指令集和扩展指令集,可通过修改功能设置控制寄存器中的H标志位来选择使用的指令集。当H为0时,选择基本指令集;当H为1时,选择扩展指令集。但功能设置控制寄存器及写入数据寄存器不受此标志影响。LPH7366的基本指令集包含下列指令: (1)设置显示配置; (2)设置显示存储器DDRAM的行地址; (3)设置显示存储器DDRAM的列地址; 扩展指令集包含下列指令: (1)设置温度系数; (2)设置偏置系统; (3)设置工作电压寄存器。 表1给出了模块控制器指令集标志位的含义,表2是对该指令集的详细描述。该液晶模块的工作电压可由软件设置,其数值依赖于所选择的液晶。模块温度系数、偏置电压的工作原理及设置方法可参见有关参考文献,用户可根据显示的效果进行调整,本文的设置仅作参考。
表2 PCD8544指令集
4 与单片机的接口及显示编程 LPH7366显示模块可与多种串行接口进行通信,下面介绍其与MCS51单片机的通信接口方法。显示模块的电源输入VDD1、VDD2通常连到一起接到2.7~3.3V直流电源上,VLCD与电源地之间应接10μF电解电容。使用内部时钟时,应将OSC接地。图4所示是单片机与LPH7366显示模块的接口图。 如果单片机的工作电压为5V,则需在连接线中串入100Ω左右的电阻,而如果单片机的工作电压为3V,则可直接连接。工作时?将单片机串行口设置为模式0,并通过向SBUF寄存器写入数据来完成8位串行数据的发送,RXD用以输出串行数据,TXD则产生串行时钟,其余控制引脚可利用P1或P3口的I/O线产生控制信号。以下代码为显示编程范例,运行该程序后?屏幕上可显示大写的‘PH’字符。 define uchar unsigned char define cflag 0x00 define dflag 0x01 define set_xadr 0x80 define set_yadr 0x40 sbit SCK=P3^0; sbit SDIN=P3^1; sbit SCE=P1^0; sbit DC=P1^1; sbit RES=P1^2; char_table[8]= { 0x1f,0x05,0x07,0x00, /*字符‘P'点阵*/ 0x1f,0x04,0x1f,0x00, /*字符‘H'点阵*/ };? main { uchar i; uchar x,y; /*定义x,y地址指针*/ mode_initiation(); x=0; y=0; write_byte(cflag,set_xadr + x); write_byte(cflag,set_yadr + y); for(i=0;i<8;i++){ write_byte(dflag,char_table[i]);?? } } 模式初始化函数 void mode_initiation(void) { ES=0; RES=1; /*复位液晶控制器*/; SCON=0x02; /*设置串行口为模式0*/; write_byte(cflag,0x21); /*PD=0,V=0,选择扩展指令集*/ write_byte(cflag 0x10); /*设置LCD工作电压*/ write_byte(cflag 0x20); /*PD=0,V=0,选择基本指令集*/ write_byte(cflag 0x0c); /*设置显示正常的工作模式*/ } 写入数据字节 void write_byte(uchar f,uchar b) { if(f==0)DC=0; else DC=1; SCE=0 SBUF=b; TI=0;);?? SCE=1 } 5 结束语 由于LPH7366现已可以大量生产,因此?该液晶显示模块的价格非常低廉,而且由于其具有结构紧凑、耗电少、操作简便等特点,因而非常适合于便携式设备的应用和开发。 |