图2 硬件接口电路
4 程序设计
软件采用嵌入式C语言开发,温度补偿程序流程图如图3所示。
图3 温度补偿程序流程图
数字电位器程序主要包括三个部分:调节阻值至零,调节阻值至所需位置和保存阻值。根据X9313的模式选择和时序波形图,控制MCU的I/O口输出,选择数字电位器不同的工作模式,输出不同的阻值,调节LCM偏压输入。具体通用程序如下:
void X9313_SetVol(uchar R_Num)
{
uchar i;
_DINT();
P2OUT |= BIT0;
_NOP();_NOP();
P2OUT |= BIT1;
_NOP();_NOP();
P2OUT &= (~BIT0);
_NOP();
//调节阻值到零
P2OUT &= (~BIT2);
_NOP();_NOP();
for(i=0;i<32;i++)
{
P2OUT |= BIT1;
Delay(2);
P2OUT &= (~BIT1);
Delay(2);
}
//调节阻值到R_Num
P2OUT |= BIT2;
_NOP();_NOP();
for(i=0;i<R_Num;i++)
{
P2OUT |= BIT1;
Delay(2);
P2OUT &= (~BIT1);
Delay(2);
}
//保存电阻值
P2OUT |= BIT1;
Delay(2);
P2OUT |= BIT0;
Delay(2);
P2OUT |= BIT2;
Delay(2);
P2OUT |= BIT1;
_EINT();
}
数字电位器输出电阻分辨率为总阻值的1/32,程序中R_Num表示模拟开关的位置,电位器输出电阻即为总阻值的R_Num/32。void Delay(int x)为延时函数,延时时间约Xms。
结语
将设计好的系统放入温度箱,进行温度实验,结果表明:在不同温度下,数字电位器输出不同的电阻值,液晶显示模块对比度稳定,显示良好。