📄 tft.c
字号:
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 + -