📄 lcd.c
字号:
void LCD_ClearAll_R61505U(kal_uint16 data)
{
kal_prompt_trace(MOD_ENG,"LCD_ClearAll_R61505U");
LCD_blockClear_R61505U(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, data);
}
void LCD_Init_R61505U(kal_uint32 bkground, void **buf_addr)
{
kal_uint16 Lcd_Id ;
kal_uint8 id1,id2,id3,id4;
kal_uint8 dd1,dd2,dd3,dd4;
SET_LCD_CTRL_RESET_PIN;
delayms(200); // Delay 1ms
CLEAR_LCD_CTRL_RESET_PIN;
delayms(250); // Delay 10ms // This delay time is necessary
SET_LCD_CTRL_RESET_PIN;
delayms(500); //delay 50ms
LCD_CtrlWrite_R61505U(0x0000);
delayms(150);
Lcd_Id = LCD_DataRead_R61505U;
id3=(Lcd_Id&0xFF00)>>8;
id4=(Lcd_Id&0x00FF);
kal_prompt_trace(MOD_ENG,"Lcd ID = 0x%x,id3=%d,id4=%d",Lcd_Id,id3,id4);
if(Lcd_Id == DO139GEHUA)
g_CurLcdID = LCD_GEHUA_D0139;
else if(Lcd_Id == D9320SHENGDA)
g_CurLcdID = LCD_SHENGDA_D9320;
else if(Lcd_Id == D9320JINGYUAN)
g_CurLcdID = LCD_JINGYUAN_D9320;
else if(Lcd_Id == HX8437SUONA)
g_CurLcdID = LCD_SUONA_HX8437;
else if(Lcd_Id == D0154SUONA)
g_CurLcdID = LCD_SUONA_D0154;
else if(Lcd_Id == D5408XIANYU)
g_CurLcdID = LCD_XIANYU_D5408;
else if(Lcd_Id == DTIANMA)
g_CurLcdID = LCD_TIANMA_X;
else
g_CurLcdID = LCD_SUONA;
kal_prompt_trace(MOD_ENG,"g_CurLcdID ID = %d",g_CurLcdID);
if(g_CurLcdID == LCD_GEHUA_D0139)
{
kal_prompt_trace(MOD_ENG,"LCD_Init_R61505U");
LCD_set_reg(0x00, 0x0001);
delayms(20);
//power on
LCD_set_reg(0x11, 0x1504);
LCD_set_reg(0x14, 0x0c19);
LCD_set_reg(0x10, 0x3c00);
LCD_set_reg(0x13, 0x0040);
delayms(15);
LCD_set_reg(0x13, 0x0060);
delayms(75);
LCD_set_reg(0x13, 0x0070);
delayms(10);
//display constrol setting
LCD_set_reg(0x01, 0x0127);
LCD_set_reg(0x02, 0x0700);
LCD_set_reg(0x03, 0x1030);
LCD_set_reg(0x07, 0x0000);
LCD_set_reg(0x08, 0x0404);
LCD_set_reg(0x0b, 0x0000);
LCD_set_reg(0x0c, 0x0000);
LCD_set_reg(0x40, 0x0000);
LCD_set_reg(0x42, 0x013f);
LCD_set_reg(0x43, 0x0000);
LCD_set_reg(0x44, 0x0000);
LCD_set_reg(0x45, 0x0000);
LCD_set_reg(0x46, 0xef00);
LCD_set_reg(0x47, 0x013f);
LCD_set_reg(0x48, 0x0000);
LCD_set_reg(0x30, 0x0000);
LCD_set_reg(0x31, 0x0606);
LCD_set_reg(0x32, 0x0006);
LCD_set_reg(0x33, 0x0403);
LCD_set_reg(0x34, 0x0107);
LCD_set_reg(0x35, 0x0101);
LCD_set_reg(0x36, 0x0707);
LCD_set_reg(0x37, 0x0304);
LCD_set_reg(0x38, 0x0201);
LCD_set_reg(0x39, 0x0706);
LCD_set_reg(0x20, 0x0000);
LCD_set_reg(0x21, 0x0000);
LCD_set_reg(0x07, 0x0011);
delayms(40);
LCD_set_reg(0x07, 0x0017);
LCD_CtrlWrite_R61505U(0x22);
}
else if(g_CurLcdID == LCD_SUONA)
{
CLEAR_LCD_CTRL_RESET_PIN;
LCD_Delay(0x1000);
LCD_Delay(0x1000);
SET_LCD_CTRL_RESET_PIN;
LCD_Delay(0x1000);
LCD_Delay(0x1000);
LCD_CtrlWrite_R61505U(0x46); LCD_DataWrite_R61505U(0x0095);
LCD_CtrlWrite_R61505U(0x47); LCD_DataWrite_R61505U(0x0051);
LCD_CtrlWrite_R61505U(0x48); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x49); LCD_DataWrite_R61505U(0x0036);
LCD_CtrlWrite_R61505U(0x4a); LCD_DataWrite_R61505U(0x0011);
LCD_CtrlWrite_R61505U(0x4b); LCD_DataWrite_R61505U(0x0066);
LCD_CtrlWrite_R61505U(0x4c); LCD_DataWrite_R61505U(0x0014);
LCD_CtrlWrite_R61505U(0x4d); LCD_DataWrite_R61505U(0x0077);
LCD_CtrlWrite_R61505U(0x4e); LCD_DataWrite_R61505U(0x0013);
LCD_CtrlWrite_R61505U(0x4f); LCD_DataWrite_R61505U(0x004c);
LCD_CtrlWrite_R61505U(0x50); LCD_DataWrite_R61505U(0x0046);
LCD_CtrlWrite_R61505U(0x51); LCD_DataWrite_R61505U(0x0046);
LCD_CtrlWrite_R61505U(0x02); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x03); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x04); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x05); LCD_DataWrite_R61505U(0x00ef);
LCD_CtrlWrite_R61505U(0x06); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x07); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x08); LCD_DataWrite_R61505U(0x0001);
LCD_CtrlWrite_R61505U(0x09); LCD_DataWrite_R61505U(0x003f);
LCD_CtrlWrite_R61505U(0x01); LCD_DataWrite_R61505U(0x0006);
LCD_CtrlWrite_R61505U(0x16); LCD_DataWrite_R61505U(0x00c8);
LCD_CtrlWrite_R61505U(0x23); LCD_DataWrite_R61505U(0x0095);
LCD_CtrlWrite_R61505U(0x24); LCD_DataWrite_R61505U(0x0095);
LCD_CtrlWrite_R61505U(0x25); LCD_DataWrite_R61505U(0x00FF);
LCD_CtrlWrite_R61505U(0x27); LCD_DataWrite_R61505U(0x0006);
LCD_CtrlWrite_R61505U(0x28); LCD_DataWrite_R61505U(0x0006);
LCD_CtrlWrite_R61505U(0x29); LCD_DataWrite_R61505U(0x0006);
LCD_CtrlWrite_R61505U(0x2a); LCD_DataWrite_R61505U(0x0006);
LCD_CtrlWrite_R61505U(0x2c); LCD_DataWrite_R61505U(0x0006);
LCD_CtrlWrite_R61505U(0x2d); LCD_DataWrite_R61505U(0x0006);
LCD_CtrlWrite_R61505U(0x3a); LCD_DataWrite_R61505U(0x0001);
LCD_CtrlWrite_R61505U(0x3b); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x3c); LCD_DataWrite_R61505U(0x00f0);
LCD_CtrlWrite_R61505U(0x3d); LCD_DataWrite_R61505U(0x0000);
delayms(80);
LCD_CtrlWrite_R61505U(0x35); LCD_DataWrite_R61505U(0x0038);
LCD_CtrlWrite_R61505U(0x36); LCD_DataWrite_R61505U(0x0078);
LCD_CtrlWrite_R61505U(0x3E); LCD_DataWrite_R61505U(0x0038);
LCD_CtrlWrite_R61505U(0x40); LCD_DataWrite_R61505U(0x000F);
LCD_CtrlWrite_R61505U(0x41); LCD_DataWrite_R61505U(0x00F0);
LCD_CtrlWrite_R61505U(0x19); LCD_DataWrite_R61505U(0x0049);
LCD_CtrlWrite_R61505U(0x93); LCD_DataWrite_R61505U(0x000C);
delayms(80);
LCD_CtrlWrite_R61505U(0x20); LCD_DataWrite_R61505U(0x0040);
LCD_CtrlWrite_R61505U(0x1D); LCD_DataWrite_R61505U(0x0007);
LCD_CtrlWrite_R61505U(0x1E); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x1F); LCD_DataWrite_R61505U(0x0004);
LCD_CtrlWrite_R61505U(0x44); LCD_DataWrite_R61505U(0x004D);
LCD_CtrlWrite_R61505U(0x45); LCD_DataWrite_R61505U(0x0011);
delayms(80);
LCD_CtrlWrite_R61505U(0x1C); LCD_DataWrite_R61505U(0x0004);
delayms(80);
LCD_CtrlWrite_R61505U(0x43); LCD_DataWrite_R61505U(0x0080);
delayms(80);
LCD_CtrlWrite_R61505U(0x1B); LCD_DataWrite_R61505U(0x0018);
delayms(80);
LCD_CtrlWrite_R61505U(0x1B); LCD_DataWrite_R61505U(0x0010);
delayms(80);
LCD_CtrlWrite_R61505U(0x90); LCD_DataWrite_R61505U(0x007F);
LCD_CtrlWrite_R61505U(0x26); LCD_DataWrite_R61505U(0x0004);
delayms(80);
LCD_CtrlWrite_R61505U(0x26); LCD_DataWrite_R61505U(0x0024);
LCD_CtrlWrite_R61505U(0x26); LCD_DataWrite_R61505U(0x002C);
delayms(80);
LCD_CtrlWrite_R61505U(0x26); LCD_DataWrite_R61505U(0x003C);
LCD_CtrlWrite_R61505U(0x57); LCD_DataWrite_R61505U(0x0002);
LCD_CtrlWrite_R61505U(0x95); LCD_DataWrite_R61505U(0x0002);
LCD_CtrlWrite_R61505U(0x57); LCD_DataWrite_R61505U(0x0000);
LCD_CtrlWrite_R61505U(0x22); //LCD_DataWrite_R61505U(0x0038);
}
#if 1
else if(g_CurLcdID == LCD_SHENGDA_D9320)
{
LCD_set_reg(0x00E5,0x8000);
LCD_set_reg(0x0000,0x0001);
LCD_set_reg(0x0001,0x0100);
LCD_set_reg(0x0002,0x0700);
LCD_set_reg(0x0003,0x1030);
LCD_set_reg(0x0004,0x0000);
LCD_set_reg(0x0008,0x0202);
LCD_set_reg(0x0009,0x0000);
LCD_set_reg(0x000A,0x0000);
LCD_set_reg(0x000C,0x0000);
LCD_set_reg(0x000D,0x0000);
LCD_set_reg(0x000F,0x0000);
LCD_set_reg(0x0010,0x0000);
LCD_set_reg(0x0011,0x0007);
LCD_set_reg(0x0012,0x0000);
LCD_set_reg(0x0013,0x0000);
delayms(200);//200
LCD_set_reg(0x0010,0x17b0);
LCD_set_reg(0x0011,0x0037);
delayms(50);
LCD_set_reg(0x0012,0x013c);
delayms(50);
LCD_set_reg(0x0013,0x1f00);
delayms(50);
LCD_set_reg(0x0029,0xffff);
delayms(50);
LCD_set_reg(0x0020,0x0000);
LCD_set_reg(0x0021,0x0000);
LCD_set_reg(0x0030,0x0000);
LCD_set_reg(0x0031,0x0505);
LCD_set_reg(0x0032,0x0004);
LCD_set_reg(0x0035,0x0006);
LCD_set_reg(0x0036,0x0707);
LCD_set_reg(0x0037,0x0105);
LCD_set_reg(0x0038,0x0002);
LCD_set_reg(0x0039,0x0707);
LCD_set_reg(0x003C,0x0704);
LCD_set_reg(0x003D,0x0807);
LCD_set_reg(0x0050,0x0000);
LCD_set_reg(0x0051,0x00EF);
LCD_set_reg(0x0052,0x0000);
LCD_set_reg(0x0053,0x013F);
LCD_set_reg(0x0060,0x2700);
LCD_set_reg(0x0061,0x0001);
LCD_set_reg(0x006A,0x0000);
LCD_set_reg(0x0080,0x0000);
LCD_set_reg(0x0081,0x0000);
LCD_set_reg(0x0082,0x0000);
LCD_set_reg(0x0083,0x0000);
LCD_set_reg(0x0084,0x0000);
LCD_set_reg(0x0085,0x0000);
LCD_set_reg(0x0090,0x0010);
LCD_set_reg(0x0092,0x0000);
LCD_set_reg(0x0093,0x0003);
LCD_set_reg(0x0095,0x0110);
LCD_set_reg(0x0097,0x0000);
LCD_set_reg(0x0098,0x0000);
LCD_set_reg(0x0007,0x0173);
LCD_CtrlWrite_R61505U(0x22);
}
else if(g_CurLcdID == LCD_TIANMA_X)
{
LCD_set_reg(0x07, 0x0000);
LCD_Delay(40);
LCD_CtrlWrite_R61505U(0x00);
LCD_CtrlWrite_R61505U(0x00);
LCD_CtrlWrite_R61505U(0x00);
LCD_CtrlWrite_R61505U(0x00);
LCD_Delay(15);
LCD_set_reg(0xa4, 0x0001);
LCD_Delay(15);
LCD_set_reg(0x08, 0x0808);
//**********Adjust the Gamma Curve***********//
LCD_set_reg(0x30, 0x0707);
LCD_set_reg(0x31, 0x0607);
LCD_set_reg(0x32, 0x0200);
LCD_set_reg(0x33, 0x0301);
LCD_set_reg(0x34, 0x0101);
LCD_set_reg(0x35, 0x0404);
LCD_set_reg(0x36, 0x0a00);
LCD_set_reg(0x37, 0x0707);
LCD_set_reg(0x38, 0x0607);
LCD_set_reg(0x39, 0x0200);
LCD_set_reg(0x3A, 0x0301);
LCD_set_reg(0x3B, 0x0101);
LCD_set_reg(0x3C, 0x0404);
LCD_set_reg(0x3D, 0x0a00);
//******** Gamma ***********//
// *********************************************************//
//**********Power On sequence************//
LCD_set_reg(0x07, 0x0001);
LCD_set_reg(0x17, 0x0001);
LCD_set_reg(0x10, 0x16b0);
LCD_set_reg(0x11, 0x0007);
LCD_set_reg(0x12, 0x011b);
LCD_set_reg(0x13, 0x0f00);
LCD_set_reg(0x29, 0x0010);
LCD_set_reg(0x2a, 0x0095);
LCD_set_reg(0x12, 0x0139);
//***********************************************************//
LCD_set_reg(0x01, 0x0500);
LCD_set_reg(0x02, 0x0700);
LCD_set_reg(0x03, 0x0030);
LCD_set_reg(0x04, 0x0000);
LCD_set_reg(0x09, 0x0021);
LCD_set_reg(0x0a, 0x0008);
//Window address control instruction
LCD_set_reg(0x50, 0x0000);
LCD_set_reg(0x51, 0x00ef);
LCD_set_reg(0x52, 0x0000);
LCD_set_reg(0x53, 0x013F);
//Driver Output Control
LCD_set_reg(0x60, 0x2700);
//Base image display control
LCD_set_reg(0x61, 0x0000);
//Panel interface control
LCD_set_reg(0x90, 0x0010);
LCD_set_reg(0x92, 0x0000);
LCD_set_reg(0x93, 0x0000);
LCD_set_reg(0x07, 0x0021);
LCD_Delay(50);
LCD_set_reg(0x07, 0x0061);
LCD_Delay(100);
LCD_set_reg(0x07, 0x0173);
//RAM Address Set (Horizontal Address)
LCD_set_reg(0x20, 0x0000);
//RAM Address Set (Vertical Address)
LCD_set_reg(0x21, 0x0000);
LCD_CtrlWrite_R61505U(0x22);
}
else if(g_CurLcdID == LCD_JINGYUAN_D9320)
{
LCD_set_reg(0x00E5,0x8000);
LCD_set_reg(0x0000,0x0001);
LCD_set_reg(0x0001,0x0100);
LCD_set_reg(0x0002,0x0700);
LCD_set_reg(0x0003,0x1030);
LCD_set_reg(0x0004,0x0000);
LCD_set_reg(0x0008,0x0202);
LCD_set_reg(0x0009,0x0000);
LCD_set_reg(0x000A,0x0000);
LCD_set_reg(0x000C,0x0000);
LCD_set_reg(0x000D,0x0000);
LCD_set_reg(0x000F,0x0000);
LCD_set_reg(0x0010,0x0000);
LCD_set_reg(0x0011,0x0007);
LCD_set_reg(0x0012,0x0000);
LCD_set_reg(0x0013,0x0000);
delayms(200);//200
LCD_set_reg(0x0010,0x17B0);
LCD_set_reg(0x0011,0x0227);//0007
delayms(50);
LCD_set_reg(0x0012,0x0139);//0x013A
delayms(50);
LCD_set_reg(0x0013,0x1A00);//1A00
delayms(50);
LCD_set_reg(0x0029,0x0018); //000C
delayms(50);
LCD_set_reg(0x0020,0x0000);
LCD_set_reg(0x0021,0x0000);
LCD_set_reg(0x0030,0x0004);//0x0000
LCD_set_reg(0x0031,0x0506);//0x0505
LCD_set_reg(0x0032,0x0305);//0x0004
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -