📄 lcd.c.bak
字号:
SET_LCD_CMD_PARAMETER(4,LCD_DATA, (0xDB00 >> 8));
SET_LCD_CMD_PARAMETER(5,LCD_DATA, (0xDB00 & 0x00FF));
LCD_SEND_DMA_CMD(6);
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
LCD_set_reg(0x0007,0x0037);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,(0x0042&0xFF00)|(0x0042&0xFF));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,(0xDB00&0xFF00)|(0xDB00&0xFF));
LCD_SEND_DMA_CMD(2);
#elif (defined(LCD_18BIT_MODE))
LCD_CtrlWrite_S6D0154(0x0007);
LCD_DataWrite_S6D0154(0x0037);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00)<<2)|((0x0042&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0xDB00&0xFF00)<<2)|((0xDB00&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
#endif
#else
LCD_set_reg(0x0007, 0x0037);
LCD_set_reg(0x0042, 0xDB00);
#endif
}
kal_uint8 LCD_Partial_line_S6D0154(void)
{
return 1; /* partial display in 1 line alignment */
}
void LCD_blockClear_S6D0154(kal_uint16 x1, kal_uint16 y1, kal_uint16 x2, kal_uint16 y2, kal_uint16 data)
{
kal_uint16 LCD_x;
kal_uint16 LCD_y;
kal_uint8 r_color, g_color, b_color;
//return; //lks
x1 -= (x1 & 0x03);
x2 += (3 - (x2 & 0x03));
r_color = (data & 0xF800) >> 10; /* transfer to RGB666 */
g_color = (data >> 5) & 0x3F;
b_color = (data & 0x1F) << 1;
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0044 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0044 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (x2 & 0x00FF));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (x1 & 0x00FF));
SET_LCD_CMD_PARAMETER(4,LCD_CMD, (0x0045 >> 8));
SET_LCD_CMD_PARAMETER(5,LCD_CMD, (0x0045 & 0x00FF));
SET_LCD_CMD_PARAMETER(6,LCD_DATA, (y2 & 0x00FF));
SET_LCD_CMD_PARAMETER(7,LCD_DATA, (y1 & 0x00FF));
SET_LCD_CMD_PARAMETER(8,LCD_CMD, (0x0021 >> 8));
SET_LCD_CMD_PARAMETER(9,LCD_CMD, (0x0021 & 0x00FF));
SET_LCD_CMD_PARAMETER(10,LCD_DATA, (y1 & 0x00FF));
SET_LCD_CMD_PARAMETER(11,LCD_DATA, (x1 & 0x00FF));
SET_LCD_CMD_PARAMETER(12,LCD_CMD, (0x0022 >> 8));
SET_LCD_CMD_PARAMETER(13,LCD_CMD, (0x0022 & 0x00FF));
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
#if 0
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00))|((0x0044&0xFF)));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((x2&0xFF)<<8)|((x1&0xFF)));
SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0045&0xFF00))|((0x0045&0xFF)));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((y2&0xFF)<<8)|((y1&0xFF)));
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0021&0xFF00))|((0x0021&0xFF)));
SET_LCD_CMD_PARAMETER(5,LCD_DATA,((y1&0xFF)<<8)|((x1&0xFF)));
SET_LCD_CMD_PARAMETER(6,LCD_CMD,((0x0022&0xFF00))|((0x0022&0xFF)));
LCD_SEND_DMA_CMD(7);
#endif
LCD_CtrlWrite_S6D0154(0x0036); // horizontal window send address
LCD_DataWrite_S6D0154(x2);
LCD_CtrlWrite_S6D0154(0x0037); //horizontal windows start address
LCD_DataWrite_S6D0154(x1);
LCD_CtrlWrite_S6D0154(0x0038); // vertical windows end address
LCD_DataWrite_S6D0154(y2);
LCD_CtrlWrite_S6D0154(0x0039); // vertical windows start address
LCD_DataWrite_S6D0154(y1);
LCD_CtrlWrite_S6D0154(0x0020); //RAM address set
LCD_DataWrite_S6D0154(x1); //horizontial address
LCD_CtrlWrite_S6D0154(0x0021); // RAM address set
LCD_DataWrite_S6D0154(y1); //vertical address
LCD_CtrlWrite_S6D0154(0x0022);
#elif (defined(LCD_18BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00)<<2)|((0x0044&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((x2&0xFF)<<10)|((x1&0xFF)<<1));
SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0045&0xFF00)<<2)|((0x0045&0xFF)<<1));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((y2&0xFF)<<10)|((y1&0xFF)<<1));
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0021&0xFF00)<<2)|((0x0021&0xFF)<<1));
SET_LCD_CMD_PARAMETER(5,LCD_DATA,((y1&0xFF)<<10)|((x1&0xFF)<<1));
SET_LCD_CMD_PARAMETER(6,LCD_CMD,((0x0022&0xFF00)<<2)|((0x0022&0xFF)<<1));
LCD_SEND_DMA_CMD(7);
#endif
#else
LCD_CtrlWrite_S6D0154(0x0044);
LCD_DataWrite_S6D0154((((x2&0xFF)<<8)|(x1&0xFF)));
LCD_CtrlWrite_S6D0154(0x0045);
LCD_DataWrite_S6D0154((((y2&0xFF)<<8)|(y1&0xFF)));
LCD_CtrlWrite_S6D0154(0x0021);
LCD_DataWrite_S6D0154((((y1&0xFF)<<8)|(x1&0xFF)));
LCD_CtrlWrite_S6D0154(0x0022);
#endif
for (LCD_y = y1; LCD_y <= y2; LCD_y++) {
for (LCD_x = x1; LCD_x <= x2; LCD_x++) {
#if (defined(LCD_8BIT_MODE))
*((volatile unsigned char *) LCD_S6D0154_DATA_ADDR) = (kal_uint8)(data >> 8);
*((volatile unsigned char *) LCD_S6D0154_DATA_ADDR) = (kal_uint8)(data & 0x00FF);
#elif (defined(LCD_16BIT_MODE))
*((volatile unsigned short *) LCD_S6D0154_DATA_ADDR) = data;
#elif (defined(LCD_18BIT_MODE))
*((volatile unsigned int *) LCD_S6D0154_DATA_ADDR)=(r_color<<12)|(g_color<<6)|b_color;
#elif (defined(LCD_9BIT_MODE))
*((volatile unsigned short *) LCD_S6D0154_DATA_ADDR)=(r_color<<6)|(g_color>>3);
*((volatile unsigned short *) LCD_S6D0154_DATA_ADDR)=((g_color&0x07)<<6)|b_color;
#endif
}
}
}
void LCD_ClearAll_S6D0154(kal_uint16 data)
{
LCD_blockClear_S6D0154(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, data);
}
void LCD_Init_S6D0154(kal_uint32 bkground, void **buf_addr)
{
#if 0
CLEAR_LCD_CTRL_RESET_PIN;
LCD_Delay(0x1000);
LCD_Delay(0x1000);
SET_LCD_CTRL_RESET_PIN;
delayms(150); // After Inter-MicroP Program (load OTP)
// Gamma for CMO 2.8
LCD_set_reg(0x46,0x95);
LCD_set_reg(0x47,0x51);
LCD_set_reg(0x48,0x00);
LCD_set_reg(0x49,0x36);
LCD_set_reg(0x4A,0x11);
LCD_set_reg(0x4B,0x66);
LCD_set_reg(0x4C,0x14);
LCD_set_reg(0x4D,0x77);
LCD_set_reg(0x4E,0x13);
LCD_set_reg(0x4F,0x4C);
LCD_set_reg(0x50,0x46);
LCD_set_reg(0x51,0x46);
//240x320 window setting
LCD_set_reg(0x02,0x00); // Column address start2
LCD_set_reg(0x03,0x00); // Column address start1
LCD_set_reg(0x04,0x00); // Column address end2
LCD_set_reg(0x05,0xEF); // Column address end1
LCD_set_reg(0x06,0x00); // Row address start2
LCD_set_reg(0x07,0x00); // Row address start1
LCD_set_reg(0x08,0x01); // Row address end2
LCD_set_reg(0x09,0x3F); // Row address end1
// Display Setting
LCD_set_reg(0x01,0x06); // IDMON=0, INVON=1, NORON=1, PTLON=0
LCD_set_reg(0x16,0x48); // MY=0, MX=0, MV=0, ML=1, BGR=0, TEON=0
LCD_set_reg(0x23,0x95); // N_DC=1001 0101
LCD_set_reg(0x24,0x95); // P_DC=1001 0101
LCD_set_reg(0x25,0xFF); // I_DC=1111 1111
LCD_set_reg(0x27,0x06); // N_BP=0000 0110
LCD_set_reg(0x28,0x06); // N_FP=0000 0110
LCD_set_reg(0x29,0x06); // P_BP=0000 0110
LCD_set_reg(0x2A,0x06); // P_FP=0000 0110
LCD_set_reg(0x2C,0x06); // I_BP=0000 0110
LCD_set_reg(0x2D,0x06); // I_FP=0000 0110
LCD_set_reg(0x3A,0x01); // N_RTN=0000, N_NW=001
LCD_set_reg(0x3B,0x01); // P_RTN=0000, P_NW=001
LCD_set_reg(0x3C,0xF0); // I_RTN=1111, I_NW=000
LCD_set_reg(0x3D,0x00); // DIV=00
delayms(20);
LCD_set_reg(0x35,0x38); // EQS=38h
LCD_set_reg(0x36,0x78); // EQP=78h
LCD_set_reg(0x3E,0x38); // SON=38h
LCD_set_reg(0x40,0x0F); // GDON=0Fh
LCD_set_reg(0x41,0xF0); // GDOFF
// Power Supply Setting
LCD_set_reg(0x19,0x49); // OSCADJ=10 0000, OSD_EN=1 //60Hz
LCD_set_reg(0x93,0x0C); // RADJ=1100
delayms(10);
LCD_set_reg(0x20,0x40); // BT=0100
LCD_set_reg(0x1D,0x07); // VC1=111
LCD_set_reg(0x1E,0x00); // VC3=000
LCD_set_reg(0x1F,0x04); // VRH=0100
// VCOM Setting for CMO 2.8” Panel
LCD_set_reg(0x44,0x4D); // VCM=101 0000
LCD_set_reg(0x45,0x11); // VDV=1 0001
delayms(10);
LCD_set_reg(0x1C,0x04); // AP=100
delayms(20);
LCD_set_reg(0x1B,0x18); // GASENB=0, PON=1, DK=1, XDK=0, DDVDH_TRI=0, STB=0
delayms(40);
LCD_set_reg(0x1B,0x10); // GASENB=0, PON=1, DK=0, XDK=0, DDVDH_TRI=0, STB=0
delayms(40);
LCD_set_reg(0x43,0x80); //Set VCOMG=1
delayms(100);
// Display ON Setting
LCD_set_reg(0x90,0x7F); // SAP=0111 1111
LCD_set_reg(0x26,0x04); //GON=0, DTE=0, D=01
delayms(40);
LCD_set_reg(0x26,0x24); //GON=1, DTE=0, D=01
LCD_set_reg(0x26,0x2C); //GON=1, DTE=0, D=11
delayms(40);
LCD_set_reg(0x26,0x3C); //GON=1, DTE=1, D=11
// Set internal VDDD voltage
LCD_set_reg(0x0057,0x0002); //Test_Mode Enable
LCD_set_reg(0x0055,0x0000); //VDC_SEL=000, VDDD=1.95V
LCD_set_reg(0x00FE,0x005A); //For ESD protection
LCD_set_reg(0x0095,0x0001); // Set Display clock and Pumping clock to synchronize
LCD_set_reg(0x0057,0x0000); // Test_Mode Disable
LCD_CtrlWrite_S6D0154(0x22);
#endif
#if 1
CLEAR_LCD_CTRL_RESET_PIN;
LCD_Delay(0x1000);
LCD_Delay(0x1000);
SET_LCD_CTRL_RESET_PIN;
LCD_Delay(0x1000);
LCD_Delay(0x1000);
LCD_CtrlWrite_S6D0154(0x46); LCD_DataWrite_S6D0154(0x0095);
LCD_CtrlWrite_S6D0154(0x47); LCD_DataWrite_S6D0154(0x0051);
LCD_CtrlWrite_S6D0154(0x48); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x49); LCD_DataWrite_S6D0154(0x0036);
LCD_CtrlWrite_S6D0154(0x4a); LCD_DataWrite_S6D0154(0x0011);
LCD_CtrlWrite_S6D0154(0x4b); LCD_DataWrite_S6D0154(0x0066);
LCD_CtrlWrite_S6D0154(0x4c); LCD_DataWrite_S6D0154(0x0014);
LCD_CtrlWrite_S6D0154(0x4d); LCD_DataWrite_S6D0154(0x0077);
LCD_CtrlWrite_S6D0154(0x4e); LCD_DataWrite_S6D0154(0x0013);
LCD_CtrlWrite_S6D0154(0x4f); LCD_DataWrite_S6D0154(0x004c);
LCD_CtrlWrite_S6D0154(0x50); LCD_DataWrite_S6D0154(0x0046);
LCD_CtrlWrite_S6D0154(0x51); LCD_DataWrite_S6D0154(0x0046);
LCD_CtrlWrite_S6D0154(0x02); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x03); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x04); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x05); LCD_DataWrite_S6D0154(0x00ef);
LCD_CtrlWrite_S6D0154(0x06); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x07); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x08); LCD_DataWrite_S6D0154(0x0001);
LCD_CtrlWrite_S6D0154(0x09); LCD_DataWrite_S6D0154(0x003f);
LCD_CtrlWrite_S6D0154(0x01); LCD_DataWrite_S6D0154(0x0006);
LCD_CtrlWrite_S6D0154(0x16); LCD_DataWrite_S6D0154(0x00c8);
LCD_CtrlWrite_S6D0154(0x23); LCD_DataWrite_S6D0154(0x0095);
LCD_CtrlWrite_S6D0154(0x24); LCD_DataWrite_S6D0154(0x0095);
LCD_CtrlWrite_S6D0154(0x25); LCD_DataWrite_S6D0154(0x00FF);
LCD_CtrlWrite_S6D0154(0x27); LCD_DataWrite_S6D0154(0x0006);
LCD_CtrlWrite_S6D0154(0x28); LCD_DataWrite_S6D0154(0x0006);
LCD_CtrlWrite_S6D0154(0x29); LCD_DataWrite_S6D0154(0x0006);
LCD_CtrlWrite_S6D0154(0x2a); LCD_DataWrite_S6D0154(0x0006);
LCD_CtrlWrite_S6D0154(0x2c); LCD_DataWrite_S6D0154(0x0006);
LCD_CtrlWrite_S6D0154(0x2d); LCD_DataWrite_S6D0154(0x0006);
LCD_CtrlWrite_S6D0154(0x3a); LCD_DataWrite_S6D0154(0x0001);
LCD_CtrlWrite_S6D0154(0x3b); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x3c); LCD_DataWrite_S6D0154(0x00f0);
LCD_CtrlWrite_S6D0154(0x3d); LCD_DataWrite_S6D0154(0x0000);
delayms(80);
LCD_CtrlWrite_S6D0154(0x35); LCD_DataWrite_S6D0154(0x0038);
LCD_CtrlWrite_S6D0154(0x36); LCD_DataWrite_S6D0154(0x0078);
LCD_CtrlWrite_S6D0154(0x3E); LCD_DataWrite_S6D0154(0x0038);
LCD_CtrlWrite_S6D0154(0x40); LCD_DataWrite_S6D0154(0x000F);
LCD_CtrlWrite_S6D0154(0x41); LCD_DataWrite_S6D0154(0x00F0);
LCD_CtrlWrite_S6D0154(0x19); LCD_DataWrite_S6D0154(0x0049);
LCD_CtrlWrite_S6D0154(0x93); LCD_DataWrite_S6D0154(0x000C);
delayms(80);
LCD_CtrlWrite_S6D0154(0x20); LCD_DataWrite_S6D0154(0x0040);
LCD_CtrlWrite_S6D0154(0x1D); LCD_DataWrite_S6D0154(0x0007);
LCD_CtrlWrite_S6D0154(0x1E); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x1F); LCD_DataWrite_S6D0154(0x0004);
LCD_CtrlWrite_S6D0154(0x44); LCD_DataWrite_S6D0154(0x004D);
LCD_CtrlWrite_S6D0154(0x45); LCD_DataWrite_S6D0154(0x0011);
delayms(80);
LCD_CtrlWrite_S6D0154(0x1C); LCD_DataWrite_S6D0154(0x0004);
delayms(80);
LCD_CtrlWrite_S6D0154(0x43); LCD_DataWrite_S6D0154(0x0080);
delayms(80);
LCD_CtrlWrite_S6D0154(0x1B); LCD_DataWrite_S6D0154(0x0018);
delayms(80);
LCD_CtrlWrite_S6D0154(0x1B); LCD_DataWrite_S6D0154(0x0010);
delayms(80);
LCD_CtrlWrite_S6D0154(0x90); LCD_DataWrite_S6D0154(0x007F);
LCD_CtrlWrite_S6D0154(0x26); LCD_DataWrite_S6D0154(0x0004);
delayms(80);
LCD_CtrlWrite_S6D0154(0x26); LCD_DataWrite_S6D0154(0x0024);
LCD_CtrlWrite_S6D0154(0x26); LCD_DataWrite_S6D0154(0x002C);
delayms(80);
LCD_CtrlWrite_S6D0154(0x26); LCD_DataWrite_S6D0154(0x003C);
LCD_CtrlWrite_S6D0154(0x57); LCD_DataWrite_S6D0154(0x0002);
LCD_CtrlWrite_S6D0154(0x95); LCD_DataWrite_S6D0154(0x0002);
LCD_CtrlWrite_S6D0154(0x57); LCD_DataWrite_S6D0154(0x0000);
LCD_CtrlWrite_S6D0154(0x22); //LCD_DataWrite_S6D0154(0x0038);
#endif
}
void LCD_PWRON_S6D0154(kal_bool on)
{
}
void LCD_SetContrast_S6D0154(kal_uint8 level)
{
}
void LCD_ON_S6D0154(kal_bool on)
{
}
void LCD_BlockWrite_S6D0154(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
kal_uint8 counter = 0 ,cnt = 0 ;
while (LCD_IS_RUNNING);
// ASSERT(lcd_assert_fail==KAL_FALSE);
lcd_assert_fail = KAL_TRUE;
#ifdef LCD_CMD_DMA_MODE
#if (defined(LCD_8BIT_MODE))
/*
// SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x11);
// delayms(600);
// SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x29);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x05);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x10);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x45);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,(startx)&0xff);
SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x46);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -