|
发表于 2008-1-24 21:17:57
|
显示全部楼层
我用的是美国TRULY的12864液晶,使用反白时出现问题,主要是液晶更新的时候,要全屏一起更新才行,如果反白其中的几个字,就要其它的字全写成0x00,后一起更新,如果只是把其中几个字写成FF,显示图形后会花屏,还有就是更新的要1 2行一起写入,3 4行一起写入,全部写入后显示图形才行.大家有没有遇到过这种问题?是液晶的问题还是程序的问题,我用网上常用的反白程序都不行,而且这款液晶还是比较贵的,比国产普通液晶贵近一倍了.后来我更改了程序,4行同时更新,则可以反白其中一行了,程序如下:
void fanbai(uchar x)
{
uchar i,j;
if(x<2)
{
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd(comm,0x34);
wr_lcd(comm,0x80+j);
wr_lcd(comm,0x80+i);
wr_lcd(comm,0x30);
if(x<1)
{
if(j<16)
{
wr_lcd(da,0xff);
wr_lcd(da,0xff);
}
else
{
wr_lcd(da,0x00);
wr_lcd(da,0x00);
}
}
else
{
if(j<16)
{
wr_lcd(da,0x00);
wr_lcd(da,0x00);
}
else
{
wr_lcd(da,0xff);
wr_lcd(da,0xff);
}
}
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
wr_lcd(comm,0x34);
wr_lcd(comm,0x80+j-32);
wr_lcd(comm,0x88+i);
wr_lcd(comm,0x30);
wr_lcd(da,0x00);
wr_lcd(da,0x00);
}
}
}
else
{
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd(comm,0x34);
wr_lcd(comm,0x80+j);
wr_lcd(comm,0x88+i);
wr_lcd(comm,0x30);
wr_lcd(da,0x00);
wr_lcd(da,0x00);
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
wr_lcd(comm,0x34);
wr_lcd(comm,0x80+j-32);
wr_lcd(comm,0x80+i);
wr_lcd(comm,0x30);
if(x<3)
{
if(j<48)
{
wr_lcd(da,0xff);
wr_lcd(da,0xff);
}
else
{
wr_lcd(da,0x00);
wr_lcd(da,0x00);
}
}
else
{
if(j<48)
{
wr_lcd(da,0x00);
wr_lcd(da,0x00);
}
else
{
wr_lcd(da,0xff);
wr_lcd(da,0xff);
}
}
}
}
}
wr_lcd (comm,0x36);
} |
|