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

📄 tft.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 4 页
字号:
			VX1818_OSD_Enable(0x04);
			__dwOsdAVINSHowTime=__dwCountSystem;
			__bOSDAVINShowFlag=1;
					
     }
	__bTtftVChannel	=__bAvInStatus;
#endif	
}

void _TFT_Switch_VChannel(BYTE bType)
{

	switch(bType)
	{
		case VIDEO_YC_CHANNEL: 
					I2C_VX1818_Write(0x02,0x07);	   
					break;
			
		case VIDEO_CVBS_CHANNEL:
					I2C_VX1818_Write(0x02,0x01);	   
					break;
		case VIDEO_EMPTY_CHANNEL:
					I2C_VX1818_Write(0x02,0x05);	   
					break;
	}
	__bTtftVChannel	=bType;
       TFT_Driver_Write(0x01,0xa5); //For S-Video   for yashi
	TFT_Driver_Write(0x06,0x30);
	TFT_Driver_Write(0x06,0x68); 	
	TFT_Driver_Write(0x04,0x7a);	
	TFT_Driver_Write(0x04,0x79);	
	TFT_Driver_Write(0x04,0x78);	
	TFT_Driver_Write(0x04,0x77);	
//	TFT_Driver_Write(0x04,0x76);	  	
}

void _TFT_Switch_Black_Screen(BYTE bBlack)//yhtang_117
{

	if(bBlack)
	{
					I2C_VX1818_Write(0x42,0xa0);	   
	}
	else
		{
					I2C_VX1818_Write(0x42,0x00);	   
		}
}


void _TFT_Set_TvMode(BYTE bTvMode)
{
	TFT_HW_Switch_ON_OFF(FALSE);
		 #ifdef YHTANG_DEBUG
	              _printf("\n tft.c change tv mode , TURN off TFT SWITCH");
		 #endif
  	  switch(bTvMode)
  	  {
		case MPEG_VIDEO_MODE_NTSC:
			  if(__bTftSize==TFT_TVTYPE_PS)
			  	{
//				I2C_VX1818_Write(0x05, 0xf9);
				I2C_VX1818_Write(0xc2, 0x0d);
				I2C_VX1818_Write(0x3a, 0x08);
				I2C_VX1818_Write(0x3b, 0xfb);
//				I2C_VX1818_Write(0x3c, 0x93);
				I2C_VX1818_Write(0x3c, 0x96);
				I2C_VX1818_Write(0x3d, 0x01);
				I2C_VX1818_Write(0x40, 0x07);
				I2C_VX1818_Write(0x41, 0xb2);
				I2C_VX1818_Write(0x01, 0xa5);  //20050531
				I2C_VX1818_Write(0x06, 0x28);  //20050531
				I2C_VX1818_Write(0x01, 0x68);  //20050531
				
			  	}
			  else if(__bTftSize==TFT_TVTYPE_WIDE)
			  	{
//				I2C_VX1818_Write(0x05, 0xf9);
				I2C_VX1818_Write(0xc2, 0x0d);
				I2C_VX1818_Write(0x3a, 0x08);
				I2C_VX1818_Write(0x3b, 0xfb);
			//	I2C_VX1818_Write(0x3c, 0x93);
				I2C_VX1818_Write(0x3c, 0x96);
				I2C_VX1818_Write(0x3d, 0x01);
				I2C_VX1818_Write(0x40, 0x00);
				I2C_VX1818_Write(0x41, 0xbc);
				I2C_VX1818_Write(0x01, 0xa5);  //20050531
				I2C_VX1818_Write(0x06, 0x28);  //20050531
				I2C_VX1818_Write(0x01, 0x68);  //20050531
			  	}
				break;
		case MPEG_VIDEO_MODE_PAL:
			I2C_VX1818_Write(0x01, 0xa5);
		      UTL_DelayTime(COUNT_50_MSEC, FALSE);
			  I2C_VX1818_Write(0x1C, 0x18);
			  UTL_DelayTime(COUNT_200_MSEC, FALSE);
			  I2C_VX1818_Write(0x1C, 0x38);
			  if(__bTftSize==TFT_TVTYPE_PS)
			  	{
//				I2C_VX1818_Write(0x05, 0xe9);
				I2C_VX1818_Write(0xc2, 0x10);
				I2C_VX1818_Write(0x3a, 0x18);
				I2C_VX1818_Write(0x3b, 0xf4);
				
				//I2C_VX1818_Write(0x3c, 0xa0);
				I2C_VX1818_Write(0x3c, 0xa3);
				I2C_VX1818_Write(0x3d, 0x03);
				I2C_VX1818_Write(0x40, 0x04);
				I2C_VX1818_Write(0x41, 0xb0);
				I2C_VX1818_Write(0x01, 0xa5);  //20050531
				I2C_VX1818_Write(0x06, 0x28);  //20050531
				I2C_VX1818_Write(0x01, 0x68);  //20050531
			  	}
			  else if(__bTftSize==TFT_TVTYPE_WIDE)
			  	{
//				I2C_VX1818_Write(0x05, 0xe9);
				I2C_VX1818_Write(0xc2, 0x10);
				I2C_VX1818_Write(0x3a, 0x18);
				I2C_VX1818_Write(0x3b, 0xf4);
				
				//I2C_VX1818_Write(0x3c, 0xa0);
				I2C_VX1818_Write(0x3c, 0xa3);
				I2C_VX1818_Write(0x3d, 0x03);
				I2C_VX1818_Write(0x40, 0x00);
				I2C_VX1818_Write(0x41, 0xb9);
				I2C_VX1818_Write(0x01, 0xa5);  //20050531
				I2C_VX1818_Write(0x06, 0x28);  //20050531
				I2C_VX1818_Write(0x01, 0x68);  //20050531
			  	}
			  #ifdef YHTANG_DEBUG
			  _printf("\n set video output to be pal!");
			  #endif
				break;
  	  }
				I2C_VX1818_Write(0x01, 0xa5);
		      UTL_DelayTime(COUNT_50_MSEC, FALSE);
		              I2C_VX1818_Write(0x06, 0x30);
			        I2C_VX1818_Write(0x06, 0x68);
	                  bTFT_TVMode=bTvMode;
          __dwCountTFT= __dwCountSystem;
	__bTftTvModeChangeFlag=1;
	#ifdef YHTANG_DEBUG
		  _printf("\n set video output ok!");
	  #endif

}

