NOKIA移动电话液晶显示模块LPH7366原理及其应用
(3)设置显示存储器DDRAM的列地址;
扩展指令集包含下列指令:
(1)设置温度系数;
(2)设置偏置系统;
(3)设置工作电压寄存器。
表1给出了模块控制器指令集标志位的含义,表2是对该指令集的详细描述。该液晶模块的工作电压可由软件设置,其数值依赖于所选择的液晶。模块温度系数、偏置电压的工作原理及设置方法可参见有关参考文献,用户可根据显示的效果进行调整,本文的设置仅作参考。
表1 PCD8544指令集标志位说明
位 | 0 | 1 |
PD | 正常模式 | 低功耗模式 |
V | 水平寻址 | 垂直寻址 |
H | 基本指令集 | 扩展指令集 |
D和E | ||
00 | 白屏 | |
01 | 正常显示 | |
10 | 全显 | |
11 | 反转 | |
TC1和TC0 | ||
00 | 温度系数1 | |
01 | 温度系数2 | |
10 | 温度系数3 | |
11 | 温度系数4 |
表2 PCD8544指令集
指 令 | D/C | 控 制 字 | 说 明 | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
(H=0或1) | ||||||||||
NOP | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 空操作 |
功能设置 | 0 | 0 | 0 | 0 | 0 | 0 | PD | V | H | 低功耗模式,写入模式,指令集选择 |
写数据 | 1 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 写数据到DDRAM |
(H=0) | ||||||||||
保 留 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | × | × | 不 用 |
0 | 0 | 0 | 0 | 1 | × | × | × | × | ||
显示控制 | 0 | 0 | 0 | 0 | 0 | 1 | D | 0 | E | 显示模式配置 |
设Y地址 | 0 | 0 | 1 | 1 | 0 | 0 | Y2 | Y1 | Y0 | 设Y地址,0Y5 |
设X地址 | 0 | 1 | X6 | X5 | X4 | X3 | X2 | X1 | X0 | 设X地址,0X83 |
(H=1) | ||||||||||
保 留 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 不 用 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | × | ||
0 | 0 | 0 | 0 | 0 | 1 | × | × | × | ||
0 | 0 | 1 | × | × | × | × | × | × | ||
温度控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | TC1 | TC0 | 设温度系数 |
偏置 | 0 | 0 | 0 | 0 | 1 | 0 | BS2 | BS1 | BS0 | 设偏置电压 |
设Vop | 0 | 1 | VOP6 | VOP5 | VOP4 | VOP3 | VOP2 | VOP1 | VOP0 | 设置液晶工作电压 |
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;javascript:window.open(this.src);" style="cursor:pointer;"/>
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现已可以大量生产,因此该液晶显示模块的价格非常低廉,而且由于其具有结构紧凑、耗电少、操作简便等特点,因而非常适合于便携式设备的应用和开发。