📄 lcd_ds_s6d0154.c
字号:
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, 0x1F01);//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_DataWrite(0x0022);
LCD_Delay(20);
LCD_ClearAll_DS_S6D0154(bkground);
}
void LCD_PWRON_DS_S6D0154(kal_bool on)
{
}
void LCD_SetContrast_DS_S6D0154(kal_uint8 level)
{
}
void LCD_ON_DS_S6D0154(kal_bool on)
{
}
void LCD_BlockWrite_DS_S6D0154(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
// ASSERT(lcd_assert_fail==KAL_FALSE);
//lcd_assert_fail = KAL_TRUE;
#ifdef LCD_CMD_DMA_MODE
SET_LCD_CMD_PARAMETER(0, LCD_CMD, 0x0037);
SET_LCD_CMD_PARAMETER(1, LCD_DATA, startx);
SET_LCD_CMD_PARAMETER(2, LCD_CMD, 0x0036);
SET_LCD_CMD_PARAMETER(3, LCD_DATA, endx);
SET_LCD_CMD_PARAMETER(4, LCD_CMD, 0x0039);
SET_LCD_CMD_PARAMETER(5, LCD_DATA, starty);
SET_LCD_CMD_PARAMETER(6, LCD_CMD, 0x0038);
SET_LCD_CMD_PARAMETER(7, LCD_DATA, endy);
SET_LCD_CMD_PARAMETER(8, LCD_CMD, 0x0020);
SET_LCD_CMD_PARAMETER(9, LCD_DATA, startx);
SET_LCD_CMD_PARAMETER(10, LCD_CMD, 0x0021);
SET_LCD_CMD_PARAMETER(11, LCD_DATA, starty);
SET_LCD_CMD_PARAMETER(12,LCD_CMD,0x0022);
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(13);
ENABLE_LCD_TRANSFER_COMPLETE_INT;
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING);
START_LCD_TRANSFER;
#else /* LCD_CMD_DMA_MODE */
LCD_CtrlWrite_DS_S6D0154(0x0044);
LCD_DataWrite_DS_S6D0154((((endx&0xFF)<<8)|(startx&0xFF)));
LCD_CtrlWrite_DS_S6D0154(0x0045);
LCD_DataWrite_DS_S6D0154((((endy&0xFF)<<8)|(starty&0xFF)));
LCD_CtrlWrite_DS_S6D0154(0x0021);
LCD_DataWrite_DS_S6D0154((((starty&0xFF)<<8)|(startx&0xFF)));
LCD_CtrlWrite_DS_S6D0154(0x0022);
DISABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
START_LCD_TRANSFER;
#endif /* LCD_CMD_DMA_MODE */
lcd_assert_fail = KAL_FALSE;
}
void LCD_Size_DS_S6D0154(kal_uint16 *out_LCD_width, kal_uint16 *out_LCD_height)
{
*out_LCD_width = LCD_WIDTH;
*out_LCD_height = LCD_HEIGHT;
}
/*Engineering mode*/
kal_uint8 LCD_GetParm_DS_S6D0154(lcd_func_type type)
{
switch(type) {
case lcd_Bais_func:
return 1;
case lcd_Contrast_func:
return 1;
case lcd_LineRate_func:
return 4;
case lcd_Temperature_Compensation_func:
return 4;
default:
ASSERT(0);
}
return 100;
}
void LCD_SetBias_DS_S6D0154(kal_uint8 *bias)
{
}
void LCD_Contrast_DS_S6D0154(kal_uint8 *contrast)
{
}
void LCD_LineRate_DS_S6D0154(kal_uint8 *linerate)
{
}
void LCD_Temp_Compensate_DS_S6D0154(kal_uint8 *compensate)
{
}
kal_bool LCD_ESD_check_DS_S6D0154()
{
volatile kal_uint16 data_value = 0;
kal_uint16 data_addr = 0;
kal_uint8 i, reg_start_idx, reg_end_idx;
if (lcd_reg_index > 2) {
lcd_reg_index = 0;
}
while (LCD_IS_RUNNING);
if (lcd_reg_index == 0) {
reg_start_idx = 0;
reg_end_idx = 7;
}else if (lcd_reg_index == 1) {
reg_start_idx = 8;
reg_end_idx = 14;
}else{
reg_start_idx = 15;
reg_end_idx = N_lcd_reg - 1;
}
for (i = reg_start_idx; i <= reg_end_idx; i++) {
if (lcd_check == 1) {
data_addr = lcd_check_reg.reg[i].addr;
data_value = readreg_DS_S6D0154(data_addr);
kal_prompt_trace(MOD_ENG, "--read %x as %x", data_addr, data_value);
if (data_value != lcd_check_reg.reg[i].para) {
kal_prompt_trace(MOD_ENG, "ESD FAIL read %x as %x", data_addr, data_value);
return KAL_FALSE;
}
}
}
lcd_reg_index++;
while (LCD_IS_RUNNING);
return KAL_TRUE;
}
LCD_Funcs LCD_FUNCS_DS_S6D0154 = {
LCD_Init_DS_S6D0154,
LCD_PWRON_DS_S6D0154,
LCD_SetContrast_DS_S6D0154,
LCD_ON_DS_S6D0154,
LCD_BlockWrite_DS_S6D0154,
LCD_Size_DS_S6D0154,
LCD_EnterSleep_DS_S6D0154,
LCD_ExitSleep_DS_S6D0154,
LCD_Partial_On_DS_S6D0154,
LCD_Partial_Off_DS_S6D0154,
LCD_Partial_line_DS_S6D0154,
/*Engineering mode*/
LCD_GetParm_DS_S6D0154,
LCD_SetBias_DS_S6D0154,
LCD_Contrast_DS_S6D0154,
LCD_LineRate_DS_S6D0154,
LCD_Temp_Compensate_DS_S6D0154
#ifdef __LCD_ESD_RECOVERY__
,LCD_ESD_check_DS_S6D0154
#endif
};
#if 0 //chenduanyang 20071024 for lcd auto adapt
void LCD_FunConfig(void)
{
MainLCD = &LCD_func_DS_S6D0154;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -