t118_lcd.c

来自「C环境 TCON T118芯片驱动文件」· C语言 代码 · 共 934 行 · 第 1/2 页

C
934
字号
1,0x94,0xD7,
1,0x94,0xD8,
1,0x94,0xD8,
1,0x94,0xD9,
1,0x94,0xDA,
1,0x94,0xDB,
1,0x94,0xDC,
1,0x94,0xDD,
1,0x94,0xDE,
1,0x94,0xDF,
1,0x94,0xE0,
1,0x94,0xE1,
1,0x94,0xE2,
1,0x94,0xE3,
1,0x94,0xE5,
1,0x94,0xE5,
1,0x94,0xE6,
1,0x94,0xE7,
1,0x94,0xE8,
1,0x94,0xE9,
1,0x94,0xEA,
1,0x94,0xEB,
1,0x94,0xEC,
1,0x94,0xED,
1,0x94,0xEE,
1,0x94,0xEF,
1,0x94,0xF0,
1,0x94,0xF1,
1,0x94,0xF2,
1,0x94,0xF3,
1,0x94,0xF4,
1,0x94,0xF4,
1,0x94,0xF5,
1,0x94,0xF6,
1,0x94,0xF7,
1,0x94,0xF7,
1,0x94,0xF8,
1,0x94,0xF9,
1,0x94,0xFA,
1,0x94,0xFA,
1,0x94,0xFB,
1,0x94,0xFC,
1,0x94,0xFC,
1,0x94,0xFD,
1,0x94,0xFE,
1,0x94,0xFF,

};

const BYTE t118_mode_pal_50[]=
{    
1,0x74,0x4A,    
1,0x75,0x26,    
1,0x40,0x13,    
1,0x85,0x0E,    
1,0xB2,0x13,//10
1,0xB8,0xE7, 
1,0x90,0x06, 
1,0x91,0x07, 
1,0xE2,0x11,
};

const BYTE t118_mode_pal_54_A[]=
{
1,0x18,0x2A,    
1,0x19,0x09,    
1,0x1A,0x8A,    
1,0x1B,0xCB,    
1,0x30,0x34,    
1,0x74,0x4A,
};
const BYTE t118_mode_pal_54_B[]=
{
1,0x03,0x04,    
1,0x82,0x52,    
1,0x01,0x04,  
};
const BYTE t118_mode_ntsc_50[]=
{
1,0x74,0x00,
1,0x75,0x20,
1,0x40,0x11,
1,0x85,0x11,
1,0xB2,0x11,
1,0xB8,0x70,
1,0x90,0x06, 
1,0x91,0x07, 
1,0xE2,0x11,
};

const BYTE t118_mode_ntsc_54_A[]=
{
1,0x18,0x21,
1,0x19,0xF0,
1,0x1A,0x7C,
1,0x1B,0x0F,
1,0x30,0x2C,                   
};
const BYTE t118_mode_ntsc_54_B[]=
{                       
1,0x03,0x03,
1,0x82,0x42,
1,0x01,0x03,
};

const BYTE t118_mode_ntsc[]=
{
1,0xE1,0xF4,
};
const BYTE t118_overturn_A[]=
{
1,0xE1,0xF4,
};

const BYTE t118_overturn_B[]=
{
1,0xE1,0xA8,
};

const BYTE t118_type_169[]=
{
//1,0x11,0X1D,
//1,0X18,0X05,
//1,0X19,0X0E,
1,0x73,0x2E,
1,0x73,0x2E,
1,0xD8,0x00,
1,0xDC,0xE0,
1,0xE2,0x11,
};
const BYTE t118_type_43[]=
{
//1,0x11,0X1D,
//1,0X18,0X05,
//1,0X19,0X0E,	
1,0x73,0x3A, 
1,0x73,0x3A, 
1,0xD8,0x35, 
1,0xDC,0x81, 
1,0xE2,0x11,
};

const BYTE t118_cvbs[]=
{
1,0x11,0x1C,
1,0x18,0x00,
1,0x19,0x0C,
};
const BYTE t118_yc[]=
{
1,0x11,0x1D,
1,0x18,0x05,
1,0x19,0x0E,
1,0x90,0x06, 
1,0x91,0x07, 
};
const BYTE ark1819_cvbs_init[]=
{
1,0x19,0x08,
};
//pal e3
const BYTE ark1819_169_43_pal[]=
{
1,0x19,0x08,
};

const BYTE ark1819_43_ntsc_cvbs[]=
{
1,0x19,0x08,
};


//ntsc ff
const BYTE ark1819_169_43_ntsc[]=
{
1,0x19,0x08,
};
///////////////////////
const BYTE ark1819_43_169_pal[]=
{
1,0x19,0x08,
};

