lazyduck 发表于 2011-3-3 16:37:47

430F147驱动晶发液晶12232再次求助!

再次向大家求助!我真的是没招了!公司产品更新,有一款液晶要换新的,说是只要把写数据的时间延长就可以,图片如下:
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_619746GIQPK5.jpg
指定要修改的地方 (原文件名: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 charCOMA0=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 duty1:32
    LcdWriteCmd(0xa0);    //select ADC:CW output
    LcdWriteCmd(0xee);    //read-modify-write off
    LcdWriteCmd(0x00);    //开始的 列地址
    LcdWriteCmd(0xc0);    //开始的 行地址
    LcdWriteCmd(0xaf);//open display

}
//****************display program end

lazyduck 发表于 2011-3-3 17:26:34

顶起,真的救命啊!

lazyduck 发表于 2011-3-4 09:23:55

救命啊!!!!!999999999999999999

lazyduck 发表于 2011-3-9 16:38:51

好吧,我自己再次买块砖把自己拍死! 在这里我要说一句 晶发的12232液晶,老子恨死你了! 之前就是因为你我才发帖求助,http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4480053&bbs_page_no=1&search_mode=3&search_text=lazyduck&bbs_id=9999当时以为是供电的问题,就不了了之了。后来发现不是,只有那一块是那样! 其余的都显示不正常,按照你们厂家提供的资料,我在写数据的地方加延时,加了N多都没效果,撞墙的心都有了!最后转换思路,用51单片机驱动它完全正常,才发现是I/O操作电压的问题。旧的型号挺好的,5V供电,3.3V的I/O口电压工作起来挺好的,非要更新,更新也就算了,弄出这么一个问题,害我折腾了快三个星期,把注意力从软件改到硬件上才找到问题,坑爹呢!!!         还是那句话,大家看了当做经验,别跟我一样遇到这种问题。
页: [1]
查看完整版本: 430F147驱动晶发液晶12232再次求助!