lazyduck 发表于 2010-12-27 15:48:16

430f147控制液晶12232求助!

公司产品更新,小弟刚刚进来工作,现在负责一些程序的更新,这次要调一个液晶12232的驱动程序。现在的问题是,之前的程序勉强能用,但是总会有出乱码的地方,由于之前没有接触过这种型号的液晶,不知道从哪里入手。现在把程序贴出来希望高手们指点下!
//write command
void LcdWriteCmd(unsigned char Cmd)
{   LcdDatDIR=0xff;
    LcdConDIR|=COMA0+COMBA+COMBB;
    LcdConOUT&=~COMA0;
    LcdConOUT|=COMBA;//LcdConOUT&=~COMBB;   
    LcdDatOUT=Cmd;
    LcdConOUT&=~COMBA;   //e1
    delay_test(200);
    LcdConOUT|=COMBB;
    LcdDatOUT=Cmd;
    LcdConOUT&=~COMBB;    //e2
}
//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
    }
    else
    {LcdConOUT|=COMBB;
       LcdDatOUT=Data;
       LcdConOUT&=~COMBB;    //e2
    }
}

//write a char data to Lcd
void DispChar(unsigned char Page,unsigned char Column,unsigned char DataAddr,unsigned char fanbaiFlag)
{   unsigned char i,DataTemp;
    ColumnTemp=Column;
   
    switch (Page)   
    {    case 1: LcdWriteCmd(0xb8);break;
         case 2: LcdWriteCmd(0xb9);break;
         case 3: LcdWriteCmd(0xba);break;
         case 4: LcdWriteCmd(0xbb);break;
         default:break;
   }
   
   for (i=0;i<=6;i++)
   {   if (fanbaiFlag==1){DataTemp=DispCode;}
         else{DataTemp=~DispCode;}
         if(ColumnTemp<=60)
         {    LcdWriteCmd(ColumnTemp);
            LcdWriteData(1,DataTemp);
            ColumnTemp++;
         }
         else
         {    LcdWriteCmd(ColumnTemp-61);
            LcdWriteData(2,DataTemp);
            ColumnTemp++;
         }
    }
}

//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

}

主要内容就这样了,现在的问题就是有时候字符显示正确,有时候就乱码,有时还出现上下两部分内容镜像的情况。求助!

lazyduck 发表于 2010-12-31 09:18:41

我可以去自杀了,乱码原因是电池没电了.......换上电池一切OK
页: [1]
查看完整版本: 430f147控制液晶12232求助!