|
再次向大家求助!我真的是没招了!公司产品更新,有一款液晶要换新的,说是只要把写数据的时间延长就可以,图片如下:
指定要修改的地方 (原文件名:image003.jpg)
但是我加了N个NOP还是不行!每个地方也都试了加NOP,就是不对。之前我曾经发过这个帖子,当时以为解决问题了,但是过了两天发现还是不对。
现在把液晶的驱动程序贴上,希望大家帮忙啊! 液晶的背面写着GFE122032F,可能是它的型号吧。时钟晶振是32.768K的,现在的效果还是经常会有丢失和乱码,该在第一页显示的跑到第二页··
//********************************display program start
//define display I/O
#define LcdDatDIR P4DIR
#define LcdDatOUT P4OUT
#define LcdConDIR P3DIR
#define LcdConOUT P3OUT
unsigned char COMA0=BIT2,COMBA=BIT0,COMBB=BIT1; //comba->e1; combb->e2; coma0->a
unsigned char i,DataTemp,ColumnTemp;
//write command
void LcdWriteCmd(unsigned char Cmd)
{ LcdDatDIR=0xff;
LcdConDIR|=COMA0+COMBA+COMBB;
LcdConOUT&=~COMA0;
LcdConOUT|=COMBA;//LcdConOUT&=~COMBB;
LcdDatOUT=Cmd;
LcdConOUT&=~COMBA; //e1
LcdDatOUT=0;
// delay_test(200);
LcdConOUT|=COMBB;
LcdDatOUT=Cmd;
LcdConOUT&=~COMBB; //e2
LcdDatOUT=0;
}
//write data
void LcdWriteData(unsigned char Eflag,unsigned char Data)
{
LcdDatDIR=0xff;
LcdConDIR|=COMA0+COMBA+COMBB;
LcdConOUT|=COMA0;
// delay_test(200);
if(Eflag==1)
{ LcdConOUT|=COMBA;//LcdConOUT&=~COMBB;
LcdDatOUT=Data;
LcdConOUT&=~COMBA; //e1
LcdDatOUT=0;
}
else
{ LcdConOUT|=COMBB;
LcdDatOUT=Data;
LcdConOUT&=~COMBB; //e2
LcdDatOUT=0;
}
}
//Clear Lcd Screen
void ClearCld(void)
{ unsigned int i,j;
for(i=0xb8;i<=0xbb;i++)
{ LcdWriteCmd(i);
LcdWriteCmd(0);
for(j=0;j<=61;j++)
{ LcdDatDIR=0xff;
LcdConDIR|=COMA0+COMBA+COMBB;
LcdConOUT|=COMA0;
LcdConOUT|=COMBA;
LcdDatOUT=0;
LcdConOUT&=~COMBA; //e1
LcdConOUT|=COMBB;
LcdDatOUT=0;
LcdConOUT&=~COMBB; //e2
}
}
}
//Lcd Init
void LcdInit(void)
{ LcdWriteCmd(0xe2); //software reset
LcdWriteCmd(0xae); //close display
LcdWriteCmd(0xa4); //stats drive off
LcdWriteCmd(0xa9); //select duty 1:32
LcdWriteCmd(0xa0); //select ADC:CW output
LcdWriteCmd(0xee); //read-modify-write off
LcdWriteCmd(0x00); //开始的 列地址
LcdWriteCmd(0xc0); //开始的 行地址
LcdWriteCmd(0xaf); //open display
}
//****************display program end |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|