void _TFT_SYNC_Recover(void)
{
				I2C_VX1818_Write(0x01, 0xa5);
				I2C_VX1818_Write(0x06, 0x30);
				I2C_VX1818_Write(0x06, 0x68);
}


void _TFT_EpromData(BYTE bMode)
{
	if(bMode&TFT_READ_EPROM)
		{
			if(bMode&TFT_READ_EPROM_DEFAULT)
			{
						__bTftBright=TFT_EPROM_DEFAULT_BRIGHT;
						__bTftContrast=TFT_EPROM_DEFAULT_CONTRAST;
						__bTftColor=TFT_EPROM_DEFAULT_COLOR;
			}
			else
			{
			 		HAL_EEPROM_PRead(SETUP_ADDR_TFT_BRIGHT,     1,  &__bTftBright);
					if((__bTftBright>TFT_EPROM_MAX_BRIGHT)||(__bTftBright<TFT_EPROM_MIN_BRIGHT))
					{
						__bTftBright=TFT_EPROM_DEFAULT_BRIGHT;
					}

					HAL_EEPROM_PRead(SETUP_ADDR_TFT_CONTRAST, 1, &__bTftContrast);
					if((__bTftContrast>TFT_EPROM_MAX_CONTRAST)||(__bTftContrast<TFT_EPROM_MIN_CONTRAST))
					{
						__bTftContrast=TFT_EPROM_DEFAULT_CONTRAST;
					}

					HAL_EEPROM_PRead(SETUP_ADDR_TFT_COLOR,      1,   &__bTftColor);	
					if((__bTftColor>TFT_EPROM_MAX_COLOR)||(__bTftColor<TFT_EPROM_MIN_COLOR))
					{
						__bTftColor=TFT_EPROM_DEFAULT_COLOR;
					}
			}
		
		}
	else if(bMode&TFT_WRITE_EPROM)
		{
			        HAL_EEPROM_Write(SETUP_ADDR_TFT_COLOR,__bTftColor);
			        HAL_EEPROM_Write(SETUP_ADDR_TFT_BRIGHT,__bTftBright);
			        HAL_EEPROM_Write(SETUP_ADDR_TFT_CONTRAST,__bTftContrast);
		}
}