const BYTE ark1819_43_169_ntsc[]=
{
1,0x19,0x08,
};
const BYTE ark1829_cvbs_pal[]=
{
1,0x19,0x00,
};
const BYTE ark_1829_table[]=
{
1,0x19,0x00,
};
/*
typedef struct lcd_state_save{
	BYTE lcd_tv_mode;//pal/ntsc
	BYTE lcd_tv_type;//16:9/4:3
	BYTE lcd_tv_overturn;
	BYTE lcd_tv_bright;
	BYTE  lcd_tv_contrast;
	BYTE  lcd_tv_saturation;
	BYTE  lcd_tv_sharpness;
	BYTE  lcd_tv_hue;
}t118_state_save;
*/
extern int ReadFromI2c(int iDeviceAddr,int iAddr,BYTE *bBuffer,int len);
extern int WriteToI2c(int iDeviceAddr,int iAddr,BYTE *bData,int len);

void SET_T118_LCD(BYTE *t118_table,BYTE main_addr)
{
	BYTE *pReadData = t118_table;
	BYTE dataNum, subAddr;

	while ((dataNum = *pReadData++) != 0)   //0xff
	{
		subAddr = *pReadData++;
		WriteToI2c(main_addr,subAddr, pReadData , dataNum);
		pReadData += dataNum;
	//	delay_1ms(3);
	}
}

#if 0//def SUPPORT_T118_LCD
lcd_tv_avin = 0;
lcd_tv_avin_save = 1;
EXTERN BYTE lcd_tv_mode;//pal/ntsc
EXTERN BYTE lcd_tv_mode_save;//pal/ntsc
EXTERN BYTE lcd_tv_type;//16:9/4:3
EXTERN BYTE lcd_tv_type_save;//16:9/4:3
EXTERN BYTE lcd_tv_overturn;
EXTERN BYTE lcd_tv_overturn_save;
EXTERN BYTE lcd_tv_bright;
EXTERN BYTE lcd_tv_bright_save;
EXTERN BYTE  lcd_tv_contrast;
EXTERN BYTE  lcd_tv_contrast_save;
EXTERN BYTE  lcd_tv_saturation;
EXTERN BYTE  lcd_tv_saturation_save;
EXTERN BYTE  lcd_tv_sharpness;
EXTERN BYTE  lcd_tv_sharpness_save;
EXTERN BYTE  lcd_tv_hue;
EXTERN BYTE  lcd_tv_hue_save;
#endif
void T118_LCD_INITIAL(void)
{
SET_T118_LCD(t118_50_init,0x50);
SET_T118_LCD(t118_52_init,0x52);
SET_T118_LCD(t118_54_init,0x54);
SET_T118_LCD(t118_gamma_table,0x50);
}
//extern static	inline	void	tv_dacoff(unsigned v);
void T118_tv_avin_setting(void)
{
BYTE temp_datu1;
if(lcd_tv_avin)
	{
	printf_w("\n****************************  T118_tv_avin_setting  t118_cvbs\n");
	lcd_tv_avin_save = lcd_tv_avin;
	tv_dacoff(0xff);
	SET_T118_LCD(t118_cvbs,0x50);
	ReadFromI2c(0x54, 0x00,&temp_datu1,1);
	temp_datu1 = temp_datu1&0xFE;
	WriteToI2c(0x54,0x00, &temp_datu1 , 1);	
	AVIN_DVD_display(0);
	}
	else
	{
	printf_w("\n****************************  T118_tv_avin_setting t118_yc\n");
	lcd_tv_avin_save = lcd_tv_avin;
	tv_dacoff(0x00);
	SET_T118_LCD(t118_yc,0x50);
	ReadFromI2c(0x54, 0x00,&temp_datu1,1);
	temp_datu1 = temp_datu1|0X01;
	WriteToI2c(0x54,0x00, &temp_datu1 , 1);	
	AVIN_DVD_display(1);
	}
}

void T118_tv_mode_setting(void)
{
BYTE temp_datu;
if(lcd_tv_mode)
	{
	lcd_tv_mode_save = lcd_tv_mode;
	printf_w("\nT118_tv_mode_setting--->>>pal\n");
	ReadFromI2c(0x54, 0x00,&temp_datu,1);
	temp_datu = (temp_datu&0xC1)|0x32;
	WriteToI2c(0x54,0x00, &temp_datu , 1);	
	SET_T118_LCD(t118_mode_pal_54_A,0x54);
	SET_T118_LCD(t118_mode_pal_50,0x50);
	SET_T118_LCD(t118_mode_pal_54_B,0x54);
	}
	else
	{
	lcd_tv_mode_save = lcd_tv_mode;
	printf_w("\nT118_tv_mode_setting--->>>ntsc\n");
	ReadFromI2c(0x54, 0x00,&temp_datu,1);
	temp_datu = (temp_datu&0xC1);
	WriteToI2c(0x54,0x00, &temp_datu , 1);	
	SET_T118_LCD(t118_mode_ntsc_54_A,0x54);
	SET_T118_LCD(t118_mode_ntsc_50,0x50);
	SET_T118_LCD(t118_mode_ntsc_54_B,0x54);
	}
}

void T118_tv_type_setting(void)
{
if(osd_screen_mode)
	{
	printf_w("\n&&&&&&&&&&&&&&& T118_tv_type_setting       4:3\n");
	SET_T118_LCD(t118_type_43,0x50);		
	}
	else
	{
	printf_w("\n&&&&&&&&&&&&&&& T118_tv_type_setting       16:9\n");
	SET_T118_LCD(t118_type_169,0x50);		
	}
}

