XUEPENGBIN 发表于 2014-6-9 14:39:32

128X128LCD S6B0741 点亮了。。庆贺一下。。

本帖最后由 XUEPENGBIN 于 2014-6-9 14:43 编辑

如题:
demo的代码有点问题。。看了手册写了新代码。。终于点亮了。。庆贺一下。。模拟的spi。。
void send_byte (unsigned char temp)
{
        unsigned char i;
       
        for (i=0;i<8;i++)
        {
                CLR_CLK;
                if (temp & 0x80)    SET_DATA;
                else                       CLR_DATA;                                                                       
                temp <<= 1;
                SET_CLK;
        }
}

void lcd_send_command (unsigned char command)
{
        CLR_CS;
        CLR_RS;
        send_byte (command);
        SET_CS;
}

void lcd_send_data (unsigned char data)
{
        CLR_CS;
        SET_RS;
        send_byte (data);
        SET_CS;
}

void lcd_set_xy (unsigned char page,unsigned char column)
{
       CLR_RS;
       CLR_CS;
       send_byte (0xb0 | page);
   send_byte (0x10 | (column>>4));
       send_byte (0x0f & column);
       SET_RS;
}

void lcd_clr_page(unsigned char page)
{
        unsigned char j=0, i = 0;
        lcd_set_xy(page,0);
        SET_RS;
        send_byte (0xe8);       //源代码里边你没有这两个。发现是串口的时候才要。
       send_byte (0xff);         //这是下边要写入的数据长度
        for (i= 0;i<129;i++)
          {
                send_byte (0x00);
          send_byte (0x00);       
       }
        SET_CS;
}
void lcd_clr_all(void)
{
        unsigned char i,j;
        for (i=0;i<16;i++)
           {
               lcd_clr_page(i);
       }       
}

void lcd_init (void)
{
LCD_IO_INIT();
        CLR_RST;
        DelayMs (50);
        SET_RST;

        lcd_send_command (0xe2);       
        DelayMs (250);
        lcd_send_command (0x48);                //set display duty
        lcd_send_command (0x00);
       
        lcd_send_command (0xa1);                //set ADC
       
        lcd_send_command (0xc0);                //set SHL
       
        lcd_send_command (0x44);                //set COM0
        lcd_send_command (0x00);
       
        lcd_send_command (0x40);                //set start line
        lcd_send_command (0x00);       
       
        lcd_send_command (0xab);                //start oscillator
       
        lcd_send_command (0x66);                //DC-DC boost 5 times
       
        lcd_send_command (0x27);                //set regulator resistor
       
        lcd_send_command (0x81);                //set EV
        lcd_send_command (0x20);
       
        lcd_send_command (0x54);                //set LCD bias resistor
       
        lcd_send_command (0x94);                //setFRC PWM
        /**********************************************/
        lcd_send_command (0x88);                //set white gray
        lcd_send_command (0x00);
       
        lcd_send_command (0x89);
        lcd_send_command (0x00);
       
        lcd_send_command (0x8a);                //set light gray
        lcd_send_command (0x09);
       
        lcd_send_command (0x8b);
        lcd_send_command (0x00);
       
        lcd_send_command (0x8C);                //set dark gray
        lcd_send_command (0x99);
       
        lcd_send_command (0x8d);
        lcd_send_command (0x00);
       
        lcd_send_command (0x8e);                   //set black gray
        lcd_send_command (0x99);
       
        lcd_send_command (0x8f);
        lcd_send_command (0x09);
       
        lcd_send_command (0x10);
       
        lcd_send_command (0x01);
       
        lcd_send_command (0xd0);
        /**********************************************/
        lcd_send_command (0x2c);                //power control, open VC
        DelayMs (2);
        lcd_send_command (0x2e);                //open VR
        DelayMs (2);
        lcd_send_command (0x2f);                //open VF
        DelayMs (2);
        lcd_send_command (0xaf);                //display ON
        DelayMs (2);
       
        lcd_clr_all();
}

void lcd_put_char (unsigned char y,unsigned char x,unsigned char asc ,unsigned char size)
{
        unsigned char i,dat;
        lcd_set_xy(y,x);
        asc -= 0x20;       
        SET_RS;
        if(size==0)
       {
                send_byte (0xe8);
    send_byte (0x12);
          for (i=0;i<6;i++)
             {
                  dat = font6x8;
                  send_byte (0X00);
                  send_byte (dat);
             }
                SET_CS;
          }
        else
       {
               send_byte (0xe8);
   send_byte (0x16);
           for (i=0;i<8;i++)
             {
                  dat = font8x16;
                  send_byte (dat);
                  send_byte (0x00);
             }
                SET_CS;
                lcd_set_xy(y+1,x);
    send_byte (0xe8);
    send_byte (0x16);                       
           for (i=8;i<16;i++)
             {
                  dat = font8x16;
                  send_byte (dat);
                  send_byte (0x00);
             }
                SET_CS;
       }

}