void _TFT_Trigger(void)
{
#ifdef SUPPORT_AVIN
	if((__bTftAvSwitchFlag==1)&&((__dwCountSystem-__dwTftAvSwitchTime)>COUNT_2_SEC))
	{
		__bTftAvSwitchFlag=0;
		__dwTftAvSwitchTime=0;
		TFT_HW_Switch_ON_OFF(TRUE);
		#ifdef YHTANG_DEBUG
		_printf("\n  tft_trigger av status turn on tft switch");
		#endif
	}
	if(__bAvInStatus!=__bTftAvSwitchStatus)
		{
			if(__bAvInStatus==DVD_OUTPUT_STATUS)
				TFT_Driver_AV_Switch(FALSE);
			else
				TFT_Driver_AV_Switch(TRUE);
		#ifdef YHTANG_DEBUG
		_printf("\n  tft_trigger av status switch");
		#endif
				
		}
//AV TRIGGER
	if(((__dwCountSystem-__dwOsdAVINSHowTime)>(COUNT_1_SEC*6))&&__bOSDAVINShowFlag&&(__bAvInStatus==AV_IN_STATUS))
	{
		VX1818_OSD_DisEnable(0x04);
		__dwOsdAVINSHowTime=0;
		__bOSDAVINShowFlag=0;
	}

//AV TRIGGER END
	
#endif

#ifdef TFT_OSD_CONTROLED_BY_CT908
 if(((__dwCountSystem -__dwTftCountTime) > (COUNT_1_SEC*6))&&(__bTftSetupMode!=TFT_SETUP_NULL)&&(!__bSetupMode)&&(!__btInputProgram))
 	{   
 		_TFT_OSD_Clear();
		__dwTftCountTime=0;
	 	__bTftSetupMode=TFT_SETUP_NULL;
		if (_bCurrentUI == OSD_UI_FM)
		FM_RecoverMenu(FM_RESTORE_MENU); //restore to previous FM menu
		else if (_bCurrentUI == OSD_UI_THUMBNAIL)
		THUMBNAIL_Recover(OSD_MSG_RECOVER_ALL); //restore to previous Thumbnail
	  }
 #endif
 #ifdef TFT_OSD_CONTROLED_BY_VX1818
 if(((__dwCountSystem -__dwTftCountTime) > (COUNT_1_SEC*6))&&(__bTftSetupMode!=TFT_SETUP_NULL))
 	{   
               TFT_OSD_Off();
		__dwTftCountTime=0;
	 	__bTftSetupMode=TFT_SETUP_NULL;
	  }

 #endif

//battery detect and osd show yhtang_0629
        P5CON|=0x10;  //  p5.4   output port
       P5|=0x10;        //pull high  p5.4
       P5CON &= 0xef;   
	
	 if(!(P5 & 0x10))     //mark   for  yashi
	 {
	 	if(!__bTftLowBatt)
		{
			__bTftLowBatt=TRUE;
			TFT_OSD_Battery(__bTftLowBatt); 
			__dwTtfLowBattTime=__dwCountSystem;
	 	}
		else
			{
				if((__dwTtfLowBattTime-__dwCountSystem)>COUNT_10_SEC*18) // 3min
					{
						__dwTtfLowBattTime=0;
						TFT_HW_Switch_ON_OFF(FALSE);
					}
			}
	 }
	 else
	 {
	 	if(__bTftLowBatt)
		{
			__bTftLowBatt=FALSE;
			TFT_OSD_Battery(__bTftLowBatt); 
			if(!((__bAvInStatus==DVD_OUTPUT_STATUS)&&(__btPowerDown)))
					TFT_HW_Switch_ON_OFF(TRUE);
	 	}
		
	 }



 if(((__dwCountSystem - __dwCountTFT) >= COUNT_2_SEC)&&__bTftTvModeChangeFlag)
 	{
#ifdef SUPPORT_AVIN
		if(!__bTftAvSwitchFlag)
#endif
		{
			TFT_HW_Switch_ON_OFF(TRUE);
			 #ifdef YHTANG_DEBUG
		              _printf("\n tft.c tft.trigger tv mode change , TURN on TFT SWITCH");
			 #endif
		}
	__dwCountTFT=0;
	__bTftTvModeChangeFlag=0;
 	}
 #ifdef SUPPORT_AVIN
 #ifdef SUPPORT_TVMODE_AUTO_DETECT
	if(__bAvInStatus==AV_IN_STATUS)
	{
		if((__dwCountSystem-__dwTftTVModeDetectTime)>COUNT_1_SEC)
		{
			bTftTmp1=TFT_Driver_Read(0xd3);
			{
				#ifdef YHTANG_DEBUG
				_printf("\n tft.trigger read 0xd3 reg data is 0x%x",(WORD)bTftTmp1);
				#endif
			}
			if(!(bTftTmp1&0x10))
			{
				TFT_Driver_Write(0x06, 0x70);
			}
			else
			{
				TFT_Driver_Write(0x06, 0x68);
				if(bTFT_TVMode==MPEG_VIDEO_MODE_PAL)
				{
					if(bTftTmp1&0x40)
						{
							if((bTftTmp1&0x08)==0x08)
							{
							#ifdef YHTANG_DEBUG
							_printf("\n tft.trigger  TV MODE DETECT, CHANGE TO NTSC");
							#endif
							bTFT_TVMode=MPEG_VIDEO_MODE_NTSC;
						       _TFT_Set_TvMode(bTFT_TVMode); // hwtan.portable 0613 move from initial.c    
							}
						}
					else
						{
							#ifdef YHTANG_DEBUG
							_printf("\n tft.trigger  TV MODE DETECT, CHANGE TO NTSC");
							#endif
							bTFT_TVMode=MPEG_VIDEO_MODE_NTSC;
						       _TFT_Set_TvMode(bTFT_TVMode); // hwtan.portable 0613 move from initial.c    
						}
				}
				else
				{
					if(!(bTftTmp1&0x40))
						{
						}
					else
						{
							if((bTftTmp1&0x08)==0x08)
							{
							}
							else
							{
								#ifdef YHTANG_DEBUG
								_printf("\n tft.trigger  TV MODE DETECT, CHANGE TO PAL");
								#endif
								bTFT_TVMode=MPEG_VIDEO_MODE_PAL;
							       _TFT_Set_TvMode(bTFT_TVMode); // hwtan.portable 0613 move from initial.c    
							}
						}
				}
			}
			__dwTftTVModeDetectTime=__dwCountSystem;
		}
	}
#endif
#endif	
}


