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

📄 t102osd.c

📁 C环境 TCON T118芯片驱动文件
💻 C
字号:

//#include "T118\\OSDDRAW.C"

#include "T118\\T102OSD.h"
#include "T118\\TW101REG.H"
#include "T118\\OSDDRAW.c"
#include "setup_VA.h"
#include "memmap_i2c.h"
#ifdef NEW_OSD
#include "font1216.c"
#else
#include "T118\\T102_Font12W18H.c" 		// 12W18H
//#include "T102_Font8W16H.c"    	//  8W16H // It's better for Au 3.5".
//#include "T102_Font6W16H.c"  	//  6W16H // It's too small for Au 3.5".
#endif


void OSDInit(void)
{
	unsigned int i;
//	printf_w("\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7  %x\n",k);
	BYTE temp_data1;
	OSDCfgWr(OSD_CTRL,0x18);             			   //disable osd and width*1
	OSDSetRamAddr(FONT_DATA_START_ADDRESS);
	OSDCfgWr(CHAR_FONT_SIZE,FONT_SIZE);
	OSDCfgWr(CHAR_RAM_BASE_A,CHAR_MAIN_MENU_START);    //To setup character index start address.
	OSDCfgWr(CHAR_RAM_END_A,CHAR_RAM_END);             //This is to set index end address.
  	OSDCfgWr(BLINK_CTRL,0x09);
       OSDCfgWr(ALPHA_BLD_CTRL,0x84);       
	OSDLoadColor();  
	OSDSetRamAddr(FONT_DATA_START_ADDRESS);    
	delay_1ms(5);
	No_INC_I2C_Addr_Flag = 1;
	WriteToI2c(TW101,OSD_RAM_DL, AllFonts_NEW , sizeof(AllFonts_NEW));
	No_INC_I2C_Addr_Flag = 0;
	for(i=0;i<OSD_LINE_NUM;i++){
		OSDCleanLine(0,i,0,31);
		OSDSetLineAttribute(i,0x80);
	}
}
	

void OSDShowLine(BYTE *string,BYTE x,BYTE y,BYTE cColor,BYTE cLength)
{
	OSDCfgWr(0x00,0x80);       
 	BYTE c,k = 0;
	BYTE temp_date2[512];
	if((x < 30) && ( y < OSD_LINE_NUM))
		{
		OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
	
	//	twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
     	while((*string) != EOL && (x < cLength)){
		    c=*string++;
		    if(c>0x40)			// Character
		    	{
				temp_date2[k] = c-IndexCharacterOffset;
				k = k+1;
		    	//twdWr_Burst_D(c-IndexCharacterOffset);			
			}
	
			else if(c>=0x30)	// number
			{
				temp_date2[k] = c-IndexNumOffset;
				k = k+1;
				//twdWr_Burst_D(c-IndexNumOffset);  
			}
	
			else			
			{
				temp_date2[k] = c;
				k = k+1;
				//twdWr_Burst_D(c);			
			}

			temp_date2[k] = cColor;
			k = k+1;
        	//twdWr_Burst_D(cColor );
        	x++;
  		}
		No_INC_I2C_Addr_Flag = 1;
		WriteToI2c(TW101,OSD_RAM_DL, temp_date2 , k);
		No_INC_I2C_Addr_Flag = 0;
	}
   	//twdWr_Burst_P();
}


