📄 tft.c
字号:
//--------------------------------------------------------------------------void TFT_AdjustTVMode(BYTE bMode){ if(__bTft_TVModePrev==bMode) return; //TFT_BackLight(FALSE);// _btToggle_TFT=1;// TFT_FreeRun(1); switch (bMode) { case SETUP_SCREEN_TV_SYSTEM_AUTO: case SETUP_SCREEN_TV_SYSTEM_NTSC: printf("SETUP_SCREEN_TV_SYSTEM_NTSC"); __TFTSystemAttr.bSystem=EN_VID_MODE_NTSC; __TFTSystemAttr.bSubSystem=COLOR_NTSC_M; break; case SETUP_SCREEN_TV_SYSTEM_PAL: printf("SETUP_SCREEN_TV_SYSTEM_PAL"); __TFTSystemAttr.bSystem=EN_VID_MODE_PAL; __TFTSystemAttr.bSubSystem=COLOR_PAL_BGDHI; break;#ifdef PScan_mode//Digital_PANEL case TFT_MODE_TFT_DIGITAL: printf("SETUP_SCREEN_TV_SYSTEM_P_NTSC"); __TFTSystemAttr.bSystem=EN_VID_MODE_TFT_DIGITAL; __TFTSystemAttr.bSubSystem=COLOR_NTSC_M; break;#endif //Digital_PANEL default: printf("SETUP_SCREEN_TV_SYSTEM_NTSC"); __TFTSystemAttr.bSystem=EN_VID_MODE_NTSC; __TFTSystemAttr.bSubSystem=COLOR_NTSC_M; break; } __TFTSystemAttr.bSource=EN_LCD_VID_FORMAT_CCIR656; TFT_Adjust_VideoAttr(__TFTSystemAttr.bSource,__TFTSystemAttr.bSystem); TFT_Adjust_TvType(__TFTStatusInfo.bTvType); __TFTOSDStatusInfo.bAv=TFT_OSD_AVStatus_OFF;#ifdef SUPPORT_BATTERY_DETECTION __TFTOSDStatusInfo.bBattery=TFT_OSD_BATTERY_OFF;#endif __TFTOSDStatusInfo.bSetupMenu=TFT_OSD_SetupMenu_OFF; __bTft_TVModePrev=bMode; __dwTft_BackLight_Timer=__dwCountSystem+COUNT_1_SEC*2;//#ifdef LED_BackLight #ifndef SUPPORT_TFT_DIGITAL_MODE TFT_BackLight(TRUE);#endif}//--------------------------------------------------------------------------// Function : TFT_AdjustInputSource// Description :set VP77 register to match video input source. It is Called when video input source has been changed // Input ://--------------------------------------------------------------------------void TFT_AdjustInputSource(void){ if(__TFTStatusInfo.bReSetInputSource) { //clear all osd when av switch begin __TFTOSDStatusInfo.bAv=TFT_OSD_AVStatus_OFF;#ifdef SUPPORT_BATTERY_DETECTION __TFTOSDStatusInfo.bBattery=TFT_OSD_BATTERY_OFF;#endif __TFTOSDStatusInfo.bSetupMenu=TFT_OSD_SetupMenu_OFF; __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_UNLOCK; __TFTStatusInfo.bReSetInputSource=0; if(__TFTStatusInfo.bAv==TFT_AV_STATUS_AV) //external AV In { __TFTSystemAttr.bSource=EN_LCD_VID_FORMAT_CVBS; Vipor_SetBlackScreen(); } else //_sbAVInSW == dvd_STATUS { #ifdef SUPPORT_CCIR656 __TFTSystemAttr.bSource=EN_LCD_VID_FORMAT_CCIR656; //Jeff 20060517 ADD here when USE CCIR656 #else __TFTSystemAttr.bSource=EN_LCD_VID_FORMAT_SVIDEO; #endif } __TFTSystemAttr.bSubSystem=0; TFT_Adjust_VideoAttr(__TFTSystemAttr.bSource,__TFTSystemAttr.bSystem); TFT_Adjust_TvType(__TFTStatusInfo.bTvType); __dwTft_BackLight_Timer=__dwCountSystem+COUNT_2_SEC; __bTft_TVModePrev=0xAf; }}//--------------------------------------------------------------------------// Function : TFT_SubSystem_Trigger// Description :trigger subsystem , not finished // Input ://--------------------------------------------------------------------------#if 0BIT TFT_SubSystem_Trigger(BYTE bSystem, BYTE bSubSystem){ if(bSystem==EN_VID_MODE_NTSC) { Vipor_NTSC_VideoSubSystem(bSubSystem); OS_DelayTime(COUNT_100_MSEC, FALSE); return(Vipor_NTSC_GetColorBurstLocked()); } else if(bSystem==EN_VID_MODE_PAL) { Vipor_PAL_VideoSubSystem(bSubSystem); OS_DelayTime(COUNT_100_MSEC, FALSE); return(Vipor_PAL_GetColorBurstLocked(bSubSystem)); }}#endif//--------------------------------------------------------------------------// Function : TFT_AutoLockSignal// Description :Auto detect signal and set right VP77 register to match the input signal. It is only called as in AV STATUS // Input ://--------------------------------------------------------------------------void TFT_AutoLockSignal(void){ if(!Vipor_GetVideoLocked()) //no signal { __TFTStatusInfo.bGetSignal=TFT_SIGNAL_STATUS_NoSignal; } else { __TFTStatusInfo.bGetSignal=TFT_SIGNAL_STATUS_GetSignal; } if(__TFTStatusInfo.bGetSignal==TFT_SIGNAL_STATUS_NoSignal) { if(__TFTOSDStatusInfo.bAv==TFT_OSD_AVStatus_OFF) { __TFTOSDStatusInfo.bAv=TFT_OSD_AVStatus_ON;#ifdef TFT_SUPPORT_AVIN TFTOSD_ShowAvStatus(TRUE);#endif //TFT_SUPPORT_AVIN Vipor_SetBlackScreen(); } __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_UNLOCK; } else { if(__TFTSystemAttr.bSystem!=Vipor_GetVideoMode()) { __TFTSystemAttr.bSystem=Vipor_GetVideoMode(); __TFTSystemAttr.bSubSystem=0; TFT_Adjust_VideoAttr(__TFTSystemAttr.bSource,__TFTSystemAttr.bSystem); TFT_Adjust_TvType(__TFTStatusInfo.bTvType); __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_UNLOCK; } else { if(__TFTStatusInfo.bLockSignal==TFT_SIGNAL_STATUS_UNLOCK) { //Vipor_AutoBiasControl(); __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_LOCK; Vipor_SetNormalOutput(); __TFTOSDStatusInfo.bAv=TFT_OSD_AVStatus_OFF;#ifdef TFT_SUPPORT_AVIN TFTOSD_ShowAvStatus(TRUE);#endif //TFT_SUPPORT_AVIN #if 0 if(TFT_SubSystem_Trigger(__TFTSystemAttr.bSystem,__TFTSystemAttr.bSubSystem)) { __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_LOCK; if(__TFTOSDStatusInfo.bAv==TFT_OSD_AVStatus_ON) { __TFTOSDStatusInfo.bAv=TFT_OSD_AVStatus_OFF; // COBY7300_OsdClearAV(); } //Vipor_AutoBiasControl(); //Jeff 20060816 // Vipor_SetNormalOutput(); } else { __TFTSystemAttr.bSubSystem++; if((__TFTSystemAttr.bSystem==EN_VID_MODE_NTSC)&&(__TFTSystemAttr.bSubSystem>=COLOR_60_MAX)) { __TFTSystemAttr.bSubSystem=COLOR_NTSC_M; __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_LOCK; } if((__TFTSystemAttr.bSystem==EN_VID_MODE_PAL)&&(__TFTSystemAttr.bSubSystem>=COLOR_50_MAX)) { __TFTSystemAttr.bSubSystem=COLOR_PAL_BGDHI; __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_LOCK; } }#endif } } }}//--------------------------------------------------------------------------// Function : TFT_Init_Variable// Description :iniitial variable// Input ://--------------------------------------------------------------------------void TFT_Init_Variable(void){#ifdef SUPPORT_FLIP __TFTStatusInfo.bFlip=EN_PANEL_FLIP_NORMAL;#endif __TFTStatusInfo.bTvType=TFT_TVTYPE_STATUS_NORMAL;#ifdef SUPPORT_BATTERY_DETECTION __TFTStatusInfo.bBattery=TFT_BATTERY_STATUS_HIGH; __TFTStatusInfo.bBatteryPowerDown=TFT_BATTERY_STATUS_HIGH;#endif __TFTStatusInfo.bBackLight=TFT_BACKLIGHT_STATUS_ON; __TFTStatusInfo.bLockSignal=TFT_SIGNAL_STATUS_UNLOCK; __TFTOSDStatusInfo.bAv=TFT_OSD_AVStatus_OFF;#ifdef SUPPORT_BATTERY_DETECTION __TFTOSDStatusInfo.bBattery=TFT_OSD_BATTERY_OFF;#endif __TFTOSDStatusInfo.bSetupMenu=TFT_OSD_SetupMenu_OFF;// 2. Select input source __TFTStatusInfo.bAvPin= _TFT_ReadAvPIN(); __TFTStatusInfo.bAv=__TFTStatusInfo.bAvPin; __TFTStatusInfo.bAvChaned=FALSE; if(__TFTStatusInfo.bAv==TFT_AV_STATUS_AV) { __TFTSystemAttr .bSource=EN_LCD_VID_FORMAT_CVBS; __TFTSystemAttr .bSystem=EN_VID_MODE_NTSC; __TFTSystemAttr .bSubSystem=COLOR_NTSC_M; } else { #ifdef SUPPORT_CCIR656 __TFTSystemAttr.bSource=EN_LCD_VID_FORMAT_CCIR656; //Jeff 20060517 ADD here when USE CCIR656 #else __TFTSystemAttr .bSource=EN_LCD_VID_FORMAT_SVIDEO; #endif __TFTSystemAttr .bSystem=EN_VID_MODE_NTSC; __TFTSystemAttr .bSubSystem=COLOR_NTSC_M; } __bTft_TVModePrev=0xAf;//SETUP_SCREEN_TV_SYSTEM_NTSC; }//*******************************************************************************//--------------------------------------------------------------------------// Function : TFT_Init_VP77// Description : power on initial vp77// Input ://--------------------------------------------------------------------------void TFT_Init_VP77(void){ //LOAD OSD FONT Vipor_LoadOsdFont(); //Move here for 952 OSD load err //SET REG TFT_Adjust_VideoAttr(__TFTSystemAttr.bSource,__TFTSystemAttr.bSystem); TFT_Adjust_TvType(__TFTStatusInfo.bTvType); Vipor_LoadGammaTable(); Vipor_OsdInit();}//*******************************************************************************//--------------------------------------------------------------------------// Function : TFT_Init// Description : power on initial // Input ://--------------------------------------------------------------------------void TFT_Init(void){// 1. Initial TFT controller#ifdef VP_API_CT909P DWORD dwSaveInt; OS_DISABLE_INTERRUPTS( dwSaveInt ); (*((volatile DWORD *)(0x80004064))) |= 0x00512224; (*((volatile DWORD *)(0x80004068))) |= 0x000000C0;#ifdef SUPPORT_AV_IN (*((volatile DWORD *)(0x80004078))) |= 0x00004000; //Av in #endif#ifdef Digital_PANEL (*((volatile DWORD *)(0x80004058))) |= 0x0505A000; //Digital panel#endif OS_RESTORE_INTERRUPTS( dwSaveInt) ;#endif#ifdef CT951_PLATFORM _TFT_Init_I2C();#endif TFT_BackLight(0); TFT_Init_Variable(); TFT_Init_VP77(); Vipor_SetFlipType(EN_PANEL_FLIP_NORMAL);// Vipor_SetFlipType(EN_PANEL_FLIP_H);// Vipor_SetFlipType(EN_PANEL_FLIP_V);// Vipor_SetFlipType(EN_PANEL_FLIP_H_V); if (__TFTStatusInfo.bAv==TFT_AV_STATUS_AV) { __bFWKey=KEY_POWER; }}//*******************************************************************************//--------------------------------------------------------------------------// Function : TFT_ProcessKey// Description : process input key. // Input :bkey//--------------------------------------------------------------------------BYTE TFT_ProcessKey(){ BYTE bKey;#ifdef TFT_DEBUGif (KEY_MUTE == __bKey){__bKey = KEY_PICTURE; //Vipor_OsdClearRow(0, 15, VIPOR_OSD_BLACK); // OSD_BLACK=0#ifdef SUPPORT_BATTERY_DETECTION TFT_BatteryAction(); TFTOSD_ShowBattery(TRUE);#endif }#endif if((__TFTStatusInfo.bDvdMonitorPowerDown)&&(__TFTStatusInfo.bAv==TFT_AV_STATUS_DVD)) return KEY_BYPASS;#ifdef SUPPORT_BATTERY_DETECTION if (__btPowerDown && (__TFTStatusInfo.bBatteryPowerDown == TFT_BATTERY_STATUS_LOW)) { return KEY_NO_KEY; }#endif bKey = TFTSetup_ProcessKey(__bKey); switch(bKey) {#ifdef TFT_DEBUG case KEY_TEST1: printf("\nDVD In"); _sbAVInSW = 0; __TFTStatusInfo.bReSetInputSource = TRUE; __TFTStatusInfo.bAv = TFT_AV_STATUS_DVD; bKey=KEY_NO_KEY; break; case KEY_TEST2: printf("\nExt AV In"); _sbAVInSW = 1; __TFTStatusInfo.bReSetInputSource = TRUE; __TFTStatusInfo.bAv = TFT_AV_STATUS_AV; bKey=KEY_NO_KEY; break;#endif#ifdef SUPPORT_FLIP case KEY_TFT_REVERSE: if(__TFTStatusInfo.bFlip==EN_PANEL_FLIP_NORMAL) { __TFTStatusInfo.bFlip=EN_PANEL_FLIP_V; } else { __TFTStatusInfo.bFlip=EN_PANEL_FLIP_NORMAL; } Vipor_SetFlipType(__TFTStatusInfo.bFlip); bKey=KEY_NO_KEY;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -