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

📄 saa7114.c

📁 车载DVD的主控MCU的源程序
💻 C
字号:
/*==========================================
==========================================*/
#include "include.h"
/*==========================================
==========================================*/



void Init5150(void)
{
     code unsigned char Tabl5150a[]={0x0f,0x08,0x0b,0x00,0x0a,0x80,0x0c,0x80};//,0x07,0x60,0x0d,0x47,0x30,0x01};
     code unsigned char Tabl5150[]={0x00,0x00,0x02,0x00,0x03,0x0f,0x04,0x1c,0x07,0x00,0x08,0x00,0x09,0x80};//0x0f,0x0c,0x0b,0x7f};//0x0a,0x80,
     unsigned char i, Data,Addr;
     for (i=0; i< 8;i++)
         {
           Addr=Tabl5150[i];
           Data=Tabl5150[i+1];
           WriteIIC_Video(Addr,Data); 
           CLRWDT = 0x55;
         }   
     for (i =0;i <4; i++)
        {
           Addr=Tabl5150a[i];
           Data=Tabl5150a[i+1];
           WriteIIC_Video(Addr,Data);
           CLRWDT = 0x55;
        }

}

void TPV5147Init(void)
{
		I_OVideoPowerOn;

		Sleep(20);	
		I_OVideoResetLow;
		Sleep(20);
		I_OVideoResetHigh;
		Sleep(20);	

	ForceToBackground(0,0,0);

	Init5150();

	FuncBuf[pBRIGHTNESS] = 50;	//set scaler
	SetBrightness();

	WriteIIC563(0x061,0x0d);
	WriteIIC563(0x063,0x80);
	WriteIIC563(0x061,0x0e);
	WriteIIC563(0x063,0x80);
	WriteIIC563(0x061,0x0f);
	WriteIIC563(0x063,0x80);
	

	VideoTimer = VIDEO_SEARCH_TIME;
	VideoFlag = 0xff;
	BlueScreen = 0;
	VideoOK=0;

}

