⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t118_lcd.c

📁 C环境 TCON T118芯片驱动文件
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -