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

📄 main.c

📁 7寸TFT电视的源程序
💻 C
字号:
#define DEBUG_MSG
#include "target.h"
 
 

extern bit bNeedSaveTone;

unsigned char idata ucSystemMode = TUNER_MODE;
//unsigned char ucSystemMode = TV_MODE;
//unsigned char ucSystemMode = TUNER_MODE;
void SaveKeyToBuff(unsigned char key);
unsigned char idata ucSystemModeOld ;
void FpDisplayVol(unsigned char vol)
{
vol=vol;
}
bit bPowerStatus = 1;
extern bit btaccswitch;

extern unsigned char idata AudioToneMode;
 

unsigned char code UserKeyList[] = {STOP_KEY,NUM2_KEY,NUM0_KEY,NUM0_KEY,NUM8_KEY};
unsigned char idata UserKeyIndex = 0;

/*
12mHZ 16
24mHZ 32
*/
void Delay100us(unsigned int ucdelay)
{
	unsigned int i;
	unsigned char j;
	if(ucdelay ==0) return;
	for(i=0;i<ucdelay;i++)
		for(j=0;j<16;j++);
}

void System_Init()
{
	TMOD=0x11;//GATE FOR TR0,when low start to count time
	ACON = 0x80;
	TH1=TIMERH;
	TL1=TIMERL;

	TR0 = 1;

	RCAP2H=BAUDH;
	RCAP2L=BAUDL;
	SCON=0X70;
	PCON=0X00;
	T2CON=0X30;	//RCLK=1 TCLK=1;
//
	TI=0;
	RI=0;

	IT0=1;
	IT1=1;
	TR1=1;
	TR2=1;
	ET1=1;
	EX0=0;	//for infrared remote
	EX1=1;// 2 infrared
	EA=1;
}

void GoToSystemMode(unsigned char ucmode,unsigned char bDelays)
{
	MuteOn();
	HwMuteOn();
	if(bDelays)
		Delay100us(1000);
	ucSystemMode = ucmode;
	 
	 
	switch(ucmode){
	case AV_MODE:
		EX1 = 1;
		AntCtrlOff();
		SelectVideo(VIDEO_IN3);
		SelectAudioIn(IN4_AUDIO);
		MpegPowerOff();
	break;
	case DVD_MODE:
		EX1 = 0;
		AntCtrlOff();
		SelectVideo(VIDEO_IN1);
		SelectAudioIn(IN1_AUDIO);
		 
		 
		MpegPowerOn();
		return;
	break;

	case TV_MODE:
		EX1 = 1;
		AntCtrlOff();
		MpegPowerOff();
		 
		SelectVideo(VIDEO_IN2);
		SelectAudioIn(IN2_AUDIO);
	break;

	case TUNER_MODE:
	default:
		EX1 = 1;
		AntCtrlOn();
		MpegPowerOff();
		ucSystemMode = TUNER_MODE;
		SelectVideo(VIDEO_MUTE);
		SelectAudioIn(IN3_AUDIO);
	break;
	}
	SaveKeyToBuff(INIT_KEY);
	SetBass(bass);
	SetTreble(treble);
	SetFader();
	MuteOff();
}
extern bit btPowerKeyPressed;
void SystemPowerOff()
{
	unsigned int i;
	SelectVideo(VIDEO_MUTE);
	AntCtrlOff();
	MuteOn();
	BackLightOff();
	if(ucSystemMode==DVD_MODE){
		MpegPowerOff();
       // FPClearLcd();//andy
	}
	 
	bPowerStatus = 0;
	for(i=0;i<5000;i++);
	HwMuteOn();
	AmpMuteOn();
	for(i=0;i<5000;i++);
	PowerOff();
 
    btPowerKeyPressed=0;
	EX1 = 1;
//	SetTimerFunc(0xffff,0);//andy
}

void SystemPowerOn()
{
	unsigned int i;
	HwMuteOn();
	AmpMuteOn();
	for(i=0;i<5000;i++);
	PowerOn();
	MuteOn();
	for(i=0;i<5000;i++);
	HwMuteOff();
	AmpMuteOff();
	bPowerStatus = 1;
	BackLightOn();
	GoToSystemMode(ucSystemMode,0);
	SetTimerFunc(0xffff,0);//andy
}

void CheckUserKeyList(unsigned char key)
{
	if(UserKeyIndex<5){
		if(UserKeyList[UserKeyIndex]==key)
			UserKeyIndex++;
		else
			UserKeyIndex = 0;
	}
	else{
		switch(key){
			case NUM0_KEY:
				SaveKeyToBuff(VERSION_KEY);
			break;
			case NUM1_KEY:
				SaveKeyToBuff(TEST_LCD_KEY);
			break;
		}
		if(key==EJECT_KEY){
			if(UserKeyIndex<9)
				UserKeyIndex++;
			else{
				SaveKeyToBuff(DESIGNER_KEY);
				UserKeyIndex = 0;
			}
		}
		else
			UserKeyIndex = 0;
	}
}