//*******************************************************
//
//*******************************************************
void CheckVideoNTSC(void)
{
	if(1)
	{
		FastMuteEnable = 0;		//y50909 test kevin 0x16e issue
		if(FLG_Change_SyncMode)
		{
			ForceToBackground(0,0,0);
			VideoTimer = VIDEO_SEARCH_TIME;
			//WriteIIC563(0x191,0x04);	//Y040106 for video picture be by pass issue
			WriteIIC563(0x191,0x0c);	// 070627 Eason
			BlueScreen = 0;
		        NoSyncFlag=0;
			VideoOK = 0;
			ForceToBack=0;
			OutOfRange = OverRangeMuteScreen;		//y50312
		        MessageShow = 0;
			FLG_Change_SyncMode=0;
	
		}
	if(VideoTimer < 100 && !VideoOK && !BlueScreen){
//#if TEST_MESSAGE3
//	printf(" Video ON \n");
//#endif
		VideoTimer=0;
		BurnInMode=0;
		MessageShow=0;	
		VideoOK = 1;
		OutOfRange = Within_range;		//for let turn off osd kevin added y50312
		FLG_Change_SyncMode=0;
//		if(Is_SX_Series)   //neo 070725
//			Is_SearchVideoSystem=0; //fixed in found this mode
//		else
//			Is_SearchVideoSystem=1;
//		FuncBuf[pBRIGHTNESS] = Read24C16(ep_Video_Brightness);
//		LoadContrasData();
//		FuncBuf[pSATURATION] = Read24C16(ep_Video_Saturation);
//		FuncBuf[pSHARPNESS] = Read24C16(ep_Video_Shapness);
//		FuncBuf[pTINT] = Read24C16(ep_Video_Tint);
//		LED_GrnOn();
//		LED_RedOff();
//		SetVideoContrast();
//		SetContrast();
//		SetVideoBrightness();
//		SetVideoSharpness();
//		SetScalerColorSpace();
		SetScalerAVNTSC();
		// Force background to black if we use white srceen on mode changing // Jude 2007/05/08
		WriteIIC563(0x16b,0);
		WriteIIC563(0x16c,0);
		WriteIIC563(0x16d,0);

		// Add by Eason 070505
//		Write24C16(ep_Sync_Source,FuncBuf[pVIDEOSOURCE]);	//add by Eason 070501
		VideoSourcePtr=FuncBuf[pVIDEOSOURCE];
//		if(FactMode){
//			SetInFacOSDMode();
//		}

//#if TEST_MESSAGE3
//				printf("9__ep_Sync_Source=%d\n",FuncBuf[pVIDEOSOURCE]);		
//#endif

		}
/*	
	if(VideoTimer == 0 && !BlueScreen &&!VideoOK )
	{
		if(!MessageShow)
		{
			ForceToBackground(0,0,0);
		        if(Is_SwitchSourceByMaunual){
			        PanelPowerUpSequence();			
				c_BlinkTimer=0;		//for display msg
				bit_sourcee_nosignal=0;
				Is_EnableShowMsg=1;
				Is_ShowNoSyncMsg=1;
				bit_sourcee_nosignal=1;
				OutOfRange = OverRangeMuteScreen;
			        MessageShow = 1;
				NoSyncFlag=1;		//for enter power saving
				PowerTimer = POWER_TIME-200;
				if(!Is_SX_Series)
					{
					Osd_Off();
					WriteIIC563(0x159,0x00);				
					ShowSource();
					Osd_On(0);
				}
			}
			else{
				ShowMessage(MSG_NOSYNC);
//         			PanelPowerUpSequence();

				Osd_Off();
		//		PanelPowerDownSequence(1);
         			MessageShow = 1;
                       }
		}
		BlueScreen = 1;
		if(!Is_SX_Series && IsAutoDetectionMode){			
			MessageShow = 0;
			PowerTimer = POWER_TIME-200;
//			FuncBuf[pVIDEOSOURCE]=0;
			FuncBuf[pVIDEOSOURCE]=SourceVGA;
			ChangeMode = 1;
			SetSource();
               }
	}*/
	}	

}
void CheckVideoPAL(void)
{

//	Byte LockStatus;

	if(1)
	{
		FastMuteEnable = 0;		//y50909 test kevin 0x16e issue
		if(FLG_Change_SyncMode)
		{
			ForceToBackground(0,0,0);
			VideoTimer = VIDEO_SEARCH_TIME;
			//WriteIIC563(0x191,0x04);	//Y040106 for video picture be by pass issue
			WriteIIC563(0x191,0x0c);	// 070627 Eason
			BlueScreen = 0;
		        NoSyncFlag=0;
			VideoOK = 0;
			ForceToBack=0;
			OutOfRange = OverRangeMuteScreen;		//y50312
		        MessageShow = 0;
			FLG_Change_SyncMode=0;
	
		}
	if(VideoTimer < 100 && !VideoOK && !BlueScreen){
//#if TEST_MESSAGE3
//	printf(" Video ON \n");
//#endif
		VideoTimer=0;
		BurnInMode=0;
		MessageShow=0;	
		VideoOK = 1;
		OutOfRange = Within_range;		//for let turn off osd kevin added y50312
		FLG_Change_SyncMode=0;
//		if(Is_SX_Series)   //neo 070725
//			Is_SearchVideoSystem=0; //fixed in found this mode
//		else
//			Is_SearchVideoSystem=1;
//		FuncBuf[pBRIGHTNESS] = Read24C16(ep_Video_Brightness);
//		LoadContrasData();
//		FuncBuf[pSATURATION] = Read24C16(ep_Video_Saturation);
//		FuncBuf[pSHARPNESS] = Read24C16(ep_Video_Shapness);
//		FuncBuf[pTINT] = Read24C16(ep_Video_Tint);
//		LED_GrnOn();
//		LED_RedOff();
//		SetVideoContrast();
//		SetContrast();
//		SetVideoBrightness();
//		SetVideoSharpness();
//		SetScalerColorSpace();
		SetScalerAVPAL();
		// Force background to black if we use white srceen on mode changing // Jude 2007/05/08
		WriteIIC563(0x16b,0);
		WriteIIC563(0x16c,0);
		WriteIIC563(0x16d,0);

		// Add by Eason 070505
//		Write24C16(ep_Sync_Source,FuncBuf[pVIDEOSOURCE]);	//add by Eason 070501
//		VideoSourcePtr=FuncBuf[pVIDEOSOURCE];
//		if(FactMode){
//			SetInFacOSDMode();
//		}

//#if TEST_MESSAGE3
//				printf("9__ep_Sync_Source=%d\n",FuncBuf[pVIDEOSOURCE]);		
//#endif

		}
/*	
	if(VideoTimer == 0 && !BlueScreen &&!VideoOK )
	{
		if(!MessageShow)
		{
			ForceToBackground(0,0,0);
		        if(Is_SwitchSourceByMaunual){
			        PanelPowerUpSequence();			
				c_BlinkTimer=0;		//for display msg
				bit_sourcee_nosignal=0;
				Is_EnableShowMsg=1;
				Is_ShowNoSyncMsg=1;
				bit_sourcee_nosignal=1;
				OutOfRange = OverRangeMuteScreen;
			        MessageShow = 1;
				NoSyncFlag=1;		//for enter power saving
				PowerTimer = POWER_TIME-200;
				if(!Is_SX_Series)
					{
					Osd_Off();
					WriteIIC563(0x159,0x00);				
					ShowSource();
					Osd_On(0);
				}
			}
			else{
				ShowMessage(MSG_NOSYNC);
//         			PanelPowerUpSequence();

				Osd_Off();
		//		PanelPowerDownSequence(1);
         			MessageShow = 1;
                       }
		}
		BlueScreen = 1;
		if(!Is_SX_Series && IsAutoDetectionMode){			
			MessageShow = 0;
			PowerTimer = POWER_TIME-200;
//			FuncBuf[pVIDEOSOURCE]=0;
			FuncBuf[pVIDEOSOURCE]=SourceVGA;
			ChangeMode = 1;
			SetSource();
               }
	}*/
	}	

}