BYTE _TFT_ProcessKey(BYTE bKey)
{
#ifdef TFT_OSD_CONTROLED_BY_CT908
	if((bKey==KEY_SETUP)&&(!__bSetupMode))
		{
		__bTftSetupMode=TFT_SETUP_NULL;
		return bKey;
		}
	if((bKey==KEY_PROGRAM)&&(!__btInputProgram))
		{
		if(!(__wDiscType&CDROM_M1))
			__bTftSetupMode=TFT_SETUP_NULL;
		else
			{
	 	__bTftSetupMode=TFT_SETUP_NULL;
		if (_bCurrentUI == OSD_UI_FM)
		FM_RecoverMenu(FM_RESTORE_MENU); //restore to previous FM menu
		else if (_bCurrentUI == OSD_UI_THUMBNAIL)
		THUMBNAIL_Recover(OSD_MSG_RECOVER_ALL); //restore to previous Thumbnail
			}
		}
#endif	
	if((bKey<INPUT_KEY_GROUPTFT_BEGIN)||(bKey>INPUT_KEY_GROUPTFT_END))
		{
			return bKey;
		}
#ifdef TFT_OSD_CONTROLED_BY_CT908
	if(!(P4&0x40))
		return KEY_INVALID;
	if((__bSetupMode)||(__btInputProgram))
		return KEY_NO_KEY;
#endif	
	switch(bKey)
		{
			case  KEY_TFT_MODE:
				if(__bTftSetupMode==TFT_SETUP_NULL)
				{
					__bTftSetupMode=TFT_SETUP_BEGIN;
#ifdef TFT_OSD_CONTROLED_BY_CT908
					_TFT_Draw_Background();
#endif
#ifdef TFT_OSD_CONTROLED_BY_VX1818
//					TFT_OSD_Initial();
         VX1818_OSD_Enable(0x02); //yhtang_0719
#endif
				}
				else
					__bTftSetupMode++;
				if(__bTftSetupMode>TFT_SETUP_END)
					__bTftSetupMode=TFT_SETUP_BEGIN;
#ifdef TFT_OSD_CONTROLED_BY_CT908
				_TFT_OSD_HiLight_Bar(__bTftSetupMode);
				if(__bTftSetupMode==TFT_SETUP_BEGIN)
				{
					_TFT_OSD_UnHiLight_Bar(TFT_SETUP_END);
				}
				else
				{
					_TFT_OSD_UnHiLight_Bar(__bTftSetupMode-1);
				}

⌨️ 快捷键说明

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