void OSDNumConvert(BYTE cNum)
{
printf_w("*******************************cNum %d ",cNum);
BYTE temp_date[4];
BYTE i;
if(cNum<10)
{
switch(cNum){
	case 9:	temp_string[0]='9' ;	break;
	case 8:	temp_string[0]='8' ;	break;
	case 7:	temp_string[0]='7' ;	break;
	case 6:	temp_string[0]='6' ;	break;
	case 5:	temp_string[0]='5' ;	break;
	case 4:	temp_string[0]='4' ;	break;
	case 3:	temp_string[0]='3' ;	break;
	case 2:	temp_string[0]='2' ;	break;
	case 1:	temp_string[0]='1' ;	break;
	case 0:	temp_string[0]='0' ;	break;
	default: break;
	}
temp_string[1] = BLANK;
temp_string[2] = BLANK;
temp_string[3]	 = EOL;
}
else if(cNum<100)

{
temp_date[0] = cNum/10;
temp_date[1] = cNum%10;
for(i=0;i<2;i++)
{
	switch(temp_date[i]){
	case 9:	temp_string[i]='9' ;	break;
	case 8:	temp_string[i]='8' ;	break;
	case 7:	temp_string[i]='7' ;	break;
	case 6:	temp_string[i]='6' ;	break;
	case 5:	temp_string[i]='5' ;	break;
	case 4:	temp_string[i]='4' ;	break;
	case 3:	temp_string[i]='3' ;	break;
	case 2:	temp_string[i]='2' ;	break;
	case 1:	temp_string[i]='1' ;	break;
	case 0:	temp_string[i]='0' ;	break;
	default: break;
	}
}	
temp_string[2] = BLANK;
temp_string[3]	 = EOL;
}
else if(cNum==100)
{
temp_string[0] = '1';
temp_string[1]= '0';
temp_string[2] = '0';
temp_string[3]	 = EOL;
}
}

#if 0
	OSD_BRIGHT_INDEX = 0,
	OSD_CONTRAST_INDEX,
	OSD_COLOR_INDEX,
	OSD_SHAPPNESS_INDEX,
	OSD_SCREEN_MODE_INDEX,	
	OSD_OVERTURN_INDEX,
	OSD_DEFAULT_INDEX,

#endif


void AdjVideoBright(void)
{
BYTE temp_bright = 0x80-50+osd_bright;
WriteToI2c(TW101,0x69, &temp_bright , 1);
}

void AdjVideoContrast(void)
{
BYTE temp_contrast = 0x80-50+osd_contrast;
WriteToI2c(TW101,0x68, &temp_contrast , 1);
}

void AdjVideocolor(void)
{
BYTE temp_color = 0x80-50+osd_color;
WriteToI2c(TW101,0x6C, &temp_color , 1);
}

void AdjVideoSharp(void)
{
BYTE temp_sharp;
if(osd_shappness<8)
{
 temp_sharp = (osd_shappness<<1)|0x01;
}
else if(osd_shappness == 8)
{
 temp_sharp = (0x07<<1)|0x01;
}
WriteToI2c(0x54,0x80, &temp_sharp , 1);
}

void AdjVideoSet_screen(void)
{
	T118_tv_type_setting();
}

void AdjVideoSet_over(void)
{
	T118_tv_overturn_setting();
}

void AdjVideoSet_default(void)
{
	T118_osd_default_setting();
	 osd_bright = 50;
	osd_contrast = 50;
	osd_shappness = 0;
	osd_color = 50;
	osd_screen_mode = 0;
	osd_overturn = 0;
}

void OSDItemAdjVideo(void)
{
	switch(osd_menu_status){
	case OSD_BRIGHT_INDEX:
		AdjVideoBright();
		break;
	case OSD_CONTRAST_INDEX:
		AdjVideoContrast();
		break;
	case OSD_COLOR_INDEX:
		AdjVideocolor();
		break;
	case OSD_SHAPPNESS_INDEX:
		AdjVideoSharp();
		break;
	case OSD_SCREEN_MODE_INDEX:
		AdjVideoSet_screen();
		break;
	case OSD_OVERTURN_INDEX:
		AdjVideoSet_over();
		break;
	case OSD_DEFAULT_INDEX:
		AdjVideoSet_default();
		T118_tv_overturn_setting();
		T118_tv_type_setting();
		OSDOpenMenu();
		OSDShowVideoData();
		break;
		default :break;
		}
}



void OSD_menu_fun(void)
{
if(osd_time_count)
osd_menu_status++;
if(osd_menu_status > OSD_DEFAULT_INDEX)
osd_menu_status = 0;
if(osd_time_count==0)
{
OSDOpenMenu();
}
OSDShowVideoData();
osd_time_count = 10;
}

