RT,整了2天了
我已经不知道怎么办了
底层驱动无问题,只要一写入反白函数,就成这样子(第3,4,7,8列必定反白,无论设不设定这片区域烦不烦白,一调用泛白函数就这样,如图)
但是想要反白的区域能正常反白
问题就是这几列为什么也跟着反白?
反白原理依据的是DDRAM和GDRAM同时显示的关系是异或,写入0XFF就能反白的原理。
函数是别人的,我只是理解了。
//-----------------------------------------------------------------------
//函数功能:使用绘图的方法让一行反白
//形式参数:unsigned char row,unsigned char bkcor
//行参说明:坐标水平位置,坐标垂直位置,反白行数,要反白还是清除(1:反白,0:清除)
//使用说明:无
//------------------------------------------------------------------------
void SetRowBackColor(unsigned char row,unsigned char bkcor)
{
unsigned char i,j,basex,basey,color;
Write_cmd(0x34); //扩展指令
if(bkcor==1) color=0xff; //全写入0XFF,反白。
if(bkcor==0) color=0x00; //全写入0X00,消白。
if(row==1||row==2) //第一第二行
{
basex=0x80; //上半屏
}
if(row==3||row==4) //第三第四行
{
basex=0x88; //下半屏
row=row-2; //垂直位址都是从0X80开始的,不管上下半屏。
}
basey=0x80+(row-1)*16; //从哪一行的首行点阵开始
for(i=0;i<16;i++) //一行有16行点阵
{
Write_cmd(basey+i); //写入垂直位址。
Write_cmd(basex); //水平位址(上半屏第一字为0X80)//下半屏第一字为0X88;
for(j=0;j<16;j++) //再写入两个8位元的数据,AC会自动增一,接着写数据
Write_data(color);
}
Write_cmd(0x36);
Write_cmd(0x30);
}
很无奈,不知道有没有人有同样遭遇。。。希望高人解答,在线等。。。
|