📄 lcd_ds_s6d0154.c
字号:
ret +=LCD_DataRead;
#endif
return ret;
}
void LCD_set_reg(kal_uint16 reg_index, kal_uint16 reg_data)
{
LCD_CtrlWrite(reg_index);
LCD_Delay(10);
LCD_DataWrite(reg_data);
// LCD_CtrlWrite_DS_S6D0154(reg_index);
//LCD_Delay(10);
// LCD_DataWrite_DS_S6D0154(reg_data);
}
void LCD_EnterSleep_DS_S6D0154(void)
{
LCD_set_reg(0x0015,0x0000);
LCD_set_reg(0x0007,0x0016);
LCD_Delay(3000);//200ms
LCD_set_reg(0x0007,0x0000);
LCD_Delay(3000); //100ms
LCD_set_reg(0x0010,0x0001);
LCD_Delay(6000);//200ms
}
void LCD_ExitSleep_DS_S6D0154(void)
{
LCD_set_reg(0x0011, 0x001C);// VCI1_EN=1, VC:1100 Power Control 2
LCD_set_reg(0x0012, 0x1212);// BT=001, DC1=10, DC2=01, DC3=10 Power Control 3
LCD_set_reg(0x0013, 0x0041);// DCR_EX=0, DCR=000, GVD=1000001 Power Control 4
LCD_set_reg(0x0014, 0x4050);// VCOMG=0, VCM=1000000 , VCMR=0, VML=1010000 Power Control 5
LCD_set_reg(0x0010, 0x0800);// SAP=1000, DSTB=0, STB=0 Power Control 1
LCD_set_reg(0x0011, 0x011C);// PON On Step_up Circuit 1(AVDD)
LCD_Delay(3000);//300ms10ms);
LCD_set_reg(0x0011, 0x031C);// PON1 On Step_up Circuit 2 (VGH)
LCD_Delay(3000);//300ms 10ms
LCD_set_reg(0x0011, 0x071C);// PON2 On Step_up Circuit 2 (VGL)
LCD_Delay(3000);//300ms 10ms
LCD_set_reg(0x0011, 0x0F1C);// PON3 On Step_up Circuit 3 (VCL)
LCD_Delay(40);//600ms 20ms600ms
LCD_set_reg(0x0011, 0x0F39);//0x0f3c 20070928 AON On OP-Amp.(GVDD,VCOMH,VCOML)
LCD_Delay(60);//500ms 30ms900ms
//Display Control Register Setting(Seq-2)
LCD_set_reg(0x0001, 0x0128);// VSPL/HSPL/DPL/EPL=0, SM=0, GS=0, SS=1, NL=101000 320 Line 128
//Delay_ms(100);//100ms300ms/
LCD_set_reg(0x0002, 0x0100);// INV=01, FLD=0 Line Inversion with Frame Invesion
LCD_set_reg(0x0003, 0x1030);//1030// BGR=1, MTD=11, I/D=11, AM=0
LCD_set_reg(0x0008, 0x0808);// FP=100, BP=100
LCD_set_reg(0x000B, 0x1105);// NO=0001, SDT=0001, RTN=0101 Frame Frequency
LCD_set_reg(0x000C, 0x0000);// RM=0, DM=00, RIM=00
//Delay_ms(100);//100ms 300ms
LCD_set_reg(0x0015, 0x0020);// VCIR=010 0X0020
LCD_set_reg(0x0030, 0x0000);// SCN 0 Start from G1
LCD_set_reg(0x0034, 0x013F);// SE1 = 100111111( 319)
LCD_set_reg(0x0035, 0x0000);// SS1 = 000000000
LCD_set_reg(0x0036, 0x00EF);// HEA = 011101111(239)
LCD_set_reg(0x0037, 0x0000);// HSA = 000000000
LCD_set_reg(0x0038, 0x013F);// VEA = 100111111( 319)
LCD_set_reg(0x0039, 0x0000);// VSA = 000000000
LCD_set_reg(0x0050, 0x0101);// Gamma Setting
LCD_set_reg(0x0051, 0x0903);// Gamma Setting
LCD_set_reg(0x0052, 0x0B08);// Gamma Setting
LCD_set_reg(0x0053, 0x0805);//0x0901 Gamma Setting
LCD_set_reg(0x0054, 0x0101);//0x0605 Gamma Setting
LCD_set_reg(0x0055, 0x0D06);// Gamma Setting
LCD_set_reg(0x0056, 0x0E0A);//0x0E0E Gamma Setting
LCD_set_reg(0x0057, 0x0100);//0x010A Gamma Setting
LCD_set_reg(0x0058, 0x1F0B);// 0x0A1F Gamma Setting
LCD_set_reg(0x0059, 0x0201);// Gamma Setting
LCD_set_reg(0x0020, 0x0000);// Set RAM Address
LCD_set_reg(0x0021, 0x0000);// Set RAM Address
//0x22 RAM Data Write
//LCD_CtrlWrite(0x0022);
//Display On Sequence(Seq-3)
LCD_set_reg(0x000F, 0x1801);//0x1801 FOSC=11000, OSC_ON=1 0x1e01
//Delay_ms(300);//300ms32ms//9000
LCD_set_reg(0x0007, 0x0016);// GON=1, REV=1, D=10
LCD_Delay(32);//200ms32ms//9000
LCD_set_reg(0x0007, 0x0017);// GON=1, REV=1, D=10
LCD_Delay(20);
}
void LCD_Partial_On_DS_S6D0154(kal_uint16 start_page,kal_uint16 end_page)
{
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0007 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0007 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x003F & 0x00FF));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x003F & 0x00FF));
SET_LCD_CMD_PARAMETER(4,LCD_CMD, (0x0042 >> 8));
SET_LCD_CMD_PARAMETER(5,LCD_CMD, (0x0042 & 0x00FF));
SET_LCD_CMD_PARAMETER(6,LCD_DATA, (end_page & 0x00FF));
SET_LCD_CMD_PARAMETER(7,LCD_DATA, (start_page & 0x00FF));
LCD_SEND_DMA_CMD(8);
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
LCD_set_reg(0x0007, 0x003f);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,(0x0042&0xFF00) | (0x0042&0xFF));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((end_page&0xFF)<<8)|(start_page&0xFF));
LCD_SEND_DMA_CMD(2);
#elif (defined(LCD_18BIT_MODE))
LCD_CtrlWrite_DS_S6D0154(0x0007);
LCD_DataWrite_DS_S6D0154(0x003f);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00)<<2)|((0x0042&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((end_page&0xFF)<<10)|((start_page&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
#endif
#else
LCD_set_reg(0x0007, 0x003f);
LCD_set_reg(0x0042, (start_page & 0xFF) | ((end_page & 0xFF) << 8));
#endif
}
void LCD_Partial_Off_DS_S6D0154(void)
{
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0007 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0007 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_CMD, (0x0042 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_CMD, (0x0042 & 0x00FF));
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_DS_S6D0154(0x0007);
LCD_DataWrite_DS_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_DS_S6D0154(void)
{
return 1; /* partial display in 1 line alignment */
}
void LCD_blockClear_DS_S6D0154(kal_uint16 x1, kal_uint16 y1, kal_uint16 x2, kal_uint16 y2, kal_uint16 data)
{
kal_uint16 LCD_x;
kal_uint16 LCD_y;
#if (defined(LCD_CMD_DMA_MODE))
SET_LCD_CMD_PARAMETER(0, LCD_CMD, 0x0037);
SET_LCD_CMD_PARAMETER(1, LCD_DATA, x1);
SET_LCD_CMD_PARAMETER(2, LCD_CMD, 0x0036);
SET_LCD_CMD_PARAMETER(3, LCD_DATA, x2);
SET_LCD_CMD_PARAMETER(4, LCD_CMD, 0x0039);
SET_LCD_CMD_PARAMETER(5, LCD_DATA, y1);
SET_LCD_CMD_PARAMETER(6, LCD_CMD, 0x0038);
SET_LCD_CMD_PARAMETER(7, LCD_DATA, y2);
SET_LCD_CMD_PARAMETER(8, LCD_CMD, 0x0020);
SET_LCD_CMD_PARAMETER(9, LCD_DATA, x1);
SET_LCD_CMD_PARAMETER(10, LCD_CMD, 0x0021);
SET_LCD_CMD_PARAMETER(11, LCD_DATA, y1);
SET_LCD_CMD_PARAMETER(12,LCD_CMD,0x0022);
LCD_SEND_DMA_CMD(13);
#else
LCD_CtrlWrite_DS_S6D0154(0x0044);
LCD_DataWrite_DS_S6D0154((((x2&0xFF)<<8)|(x1&0xFF)));
LCD_CtrlWrite_DS_S6D0154(0x0045);
LCD_DataWrite_DS_S6D0154((((y2&0xFF)<<8)|(y1&0xFF)));
LCD_CtrlWrite_DS_S6D0154(0x0021);
LCD_DataWrite_DS_S6D0154((((y1&0xFF)<<8)|(x1&0xFF)));
LCD_CtrlWrite_DS_S6D0154(0x0022);
#endif
for (LCD_y = y1; LCD_y <= y2; LCD_y++) {
for (LCD_x = x1; LCD_x <= x2; LCD_x++) {
//LCD_set_reg(0x000e,0x07E0);
*((volatile unsigned short *) LCD_DATA_ADDR) = data;
}
}
}
void LCD_ClearAll_DS_S6D0154(kal_uint16 data)
{
LCD_blockClear_DS_S6D0154(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, data);
}
#define LCD_PCON (LCD_base+0x0010)//added by chenhonglang for tft issue.
void LCD_reset_DS_S6D0154(void)
{
DRV_WriteReg(LCD_PCON,0x0000); //added by chenhonglang for tft issue.
LCD_Delay(50); //added by chenhonglang for tft issue.
DRV_WriteReg(LCD_PCON,0x0001); //added by chenhonglang for tft issue.
LCD_Delay(50);
}
void LCD_Init_DS_S6D0154(kal_uint32 bkground, void **buf_addr)
{
LCD_reset_DS_S6D0154();
LCD_Delay(100);
//power on seq 1
LCD_set_reg(0x0011, 0x001C);// VCI1_EN=1, VC:1100 Power Control 2
LCD_set_reg(0x0012, 0x1212);// BT=001, DC1=10, DC2=01, DC3=10 Power Control 3
LCD_set_reg(0x0013, 0x0041);// DCR_EX=0, DCR=000, GVD=1000001 Power Control 4
LCD_set_reg(0x0014, 0x4050);// VCOMG=0, VCM=1000000 , VCMR=0, VML=1010000 Power Control 5
LCD_set_reg(0x0010, 0x0800);// SAP=1000, DSTB=0, STB=0 Power Control 1
LCD_set_reg(0x0011, 0x011C);// PON On Step_up Circuit 1(AVDD)
LCD_Delay(3000);//300ms10ms);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -