钻石会员 
 
主题
回帖0
积分11931
阅读权限50
注册时间2011-10-9
最后登录1970-1-1
在线时间 小时
 
 
 
 
 | 
 
这个是NOKIA2720手机的外屏,驱动代码倒是简单,手机是3线串行驱动,拿48块的逻辑分析仪两下都出来了。难的是确定并行的引脚,说来话长就不说了  。 
通过分析逻辑分析仪捕捉的代码,发现指令与SPFD54124B相同,可以认为兼容SPFD54124B。这个驱动IC其实是SEIKO的某型号,因为定制产品,具体对应型号就不知道了。下面附上相关资料。 
PS:这个屏淘宝有售,6.5RMB/PCS,分辨率128X160,4096-262K色,支持3线串行与I8080 8BIT并行.据我观察是原装的,显示效果不错,里面背光是单个LED,这样3.xV就可以点亮了。还是老缺点:座子相对难焊些。 
 
 
引脚排列: 
1LED+      24LED- 
2GND       23GND 
3PS          22TE  
4GND       21RES 
5D0/SDA  20D1 
6D2          19D3 
7D4          18D5 
8D6          17D7 
9CS          16DC/SCL 
10WR       15RD 
11GD        14GND 
12VCC      13VIO 
 
3PS(串并切换,接地串行)22TE  可以不用,估计是同步信号。12,13直接3V3,如果CPU是1.8V,13VIO就接1.8方便电平匹配。串行需要:21RES,9CS,5SDA,16SCL,PS接地,不用的脚接地或悬空,除TE。 
 
初始化代码:精华在最后面,参考SPFD54124B。由于那个0X2DRGBSET 命令之后参数有128字节,  没时间人肉转换成代码,有兴趣的坛友从下面上传的分析仪数据自己转吧。 
#include "LCD.h" 
#include "font8x16.h" 
#include "stm32f10x.h" 
#include "Myusart.h" 
//==================================================================================== 
void LCD_Write_Sdata (unsigned char Data) 
{ 
    LCD_Data_Out=Data; 
    LCD_WR_High(); 
    LCD_WR_Low(); 
} 
void LCD_Write_Cmd (unsigned char Cmd) 
{ 
    LCD_CS_Low(); 
    LCD_RS_Low(); 
    LCD_RD_High(); 
    LCD_Data_Out=Cmd; 
    LCD_WR_High(); 
    LCD_WR_Low(); 
} 
void LCD_Write_Data (unsigned char Data) 
{ 
    LCD_CS_Low(); 
    LCD_RS_High(); 
    LCD_RD_High(); 
    LCD_Data_Out=Data; 
    LCD_WR_High(); 
    LCD_WR_Low(); 
} 
//==================================================================================== 
void LCD_SET_XY(unsigned char x,unsigned int y) 
{ 
 LCD_Write_Cmd(0x2a);            // Column Address Set  
    LCD_Write_Data(0x00);           // x start address bit15-8  
    LCD_Write_Data(x);              // x start address bit7-0   
    LCD_Write_Data(0x00);           // x end address bit15-8   
    LCD_Write_Data(0xef);           // x end address bit7-0 
     
    LCD_Write_Cmd(0x2b);            // Page Address Set  
    LCD_Write_Data((y&0xff00)>>8);  // y start address bit15-8  
    LCD_Write_Data(y&0x00ff);       // y start address bit7-0   
    LCD_Write_Data(0x01);           // y end address bit15-8    
    LCD_Write_Data(0x3f);           // y end address bit7-0 
         
    LCD_Write_Cmd(0x2c);            // RAM Write Command 
} 
//==================================================================================== 
void LCD_Show_Char8(unsigned char c,unsigned char x, unsigned char y) 
{ 
    unsigned char k,Mline,Ctemp; 
    LCD_SET_XY(x,y); 
    c -= 0x20; 
     
    for (Mline=0; Mline<16; Mline++) 
    { 
        Ctemp=font8x16[c][Mline]; 
        for(k=0;k<8;k++) 
        { 
            if(Ctemp&0x01)                    
            { 
                LCD_Write_Data(0x07); 
    LCD_Write_Data(0xe0); 
            } 
            else 
            { 
                LCD_Write_Data(0x00); 
    LCD_Write_Data(0x00); 
            } 
            Ctemp=Ctemp>>1; 
        } 
        LCD_SET_XY(x,++y);  
    } 
} 
//==================================================================================== 
void LCD_Show_String8 (unsigned char *String,unsigned char x,unsigned int y) 
{ 
 while ( * String ) 
 { 
  LCD_Show_Char8( *String++,x,y); 
        x+=8;      
 } 
} 
//==================================================================================== 
void LCD_Clear(void) 
{ 
    unsigned char j; 
    unsigned int i; 
    LCD_SET_XY(0,0); 
    LCD_CS_Low(); 
    LCD_RS_High(); 
    LCD_RD_High(); 
    for(i=0;i<320;i++)    
    { 
        for(j=0;j<240;j++)    
        { 
            LCD_Write_Sdata (0x00); 
            LCD_Write_Sdata (0x00); 
        } 
    } 
    LCD_CS_High(); 
} 
//====================================================================================   
void LCD_Init(void) 
{ 
    LCD_RES_Low(); 
    Delay_ms(20); 
    LCD_RES_High(); 
    Delay_ms(20); 
    //LCD_Write_Cmd(0x01);   
    Delay_ms(20); 
     
    LCD_Write_Cmd(0x11);         //Sleep Out,0x10=Sleep In.退出睡眠模式 
 LCD_Write_Cmd(0x36);         //Idle Mode Off 
 LCD_Write_Data (0x00); 
    LCD_Write_Cmd(0x26);         //Idle Mode Off 
 LCD_Write_Data (0x04); 
     
 LCD_Write_Cmd(0x3a);        //interface pixel format,default 18bit接口数据格式,默认18BIT 
 LCD_Write_Data(0x05);        //16bit pixel format 0X55=16BIT. 
 LCD_Clear(); 
 LCD_Write_Cmd(0x29);        //Display  On ,0x28=Display Off.显示开启 
  
} 
//====================================================================================  
从手机捕捉到的开机时逻辑数据 
 
on.rar
(286.79 KB, 下载次数: 13, 售价: 5 人民币)
 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |