钻石会员
主题
回帖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 人民币)
|
评分
-
查看全部评分
|