//*******************************************************
//
//*******************************************************
#if 0
void CheckColorSystem(void)
{
		VideoStandard = ReadIIC_Video(0x28)&TPV5147_0x3F_Mask;
		VideoFlag = ReadIIC_Video(0x1d)&TPV5147_0x3A_Mask;
		if(!ColorSubcarrierLocked ||!Video_HsyncLocked){
			Sleep(100);
		}
		VideoStandard = ReadIIC_Video(0x28)&TPV5147_0x3F_Mask;
		VideoFlag = ReadIIC_Video(0x1d)&TPV5147_0x3A_Mask;
#if PRINT_MESSAGE
		printf(" In CheckColorSystem VideoFlag(0x3a) = %0x VideoStandard(0x3f) = %x \n",(Word)VideoFlag,(Word)VideoStandard);
#endif
		CLRWDT=0x55;
		if(!(VideoStandard&0x07))
			TvMode=0;				//default for VideoStandard=0 error
		else
			TvMode=(VideoStandard&0x07)-1;	

}
#endif


void SetVideoSaturation(void)
{
#if 0
	Byte value;
	value = FuncBuf[pSATURATION];
	WriteIIC_Video(0x0a,value);	
#endif
}



void SetVideoTint(void)
{
#if 0
	Byte value;
//	value = ((signed char)(FuncBuf[pTINT] -50)) * 255/ 100;	//50% = 0
	value=FuncBuf[pTINT]+0x7f;
//	if(FuncBuf[pTINT]>0x7f)
//		value^=0xff;
	WriteIIC_Video(0x0b,value);
#endif
}



void SetVideoSharpness(void)
{
#if 0
	Word code H_Sharp[]={
		0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,
		0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,
		0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
		0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
	};
	WriteIIC563(0x060,H_Sharp[FuncBuf[pSHARPNESS]]);
	WriteIIC563(0x066,FuncBuf[pSHARPNESS]/4);
#endif
}

//***********************************************
//
//***********************************************


//***********************************************
//
//***********************************************
#if 0
Bit IsVideoSyncPresent(void)
{
		return ReadIIC_Video(0x3b)&0x80;		//sync present?
}
#endif
//*********************************************************************
//
//*********************************************************************


⌨️ 快捷键说明

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