一、PCF8837功能和特点
PCF8837驱动电压和偏压生成电路包括电压乘法器、偏压生成电路1、偏压生成电路2、行倍压电路,它们共生成V1、V2、V3、Vc、MV1、MV2、MV3 7个电压值,其中偏压生成电路1通过 SETVOP指令对VPR编程生成电压V2,公式为:
V2=a+b × VOP,(a=3.79,b=0.015,VOP=VT+VPR+(VCON-63)+ MVOP)
式中VT为附加的温度补偿参数,由传感器输出和TCVOPAB和TCVOPCD指令设定;VPR为主要的参考量,由SETVOP指令设定,范围14~214 dec;VCON 为对比度参数,由SETCON设置,范围为7位2进制数-63H~63H MMVOP是OTP中的预设偏移量.
偏压生成电路2通过生成电压V1,Vc,MV1,行倍压指令SETBS通过对VB模块编程在VBIASGEN模块生成电压V3、MV3,MV2由电源电压Vss供给,和Vss电压相同.
此外,PCF8837还可以分段设置温度补偿以及设置最佳对比度,消除来自周围的光线干扰,这些功能是在通过一次可编程(OTP,One-Time-Programmable)校准功能设置的.
PCF8837显示存储器为矩阵式寻址结构,它的1个单元为16位,代表1个显示像素的3色数据RGB.矩阵式存储器管理为局部图像显示和图像旋转显示提供了简便的方法.
PCF8837的寻址由行列地址指针X、Y共同决定,每组指针都配有两组可编程的地址寄存器:起始点地址寄存器XS和YS,结束点地址寄存器指针XE和YE.通过指令PTLAR可以设置有效显示区域的起始地址和结束地址,通过指令PTLON可以打开局部显示模式.指令PTLMCTL控制局部模式的N线反转功能和行选脉冲,提供局部显示的效果.通过指令MADCTL设置MY、MX、V、LAO、RGB来实现图像的旋转功能.MY、MX、V,LAO、RGB的取值和图像显示的关系如表1所示。
参数 | 0 | 1 |
MX | 图像正常 | 水平镜像颠倒 |
MY | 垂直镜像颠倒 | 图像正常 |
V | 水平寻址方式写存储器 | 垂直寻址方式写存储器 |
RGB | 显示数据顺序为R、G、B | 显示数据顺序为B、G、R |
二、PCF8837程序流程
图1为存储器实现图象旋转时的数据送显流程,X为显示数据行,Y为显示数据列.根据此流程图,要实现图像的逆时针旋转90°,只需要设定好需要显示的起始行和列以及结束的行和列,将MX、V和RGB的值取反,然后开局部显示即可.其他的显示效果也可以通过设置MADCTL指令的相应位来实现.通过指令VSCRDEF设置滚动模式列的定义以及滚动列的顶部和底部,SEP指令设置滚动模式起始行和启动滚动模式.PCF8837还提供休闲模式的开关,当不用显示时可以打开休闲模式,此时仅保留MSN数据,且频率降低,使驱动器的功率消耗减小.
三、PCF8837指令系统与软件编程
PCF8837支持两套不同的指令系统,通过ISS管脚设置指令0或1来选择,这里我们只介绍指令系统0,指令1只是和指令1代码不同,其功能是一样的,其中数据传送格式位如表2所示.
PCF有3种不同的数据格式支持不同的色阶:
(1)64*210色(16位)RGB 5-6-5位输人.数据来自于接口的16位直接存储于RAM 中.
(2)4*210色(12位)RGB 4-4-4位输入.数据来自于接口的12位,按照LUT图映射成16位后存储于RAM 中.
(3)256色(8位)RGB 3-3-2位输入.数据来自于接口的8位,按照可编程LUT图(RGBSET指令)映射成12位,再按照LUT图映射成16位后存储于RAM 中.
D/C | D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
8位 | R4 | R3 | R2 | R1 | R0 | G5 | G4 | G3 | ||||||||
8位 | G2 | G1 | G0 | B4 | B3 | B2 | B1 | B0 | ||||||||
16位 | R4 | R3 | R2 | R1 | R0 | G5 | G4 | G3 | G2 | G1 | G0 | B4 | B3 | B2 | B1 | B0 |
数据传送如果采用16位接口模式,那么数据格式(1)中一像素16位色阶信息仅需一步就可以传输到显示RAM.数据格式(2)中传送过来的R4、G5、G4、B4舍弃不用,数据格式(3)舍弃高8位.8位接口模式中一像素16位色阶信息需二步传输到数据锁存器再转送到显示RAM,如果只传送一位字节,则所传送的字节不送到RAM 中.采用数据格式(2)还可以分3步传送2个像素色阶信息.
PCF8837的OTP编程要设定的参数有显示器识别信息、分段温度补偿参数、驱动电压和偏压生成电路参数、分段帧频设置参数、N线反转间隔、行列充电时间、RGB相位混合偏移量、振荡器调整等等 .初始化程序中需要设定的量有局部标准显示模式、内部振荡器、显示对比度、电压器偏压值、接口模式、存储器控制等 .
当采用8位接口模式与51单片机如上图连接时,主要的编程如下(由于篇幅有限,这里省略了某些控制指令的设置,用户可根据实际需要添加设置):
//DEMO源程序
//写指令函数
void Write_com2188(unsigned char c1)
{RS=0;
CS2188=0;
LCD+RD=1;
WE=0;
P0=c1;
_nop_();
_nop_();
WE=1:
_nop_();
CS2188=1;
)
//写8位数据函数
void Write_data2188(unsigned char c1)
{RS=1;
CS2188=0;
LCD_RD=1;
WE=0;
P0=c1;
_nop_();
_nop_();
WE=1;
_nop_();
CS2188=1;
}
//初始化程序
void Init_lcd2188(unsigned char contrast)
{Write_com2188(0x01); //软件复位
DelayX10ms(10); //延时0.1s
Write_com2188(0x11); //休眠结束
Write_com2188(0x03); //倍压开
Write_com2188(0x29); //显示开
Write_com2188(0xc0); //选内部振荡器
Write_com2188(0x13); //标准模式开
Write_com2188(0x20); //反转关
Write_com2188(0x3a); //像素接口
Write_data2188(0x02); //8位
Write_com2188(0xb); //设置vop
Write_data2188(0x13); //vop数值
Write_com2188(0x25); //设置对比度
Write_data2188(contrast);//对比度数值
Write_com2188(0xc7);//设置偏压比
Write_com2188(0x01);//偏压比数值
Write_com2188(0x36);//MADCTL
Write_data2188(0x00);//正向
Write_com2188(Oxl1);//休眠结束
Write_com2188(0x29);//开显示
)
//旋转功能实现
void Circum_lcd2188()
{Write_com2188(0x30); //设置局部显示区域的RAM 地址
Write_data2188(0xxx); //局部显示区域RAM 起始
Write_data2188(0xxx); //局部显示区域RAM结束
Write_com2188(0x36); //设置MADCTL命令
Write_com2188(0x11); //休眠结束
Write_com2188(0x29); //开显示
Write_com2188(0x12); //局部模式开
网友评论