void lcd_put_str (unsigned char page,unsigned char column,unsigned char *str,unsigned char size)
{
        while ( *str )
        {       
               
                lcd_put_char (page,column,*str++,size);
                if(size==0)column+=7;
          else         column+=9;
        }
}
编辑原因 增加说明。。
说明:屏默认的是并口的。。要割2个线。飞一条线。。才能。。

XUEPENGBIN 发表于 2014-6-9 14:44:09

http://www.amobbs.com/thread-5582809-1-1.html 这个贴子里的屏幕。。

dlmaowf 发表于 2014-6-9 14:55:54

恭喜一下

liliuqun 发表于 2014-6-9 15:14:18

恭喜一下

shawn_bu 发表于 2014-6-9 16:48:56

恭喜恭喜。。

永恒520 发表于 2014-6-9 17:22:07

恭喜恭喜呀。。。{:lol:}

tiger5 发表于 2014-6-9 18:03:11

恭喜。。。。

XUEPENGBIN 发表于 2014-6-9 19:40:51


887799 发表于 2014-7-26 15:50:09

本帖最后由 887799 于 2014-7-26 15:52 编辑

XUEPENGBIN 发表于 2014-6-9 19:40


请问这里红线是什么意思?我也买了这个屏,没有点亮。
第一张图的红线是划断的意思?
第二张图黑线是划断?长红线是跳线?短红线是什么意思?

laotui 发表于 2014-7-27 16:53:44

改模式,并行改串行。

887799 发表于 2014-7-27 17:32:02

laotui 发表于 2014-7-27 16:53
改模式,并行改串行。

谢谢您的帮助
      
send_byte (0xe8);       //源代码里边你没有这两个。发现是串口的时候才要。
send_byte (0xff);         //这是下边要写入的数据长度

上面的为什么要增加这两句话?看控制芯片S6B0741里没有提到相关的信息.

laotui 发表于 2014-7-27 18:15:34

您还是请教楼主吧,这个屏我有的不太明白。

XUEPENGBIN 发表于 2014-7-27 19:08:13

用手机上的,不加这个显示不正常。。你可以看下手册里。。原来的程序没有的。后来我加的。你可以把程序那句屏蔽掉测试下。。

887799 发表于 2014-7-27 20:21:54

XUEPENGBIN 发表于 2014-7-27 19:08
用手机上的,不加这个显示不正常。。你可以看下手册里。。原来的程序没有的。后来我加的。你可以把程序那句 ...

删除了,确实是无法正常显示,您那里有这个屏幕的资料吗?可以传上来吗?我看的资料 是三星的驱动芯片资料,如附件。里面没有提到要加入那两个语句。

XUEPENGBIN 发表于 2014-7-27 21:06:13


887799 发表于 2014-7-27 21:37:23

谢谢您,我看了这个是三线SPI下采用的, 四线SPI通信模式,需要用到这个指令吗?或许您的代码就是三线SPI.

887799 发表于 2014-7-27 21:45:44

XUEPENGBIN 发表于 2014-7-27 21:06


已经确认是3线spi模式,好奇的是您是怎样确认 要割断哪条线?有什么好的方法确认呢?

XUEPENGBIN 发表于 2014-7-27 22:16:49

割线是卖液晶的老板提供的。。

用3线单向驱动。。不读状态和数据。

887799 发表于 2014-7-27 22:28:31

XUEPENGBIN 发表于 2014-7-27 22:16
割线是卖液晶的老板提供的。。

用3线单向驱动。。不读状态和数据。

谢谢您,终于不纠结了,今天可以睡个好觉 了。

johnlj 发表于 2014-12-19 16:00:03

楼主,这条指令我没查到,不知是何作用?

lcd_send_command (0xd0);

1101开头的指令没有啊

XUEPENGBIN 发表于 2014-12-19 20:40:12

johnlj 发表于 2014-12-19 16:00
楼主,这条指令我没查到,不知是何作用?

lcd_send_command (0xd0);


SHL SELECT

johnlj 发表于 2014-12-19 21:01:01

XUEPENGBIN 发表于 2014-12-19 20:40
SHL SELECT

谢谢回复,不过SHL SELECT,在手册上是0xC啊
1100

johnlj 发表于 2014-12-19 21:07:08

XUEPENGBIN 发表于 2014-12-19 20:40
SHL SELECT

再请问下楼主,红圈中的短红线是那个过孔和铺地相连的意思吗?谢谢

funnynypd 发表于 2014-12-19 21:10:08

>这个贴子里的屏幕。

The link is not valid anymore.

johnlj 发表于 2014-12-19 21:31:51

funnynypd 发表于 2014-12-19 21:10
>这个贴子里的屏幕。

The link is not valid anymore.

好像移入广告区了

funnynypd 发表于 2014-12-19 21:44:56

>好像移入广告区了
So no picture?

西施糖葫芦 发表于 2014-12-19 22:38:39

看着好古老的屏幕了
页: [1]
查看完整版本: 128X128LCD S6B0741 点亮了。。庆贺一下。。