老大啊,一般驱动程序的初始化代码不是大致相同吗,下面这段是我的FSMC例程里的初始化代码,怎么差别怎么大啊!!!!
这算哪门子的初始化代码啊,是FSMC的缘故,还是液晶控制器不同的缘故啊!
LCD_FSMCConfig();
Delay(50);
////////////////////////////////
LCD_WriteReg(0x0042,0x0008); //0x0008
//Gamma setting
LCD_WriteReg(0x0046,0x00B4);
LCD_WriteReg(0x0047,0x0043);
LCD_WriteReg(0x0048,0x0013);
LCD_WriteReg(0x0049,0x0047);
LCD_WriteReg(0x004A,0x0014);
LCD_WriteReg(0x004B,0x0036);
LCD_WriteReg(0x004C,0x0003);
LCD_WriteReg(0x004D,0x0046);
LCD_WriteReg(0x004E,0x0005);
LCD_WriteReg(0x004F,0x0010);
LCD_WriteReg(0x0050,0x0008);
LCD_WriteReg(0x0051,0x000a);
//Window Setting
//0x0002至0x0009可用于写开窗口
LCD_WriteReg(0x0002,0x0000);
LCD_WriteReg(0x0003,0x0000);
LCD_WriteReg(0x0004,0x0000);
LCD_WriteReg(0x0005,0x00EF);
LCD_WriteReg(0x0006,0x0000);
LCD_WriteReg(0x0007,0x0000);
LCD_WriteReg(0x0008,0x0000);
LCD_WriteReg(0x0009,0x013F);
Delay(10);
LCD_WriteReg(0x0001,0x0006);
LCD_WriteReg(0x0016,0x00C8);
LCD_WriteReg(0x0023,0x0095);
LCD_WriteReg(0x0024,0x0095);
LCD_WriteReg(0x0025,0x00FF);
LCD_WriteReg(0x0027,0x0002);
LCD_WriteReg(0x0028,0x0002);
LCD_WriteReg(0x0029,0x0002);
LCD_WriteReg(0x002A,0x0002);
LCD_WriteReg(0x002C,0x0002);
LCD_WriteReg(0x002D,0x0002);
LCD_WriteReg(0x003A,0x0001);
LCD_WriteReg(0x003B,0x0001);
LCD_WriteReg(0x003C,0x00F0);
LCD_WriteReg(0x003D,0x0000);
Delay(20);
LCD_WriteReg(0x0035,0x0038); //0038
LCD_WriteReg(0x0036,0x0078);
LCD_WriteReg(0x003E,0x0038);
LCD_WriteReg(0x0040,0x000F);
LCD_WriteReg(0x0041,0x00F0);
LCD_WriteReg(0x0038,0x0000);
// Power Setting
LCD_WriteReg(0x0019,0x0049);
LCD_WriteReg(0x0093,0x000A);
Delay(10);
LCD_WriteReg(0x0020,0x0020);
LCD_WriteReg(0x001D,0x0003);
LCD_WriteReg(0x001E,0x0000);
LCD_WriteReg(0x001F,0x0009);
LCD_WriteReg(0x0044,0x0053);
LCD_WriteReg(0x0045,0x0010);
Delay(10);
LCD_WriteReg(0x001C,0x0004);
Delay(20);
LCD_WriteReg(0x0043,0x0080);
Delay(5);
LCD_WriteReg(0x001B,0x000a);
Delay(40);
LCD_WriteReg(0x001B,0x0012);
Delay(40);
//Display On Setting
LCD_WriteReg(0x0090,0x007F);
LCD_WriteReg(0x0026,0x0004);
Delay(40);
LCD_WriteReg(0x0026,0x0024);
LCD_WriteReg(0x0026,0x002C);
Delay(40);
LCD_WriteReg(0x0070,0x0008);
LCD_WriteReg(0x0026,0x003C);
LCD_WriteReg(0x0057,0x0002);
LCD_WriteReg(0x0055,0x0000);
LCD_WriteReg(0x0057,0x0000);
//**************END***************//
其中,0x0002至0x0009可用于写开窗口,如下:
void Set_Wingdows (unsigned int startx,unsigned int starty,unsigned int endx,unsigned int endy)
{
LCD_WriteReg(0x0002,startx>>8);
LCD_WriteReg(0x0003,startx);
LCD_WriteReg(0x0004,endx>>8);
LCD_WriteReg(0x0005,endx);
LCD_WriteReg(0x0006,starty>>8);
LCD_WriteReg(0x0007,starty);
LCD_WriteReg(0x0008,endy>>8);
LCD_WriteReg(0x0009,endy);
LCD_WriteReg(0x0016,0x00C8);
}
|