void defDealKey(unsigned int uikey)
{ 
	unsigned char m_BarType=0;
	unsigned char m_SourceType=0;
	unsigned char m_ScalerType=0;
	char *m_Str;
	 switch(uikey)
{
	                case POWER_KEY:
	                SystemPowerOff();
	                break;
			case ENTER_KEY:	
				 
				switch(m_SourceType)
				{
					case 0:    //CCIR601 8BIT
						MX88V46X_SOURCE_Select(MXIC_CCIR601_8BIT);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="CCIR601 8BIT";
						OSD_ShowText(m_Str,12,0x6E,0x05);
						break;
					case 1:    //CCIR601 16BIT
						MX88V46X_SOURCE_Select(MXIC_CCIR601_16BIT);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="CCIR601 16BIT";
						OSD_ShowText(m_Str,13,0x6E,0x05);
						break;
					case 2:    //CCIR656
						MX88V46X_SOURCE_Select(MXIC_CCIR656);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="CCIR656";
						OSD_ShowText(m_Str,7,0x6E,0x05);
						break;
					case 3:    //RGB666
						MX88V46X_SOURCE_Select(MXIC_RGB666);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="RGB666";
						OSD_ShowText(m_Str,6,0x6E,0x05);
						break;
					case 4:    //RGB565
						MX88V46X_SOURCE_Select(MXIC_RGB565);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="RGB565";
						OSD_ShowText(m_Str,6,0x6E,0x05);
						break;
					case 5:    //CVBS1
						MX88V46X_SOURCE_Select(MXIC_CVBS1);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="CVBS1";
						OSD_ShowText(m_Str,5,0x6E,0x05);
						break;
					case 6:    //SVIDEO
						MX88V46X_SOURCE_Select(MXIC_SVIDEO1);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="S-VIDEO1";
						OSD_ShowText(m_Str,8,0x6E,0x05);
						break;
					case 7:
						MX88V46X_SOURCE_Select(MXIC_CVBS2);
						MX88V46X_MODE_Select(MXIC_NTSC_MODE);
						MX88V46X_Enable_Gamma();
						MX88V46X_SCALING_Select(MXIC_SCALER_16_9);
						m_Str="CVBS2";
						OSD_ShowText(m_Str,5,0x6E,0x05);						
				}
				 
				break;
			case MODE_KEY:
				OSD_ShowSpecialChar(m_BarType,0xFF);
				//UART_Printf("OK\r\n");
				if(m_BarType++>=8) m_BarType=0;
				break;
			case UP_KEY:
				OSD_ShowSpecialChar(m_BarType-1,ADJ_ADD_VAL);
				break;
			case DOWN_KEY:
				OSD_ShowSpecialChar(m_BarType-1,ADJ_SUB_VAL);
				break;
			case MENU_KEY:
			//	OSD_GUI_MsgProc(WM_KEY_SHOW);
				m_ScalerType=!m_ScalerType;
				MX88V46X_SCALING_Select(m_ScalerType);
				break;
		}
#if 0
	switch(uikey){
		case VOL_UP_KEY:
            if(bMuteOn){
	        	PT2318MuteOff();
	        	MuteOff();
		}
			if(volume<VOL_MAX){
				volume++;
				bNeedSaveTone = 1;
			}
			else
				volume = VOL_MAX;
			SetVolume(volume);
			FpDisplayVol(volume);
			SetTimerFunc(TIME_5SEC,REDRAW_KEY);
		break;
		case VOL_DOWN_KEY:
	    	if(bMuteOn){
	        	PT2318MuteOff();
	        	MuteOff();
		}
           
			if(volume>0){
				volume--;
				bNeedSaveTone = 1;
			}
			else
				volume = 0;
			SetVolume(volume);
			FpDisplayVol(volume);
			SetTimerFunc(TIME_5SEC,REDRAW_KEY);
		break;

		case MUTE_KEY:
			if(bMuteOn&&volume){
				FpDisplayVol(volume);
				PT2318MuteOff();
				HwMuteOff();
			}
			else{
				FpDisplayVol(0);
				PT2318MuteOn();
				HwMuteOn();
			}
			SetTimerFunc(TIME_5SEC,REDRAW_KEY);
		break;

		case MODE_KEY:
			if(ucSystemMode!=TUNER_MODE){
				ucSystemMode++;
				if(ucSystemMode == TUNER_MODE) ucSystemMode = DVD_MODE;
				GoToSystemMode(ucSystemMode,0);
				ucSystemModeOld = ucSystemMode;
				 
			}
			else{
				if(ucSystemMode==ucSystemModeOld) ucSystemModeOld = DVD_MODE;
				ucSystemMode = ucSystemModeOld;
				GoToSystemMode(ucSystemMode,0);
			}
		break;
		 
		case POWER_KEY:
			if(bPowerStatus)
				SystemPowerOff();
			else{
		 		if(!btaccswitch)
					SystemPowerOn();
			}
		break;
		case TEST_LCD_KEY:
		 
			SetTimerFunc(TIME_5SEC,REDRAW_KEY);
		break;

		case BAND_KEY:
#ifdef NO_FMAM		
			if(ucSystemMode<TUNER_MODE){
				ucSystemModeOld=ucSystemMode;
				GoToSystemMode(TUNER_MODE,0);
			}
#endif			
		break;
	}
#endif	
}

