p1310的LCD的初始化代码
[attach]3374[/attach]#define BOARD_P1310
#define P1310_V3
#ifdef BOARD_P1310
/*
#define SCL_L() (rGPEDAT &= ~(1 << 14))
#define SCL_H() (rGPEDAT |= (1 << 14))
#define SDA_L() (rGPEDAT &= ~(1 << 15))
#define SDA_H() (rGPEDAT |= (1 << 15))
#define SCS_L() (rGPDDAT &= ~(1 << 8))
#define SCS_H() (rGPDDAT |= (1 << 8))
#define SET_SDA_IN() (rGPECON &= ~(3 << 30))
#define SET_SDA_OUT() (rGPECON &= ~(3 << 30) |(1 << 30))
*/
#ifdef P1310_V3
#define SCL_L() (rGPBDAT &= ~(1 << 6))
#define SCL_H() (rGPBDAT |= (1 << 6))
#define SDA_L() (rGPBDAT &= ~(1 << 5))
#define SDA_H() (rGPBDAT |= (1 << 5))
#define SCS_L() (rGPHDAT &= ~(1 << 8))
#define SCS_H() (rGPHDAT |= (1 << 8))
#define SET_SDA_IN() (rGPBCON &= ~(3 << 10))
#define SET_SDA_OUT() (rGPBCON &= ~(3 << 10) |(1 << 10))
#else
#define SCL_L() (rGPEDAT &= ~(1 << 14))
#define SCL_H() (rGPEDAT |= (1 << 14))
#define SDA_L() (rGPEDAT &= ~(1 << 15))
#define SDA_H() (rGPEDAT |= (1 << 15))
#define SCS_L() (rGPHDAT &= ~(1 << 8))
#define SCS_H() (rGPHDAT |= (1 << 8))
#define SET_SDA_IN() (rGPECON &= ~(3 << 30))
#define SET_SDA_OUT() (rGPECON &= ~(3 << 30) |(1 << 30))
#endif
static void Delayms(int val)
{
volatile int i;
for(i=2000;i;i--);
}
static void Command(unsigned short comm)
{
volatile int i=0;
volatile unsigned char temp;
temp = 0x70 + 0; //Set index register
SCS_L();
Delayms(2);
SET_SDA_OUT();
for(i=0;i<8;i++) {
Delayms(2);
SCL_L();
Delayms(2);
if(temp&0x80)
SDA_H();
else
SDA_L();
temp = temp << 1;
Delayms(2);
SCL_H();
Delayms(2);
}
for(i=0;i<8;i++){
Delayms(2);
SCL_L();
Delayms(2);
if(comm&0x80)
SDA_H();
else
SDA_L();
comm=comm<<1;
Delayms(2);
SCL_H();
Delayms(2);
}
Delayms(2);
SCS_H();
Delayms(2);
}
static void DATA(unsigned short dat)
{
volatile int i=0;
volatile unsigned char temp;
temp = 0x70 + 2; //Set index register
SCS_L();
Delayms(2);
SET_SDA_OUT();
for(i=0;i<8;i++) {
Delayms(2);
SCL_L();
Delayms(2);
if(temp&0x80)
SDA_H();
else
SDA_L();
temp=temp<<1;
Delayms(2);
SCL_H();
Delayms(2);
}
for(i=0;i<8;i++){
Delayms(2);
SCL_L();
Delayms(2);
if(dat&0x80)
SDA_H();
else
SDA_L();
dat=dat<<1;
Delayms(2);
SCL_H();
Delayms(2);
}
Delayms(2);
SCS_H();
Delayms(2);
}
void HX8347_init(void)
{
/*
//gpe14 scl
rGPECON &= ~(3 << 28);
rGPECON |= (1 << 28);
rGPEDAT |= (1 << 14);
//gpe15 sda
rGPECON &= ~(3 << 30);
rGPECON |= (1 << 30);
rGPEDAT |= (1 << 15);
//gpd8 cs
rGPDCON &= ~(3 << 16);
rGPDCON |= (1 << 16);
rGPDDAT |= (1 << 8);
*/
#ifdef P1310_V3
//gpe14 scl
rGPBCON &= ~(3 << 12);
rGPBCON |= (1 << 12);
rGPBDAT |= (1 << 6);
//gpe15 sda
rGPBCON &= ~(3 << 10);
rGPBCON |= (1 << 10);
rGPBDAT |= (1 << 5);
//gpd8 cs
rGPHCON &= ~(3 << 16);
rGPHCON |= (1 << 16);
rGPHDAT |= (1 << 8);
//gpc7 rst
rGPCCON &= ~(3 << 14);
rGPCCON |= (1 << 14);
rGPCDAT |= (1 << 7);
rGPCDAT &= ~(1 << 7);
Delayms(2000);
rGPCDAT |= (1 << 7);
#else
//gpe14 scl
rGPECON &= ~(3 << 28);
rGPECON |= (1 << 28);
rGPEDAT |= (1 << 14);
//gpe15 sda
rGPECON &= ~(3 << 30);
rGPECON |= (1 << 30);
rGPEDAT |= (1 << 15);
//gpd8 cs
rGPHCON &= ~(3 << 16);
rGPHCON |= (1 << 16);
rGPHDAT |= (1 << 8);
//gpc7 rst
rGPCCON &= ~(3 << 14);
rGPCCON |= (1 << 14);
rGPCDAT |= (1 << 7);
rGPCDAT &= ~(1 << 7);
Delayms(2000);
rGPCDAT |= (1 << 7);
#endif
Delayms(20);
Command(0x0046);DATA(0x0091);//设置gamma值
Command(0x0047);DATA(0x0011);
Command(0x0048);DATA(0x0000);
Command(0x0049);DATA(0x0066);
Command(0x004A);DATA(0x0037);
Command(0x004B);DATA(0x0004);
Command(0x004C);DATA(0x0011);
Command(0x004D);DATA(0x0077);
Command(0x004E);DATA(0x0000);
Command(0x004F);DATA(0x001F);
Command(0x0050);DATA(0x000F);
Command(0x0051);DATA(0x0000);
//240x320 window setting
Command(0x0002);DATA(0x0000); // Column address start2
Command(0x0003);DATA(0x0000); // Column address start1
Command(0x0004);DATA(0x0000); // Column address end2
Command(0x0005);DATA(0x00EF); // Column address end1
Command(0x0006);DATA(0x0000); // Row address start2
Command(0x0007);DATA(0x0000); // Row address start1
Command(0x0008);DATA(0x0001); // Row address end2
Command(0x0009);DATA(0x003F); // Row address end1
// Display Setting
Command(0x0001);DATA(0x0006); // IDMON=0, INVON=1, NORON=1, PTLON=0
Command(0x0016);DATA(0x00c8); // MY=0, MX=0, MV=0, ML=1, BGR=0, TEON=0
Command(0x0023);DATA(0x0095); // N_DC=1001 0101
Command(0x0024);DATA(0x0095); // PI_DC=1001 0101
Command(0x0025);DATA(0x00FF); // I_DC=1111 1111
Command(0x0027);DATA(0x0002); // N_BP=0000 0010
Command(0x0028);DATA(0x0002); // N_FP=0000 0010
Command(0x0029);DATA(0x0002); // PI_BP=0000 0010
Command(0x002A);DATA(0x0002); // PI_FP=0000 0010
Command(0x002C);DATA(0x0002); // I_BP=0000 0010
Command(0x002D);DATA(0x0002); // I_FP=0000 0010
Command(0x003A);DATA(0x0001); // N_RTN=0000, N_NW=001
Command(0x003B);DATA(0x0001); // PI_RTN=0000, PI_NW=001
Command(0x003C);DATA(0x00F0); // I_RTN=1111, I_NW=000
Command(0x003D);DATA(0x0000); // DIV=00
Delayms(20);
Command(0x0035);DATA(0x0038); // EQS=38h
Command(0x0036);DATA(0x0078); // EQP=78h
Command(0x003E);DATA(0x0038); // SON=38h sources output start time
Command(0x0040);DATA(0x000F); // GDON=0Fh gate output start time
Command(0x0041);DATA(0x00F0); // GDOFF gate output end time
// Power Supply Setting
Command(0x0019);DATA(0x0047); // CADJ=0100, CUADJ=100, OSD_EN=1 ,60Hz
Command(0x0093);DATA(0x000F); // RADJ=1111, 100% osc control
Delayms(10);
Command(0x0020);DATA(0x0010); // BT=0100 power control register
Command(0x001D);DATA(0x0007); // VC1=111 power control register
Command(0x001E);DATA(0x0000); // VC3=000
Command(0x001F);DATA(0x0003); // VRH=0011
Command(0x0044);DATA(0x0047); // VCM=100 0010
Command(0x0045);DATA(0x0013); // VDV=1 0001
Command(0x0057);DATA(0x0002); // Test Mode enable
Command(0x0055);DATA(0x0000); // VDC_SL=000, VDDD=1.95V
Command(0x0057);DATA(0x0000); // Test Mode disable
Delayms(10);
Command(0x001C);DATA(0x0004); // AP=100
Delayms(20);
Command(0x0043);DATA(0x0080); //set VCOMG=1(1.0V-(VCI+0.5V))
Delayms(5);
Command(0x001B);DATA(0x0008); // GASENB=0, PON=0, DK=1, XDK=0, VLCD_TRI=0, STB=0
Delayms(40);
Command(0x001B);DATA(0x0010); // GASENB=0, PON=1, DK=0, XDK=0, VLCD_TRI=0, STB=0
Delayms(40);
// Display ON Setting
Command(0x0090);DATA(0x007F); // SAP=0111 1111
Command(0x0026);DATA(0x0004); //GON=0, DTE=0, D=01
Delayms(50);
Command(0x0026);DATA(0x0024); //GON=1, DTE=0, D=01
Delayms(50);
Command(0x0026);DATA(0x002C); //GON=1, DTE=0, D=11
Delayms(50);
Command(0x0026);DATA(0x003C); //GON=1, DTE=1, D=11
Delayms(50);
Command(0x0038);DATA(0x0010);
Delayms(50);
Command(0x0039);DATA(0x0000);
Delayms(50);
Command(0x0070);DATA(0x0066);
Delayms(50);
Command(0x0072);DATA(0x0000);
Delayms(50);
Command(0x0022); //WRITE DATA TO GRAM
}
#endif // #if (BOARD = BOARD_P1310) 源码都开放了啊 LCD IC应该是 SPFD5408 而不是 HX8347 。 呵呵,好的。
这个代码 可以 初始化 1310的 lcd [quote]LCD IC应该是 SPFD5408 而不是 HX8347 。
[size=2][color=#999999]tomsu 发表于 2009-12-11 15:45[/color] [url=http://www.study-bbs.com/redirect.php?goto=findpost&pid=87319&ptid=29230][img]http://www.study-bbs.com/images/common/back.gif[/img][/url][/size][/quote]
lcd是什么型号的啊,看资料里面有hx8347d的手册,应该是hx8347吧 [b]回复 [url=http://www.study-bbs.com/redirect.php?goto=findpost&pid=96615&ptid=29230]5#[/url] [i]lufthansa[/i] [/b]
那可能是我搞错了。能用就好哈:)
页:
[1]