void T118_tv_overturn_setting(void)
{
if(osd_overturn)
	{
	SET_T118_LCD(t118_overturn_A,0x50);	
	}
	else
	{
	SET_T118_LCD(t118_overturn_B,0x50);	
	}
}


#ifdef RECODE_T118_STATUS
void T118_osd_default_setting(void)
{
	BYTE temp_date2 = 50;
	WriteToI2c(0xa0, OSD_BRIGHT_ADDR,&temp_date2, 1); 
	WriteToI2c(0xa0, OSD_CONTRAST_ADDR,&temp_date2, 1); 
	WriteToI2c(0xa0, OSD_COLOR_ADDR,&temp_date2 ,1); 
	temp_date2 = 0;
	WriteToI2c(0xa0, OSD_SHAPPNESS_ADDR,&temp_date2, 1); 
	WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&temp_date2, 1); 
	WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&temp_date2, 1); 
}


void Load_T118_OSD_setting(void)
{
	ReadFromI2c(0xa0, OSD_BRIGHT_ADDR, &osd_bright, 1);		
	ReadFromI2c(0xa0, OSD_CONTRAST_ADDR, &osd_contrast, 1);		
	ReadFromI2c(0xa0, OSD_COLOR_ADDR, &osd_color, 1);		
	ReadFromI2c(0xa0, OSD_SHAPPNESS_ADDR, &osd_shappness, 1);		
	ReadFromI2c(0xa0, OSD_SCREEN_MODE_ADDR, &osd_screen_mode, 1);		
	ReadFromI2c(0xa0, OSD_OVERTURN_ADDR, &osd_overturn, 1);	
}
#endif

void T118_lcd_reset(void)
{
	BYTE temp_date = 1;
	WriteToI2c(0x54, 0x3f,&temp_date, 1); 
	delay_1ms(3);
	temp_date = 0;
	WriteToI2c(0x54, 0x3f,&temp_date, 1); 
}
#endif




void T118_avin_signal_det(void)
{
//printf_w("\n***********************  T118_avin_signal_det\n");
BYTE temp_datu1;
if(lcd_tv_avin)
	{
		ReadFromI2c(0x54, 0x3A,&temp_datu1,1);//signal det
		if(avin_dvd_status_save != temp_datu1)	
		{
			avin_dvd_status_save = temp_datu1;
		if(temp_datu1&0x01)
			{//no signal
			printf_w("\n************** no signal\n");
			temp_datu1 = 0x00;
			WriteToI2c(0x50,0x90, &temp_datu1 , 1);
			temp_datu1 = 0x87;
			WriteToI2c(0x50,0x91, &temp_datu1 , 1);
			}
			else
			{//have signal
			printf_w("\n************** have signal\n");
			temp_datu1 = 0x06;
			WriteToI2c(0x50,0x90, &temp_datu1 , 1);
			temp_datu1 = 0x07;
			WriteToI2c(0x50,0x91, &temp_datu1 , 1);
			}	
		}
	}	
}


void T118_avin_PAL_NTSC_set(void)
{
//printf_w("\n***********************  T118_avin_PAL_NTSC_set\n");
BYTE temp_datu2;
if(lcd_tv_avin)
	{
	ReadFromI2c(0x54, 0x3C,&temp_datu2,1);//avin pal/ntsc det
	if(avin_dvd_pal_ntsc!= temp_datu2)
		{
		printf_w("\n*******************temp_datu2 %x \n",temp_datu2&0x05);
		avin_dvd_pal_ntsc = temp_datu2;
		if((temp_datu2&0x05) == 0x00)//ntsc
			{
			lcd_tv_mode = 0;			
			}
		else if((temp_datu2&0x05)==0x04)//pal
			{
			lcd_tv_mode = 1;
			}
			T118_tv_mode_setting();
		}
	}
}

void T118_avin_dvd_switch(void)
{
//printf_w("\n***********************  T118_avin_dvd_switch\n");
if(lcd_tv_avin != GPIO_I_GET(AVIN_SW))
{
lcd_tv_avin = GPIO_I_GET(AVIN_SW);
	if(lcd_tv_avin)
	{//avin
		printf_w("\n&&&&&&&&&&&&&&&&&  switch to avin\n");
		bDoorStatus = DOOR_OPEN;
		GPIO_DEMUTE()	;
		ircmd_eject_toggle();
		stop_loader();
		ircmd_trayout();
	}
	else
	{//dvd
	printf_w("\n&&&&&&&&&&&&&&&&&  switch to dvd\n");
	if(tv_format == 0)
		{
		lcd_tv_mode=0;
		lcd_tv_mode_save=1;
		T118_tv_mode_setting();
		}
	else
		{
		lcd_tv_mode=1;
		lcd_tv_mode_save=0;
		T118_tv_mode_setting();
		}
	}
	T118_tv_avin_setting();
}
T118_avin_signal_det();
T118_avin_PAL_NTSC_set();
}




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?