void AVFunc(int key,unsigned char *para)
{
    para=para;
	if(AudioToneMode){
		AudioToneDealFunc(key);
		return;
	}
	switch(key){
		case POWER_KEY:
		case VOL_UP_KEY:
		case VOL_DOWN_KEY:
		case MUTE_KEY:
		case MODE_KEY:
		case VERSION_KEY:
		case TEST_LCD_KEY:
		case BAND_KEY:
			defDealKey(key);
			break;
		case TONE_KEY:
			AudioToneDealFunc(key);
			break;
		case REDRAW_KEY:
			if(bNeedSaveTone){
				bNeedSaveTone = 0;
				SaveTone();
			}

			 
		break;
		case INIT_KEY:
		 
		break;
	}
}

void DVDFunc(int key,unsigned char *para)
{
//	switch(key){
//		case BAND_KEY:
//		case MODE_KEY:
//			defDealKey(key);
//		break;
//	}

      para=para;
               switch(key){
			 
			 
//			case POWER_KEY:
//			     break;
            }
}

unsigned char TranslateKey(unsigned char key)
{
	if(AudioToneMode) return key;
	if(ucSystemMode==TUNER_MODE){
		switch(key){
			case LEFT_KEY:
				key = PS_KEY;
				break;
			case RIGHT_KEY:
				key = AS_KEY;
				break;
			case STOP_KEY:
				key = LOCAL_KEY;
				break;
			case PAUSE_KEY:
				key = ST_KEY;
				break;	
		}
	}
	return key;
}

#ifdef __AT24C02_TEST__
void Test24c02(unsigned int uikey);
#endif

void MainDealKey(unsigned int uikey)
{
	 

	switch(ucSystemMode){
	case AV_MODE:
		AVFunc(uikey,0);
	break;
	case TUNER_MODE:
		defDealKey(uikey);
	break;
	case DVD_MODE:
		DVDFunc(uikey,0);
	break;
	case TV_MODE:
	//	TVFunc(uikey,0);
	break;
//safe code,should not run here.
	default:
		//GoToSystemMode(TUNER_MODE,0);
	break;
	}
}

void idle_ejectdisc()
{
	
}
void cheat()
{  OSD_Initial();
   OSD_GUI_MsgProc(0);
   OSD_ShowSpecialChar(0,0);
   OSD_ShowText(0,0,0,0);
   FpDisplayVol(0);
   MXIC_OSDReg_Read(0,0,0,0);
   TunerFunc(0,0);
    
}
unsigned int uiKey;	
void SaveKeyToBuff(unsigned char key)
{
	uiKey=key;
}

void main()
{
	
	unsigned char keycount = 0;
	unsigned char *m_Str;
	if(keycount)
	cheat();
	System_Init();
	 
//	BackLightOff();
//	EjectDiscOff();
	ucSystemModeOld = ucSystemMode;
//	PowerOn();
//	SystemPowerOn();
//	LoadTone();
        
	m_Str="CVBS1"; 
	MX88V46X_DEFAULT_Initial();	
	OSD_Initial();
      
	OSD_ShowText(m_Str,5,0x6E,0x05);
	while(1)
	{   //unsigned char aa=0,bb=0;
		MainTimeHandle();
		//uiKey = GetKey();
		MX88V46X_CVBS_AutoDetection();
//		MXIC_WriteExternalReg(OSD_RW_CTRL,0x42);
       /* if(!uiKey&&uiKey!=POWER_KEY){
		FPClearLcd();
         
		aa=uiKey&0x0f;
		bb=uiKey&0xf0>>4;
		 
        }*/
//in power off status
		if(bPowerStatus==0){
			switch(uiKey){
				case POWER_KEY:
					if(!btaccswitch) SystemPowerOn();
				break;

				case EJECT_KEY:
					idle_ejectdisc();
				break;
			}
			 
		}
//power on 
		else{
			if(uiKey){
				CheckUserKeyList(uiKey);
				ShowLcdHex(0x00,uiKey);
				ShowLcdHex(0x04,keycount++);
				ShowLcdHex(0x06,ucSystemMode);
				uiKey = TranslateKey(uiKey);
				if(uiKey){
					MainDealKey(uiKey);
					uiKey=0;
				}
			}
			if(ucSystemMode == DVD_MODE)
			{
				 
			}
			 
		 
		}
		
	}
}


⌨️ 快捷键说明

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