打印

请教S6B0719驱动问题,打击惨了~

[复制链接]
1647|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t-z-sh|  楼主 | 2008-12-27 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是28pin引线的那种COG,MCU通过一个74HC164进行传并转换,连接LCD。我是用示波器检测的。
以下是读写:
void write_LCD_command(uchar dat){
   uchar i;
   LCD_WR=0;
   LCD_RS=0;//command write.
   LCD_CS=0;
   LCD_RD=1;
   for(i=0; i<8; i++)
    {
 LCD_SCLK=0;
 _nop_();
    if(dat&0x80) LCD_DATA=1;
    else         LCD_DATA=0;
    dat<<=1;
 _nop_();
 _nop_();
    LCD_SCLK=1;
 }
 LCD_RD=0;   //WRITE NOW!
 _nop_();
 LCD_CS=1;
 LCD_RS=1;
}void write_LCD_data(uchar dat){
   uchar i;
   LCD_WR=0;
   LCD_RS=1;//DATA write.
   LCD_CS=0;
   LCD_RD=1;
   for(i=0; i<8; i++)
    {
 LCD_SCLK=0;
 _nop_();
    if(dat&0x80) LCD_DATA=1;
    else         LCD_DATA=0;
    dat<<=1;
 _nop_();
 _nop_();
    LCD_SCLK=1;
 }
 LCD_RD=0;   //WRITE NOW!
 _nop_();
 LCD_CS=1;
 LCD_RS=0;
}

以下是初始化代码
void iniLCD(void){
   LCD_RES=1;
   delay_ms(500);
   LCD_RES= 0 ; 
   delay_ms(500);
   LCD_RES=1;
   delay_ms(500);
   write_LCD_command(0xe2); /*reset by software*/
   delay_ms(500);
   write_LCD_command(0x48);  //SET DUTY 
   write_LCD_command(0x50);   
   write_LCD_command(0xA0);  /* ADC SELECT  A0:NORMAL  A1:REVERSE */
   write_LCD_command(0xC0);  //SHL SELECT  C0:NORMAL  C1:REVERSE   
   write_LCD_command(0xAB);  //OSC START   
   write_LCD_command(0x67); /* SELECT DC-DC STEP-UP 0x64~0x67 */   
   write_LCD_command(0x27); /* Regulator Select 0x20-0x27 */
   write_LCD_command(0x81); /*Set Reference Voltage Select Mode */
   write_LCD_command(0x3F);  //Set Reference Voltage Register 0x00-0x3F   
   write_LCD_command(0x54); /* lcd bias */   write_LCD_command(0x2c); /* V/C on, V/R on, V/F on */
   delay_ms(500);//Delay 1S
   write_LCD_command(0x2e); /* V/C on, V/R on, V/F on */
   delay_ms(500);
   write_LCD_command(0x2f); /* V/C on, V/R on, V/F on */  ——问题1:到这句屏会全黑,正常??
   delay_ms(500);
   write_LCD_command(0x40); /* display start first line */
   write_LCD_command(0x00);
   delay_ms(500);
   write_LCD_command(0x44); /* COM0 */
   write_LCD_command(0x00);
   delay_ms(500);
   write_LCD_command(0xaf); /* display on */     ——问题2:到这句上部1/4熄灭,其余全亮(黑)
   }  
下面是清屏函数,但运行没任何效果。
void clear_disp(void)
   { uchar page=0xb0,column;           
        for (page=0xb0;page<0xbe;page++)
         {  write_LCD_command(page);                        //set page adress
            write_LCD_command(0x00);                        //set start column adress
            write_LCD_command(0x10);   
     
             for(column=0;column<=160;column++)
              { write_LCD_data(0x0);
                write_LCD_data(0x0);
               }
          }
    }

相关帖子

沙发
sutie2008| | 2008-12-29 13:10 | 只看该作者

修改一下对比度

  write_LCD_command(0x27); /* Regulator Select 0x20-0x27 */
   write_LCD_command(0x81); /*Set Reference Voltage Select Mode */
   write_LCD_command(0x3F);  //Set Reference Voltage Register 


修改为下面的试试,你对比度调的可能高点
  write_LCD_command(0x24); /* Regulator Select 0x20-0x27 */
   write_LCD_command(0x81); /*Set Reference Voltage Select Mode */
   write_LCD_command(0x24);  //Set Reference Voltage Register

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

48

帖子

0

粉丝