#if 0
EXTERN BYTE No_INC_I2C_Addr_Flag;
EXTERN BYTE temp_string[4];
EXTERN BYTE osd_time_count;
EXTERN BYTE osd_menu_status;
EXTERN BYTE osd_bright;
EXTERN BYTE osd_contrast;
EXTERN BYTE osd_shappness;
EXTERN BYTE osd_color;
EXTERN BYTE osd_screen_mode;
EXTERN BYTE osd_overturn;

{
	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); 
}
#endif

void OSDItemAdj(BYTE cAdj)
{
	if(cAdj==INCREASE)
		{
	switch(osd_menu_status){
	case OSD_BRIGHT_INDEX:
		if(osd_bright<100)
		osd_bright++;
		WriteToI2c(0xa0, OSD_BRIGHT_ADDR,&osd_bright, 1); 
		break;
	case OSD_CONTRAST_INDEX:
		if(osd_contrast<100)
		osd_contrast++;
		WriteToI2c(0xa0, OSD_CONTRAST_ADDR,&osd_contrast, 1); 
		break;
	case OSD_COLOR_INDEX:
		if(osd_color<100)
		osd_color++;
		WriteToI2c(0xa0, OSD_COLOR_ADDR,&osd_color ,1); 
		break;
	case OSD_SHAPPNESS_INDEX:
		if(osd_shappness<8)
		osd_shappness++;
		WriteToI2c(0xa0, OSD_SHAPPNESS_ADDR,&osd_shappness, 1); 
		break;
	case OSD_SCREEN_MODE_INDEX:
		if(osd_screen_mode)
			{
		osd_screen_mode = 0;
	      WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1); 		
		}else{
		osd_screen_mode = 1;
	       WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1); 	
		}
		break;
	case OSD_OVERTURN_INDEX:
		if(osd_overturn)
			{
		osd_overturn = 0;
		WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1); 
		}else{
		osd_overturn = 1;
		WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1); 
		}
		break;
	case OSD_DEFAULT_INDEX:
		break;
		default :break;
		}
}
	else if(cAdj==DECREASE)
		{
switch(osd_menu_status){
	case OSD_BRIGHT_INDEX:
		if(osd_bright>0)
		osd_bright--;
		WriteToI2c(0xa0, OSD_BRIGHT_ADDR,&osd_bright, 1); 
		break;
	case OSD_CONTRAST_INDEX:
		if(osd_contrast>0)
		osd_contrast--;
		WriteToI2c(0xa0, OSD_CONTRAST_ADDR,&osd_contrast, 1); 
		break;
	case OSD_COLOR_INDEX:
		if(osd_color>0)
		osd_color--;
		WriteToI2c(0xa0, OSD_COLOR_ADDR,&osd_color ,1);
		break;
	case OSD_SHAPPNESS_INDEX:
		if(osd_shappness>0)
		osd_shappness--;
		WriteToI2c(0xa0, OSD_SHAPPNESS_ADDR,&osd_shappness, 1); 
		break;
	case OSD_SCREEN_MODE_INDEX:
		if(osd_screen_mode)
			{
		osd_screen_mode = 0;
		WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1); 
		}else{
		osd_screen_mode = 1;
		WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1); 
		}
		break;
	case OSD_OVERTURN_INDEX:
		if(osd_overturn)
			{
		osd_overturn = 0;
		WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1); 
		}else{
		osd_overturn = 1;
		WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1); 
		}
		break;
	case OSD_DEFAULT_INDEX:
		break;
		default :break;
		}
	}
		OSDShowVideoData();
   		OSDItemAdjVideo();
		osd_time_count = 10;
}

void low_battery_display(void)
{
	OSDClearPage();
	OSDPosition(TOP);
	OSDEnable();
	OSDShowLine(Low_battery,12,5,COL_BATTERY,OSD_LENGTH);	

}
void AVIN_DVD_display(BYTE state)
{
	OSDClearPage();
	//OSDPosition(TOP);
	OSDEnable();
if(state)	
	OSDShowLine(Icon_dvd,0,10,GREY_YELLOW,OSD_LENGTH);	
else
	OSDShowLine(Icon_avin,0,10,GREY_YELLOW,OSD_LENGTH);	
	osd_time_count = 10;
}

⌨️ 快捷键说明

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