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

📄 vdc_tvp5147.c

📁 车载 液晶显示器的主控程序(主要使用芯片为 MYSON MTV512 单片机、RealTek 2323 Scare 芯片、TVP5147(视频解码)。配Sharp 8寸液晶显示器 )。
💻 C
📖 第 1 页 / 共 2 页
字号:

/*****************************************************************
	Video Chip files
	Vdc_5147.c
*****************************************************************/

#include "..\Header\Include.h"

#if(_VIDEO_SUPPORT == _ON)
#if(_VIDEO_TYPE == _VIDEO_5147)

//-------------------------------------------------
// Description :	5147 needs to write VBUS
//-------------------------------------------------
BYTE code tVIDEO_TABLE_VBUS_INIT[][4] = 
{
	{0x02, 0x00, 0x80, 0x01},
	{0x60, 0x00, 0xB0, 0x01},
	{0x16, 0x00, 0xA0, 0x16},
	{0x60, 0x00, 0xB0, 0x00},
};

//-------------------------------------------------
// Description :	5147 needs to coptimize pal comb
//-------------------------------------------------
BYTE code tVIDEO_TABLE_PAL_COMB_OPTIMIZE[][4] = 
{
	{0x80, 0x00, 0x4d, 0x08},
	{0x80, 0x00, 0x61, 0x10},
};
//-------------------------------------------------
// Description :	5147 needs to coptimize pal comb
//-------------------------------------------------
BYTE code tVIDEO_TABLE_NTSC_COMB_OPTIMIZE[][4] = 
{
	{0x80, 0x00, 0x3c, 0x40},
	{0x80, 0x00, 0x3d, 0x00},
	{0x80, 0x00, 0x3e, 0x40},
	{0x80, 0x00, 0x3f, 0x00},
	{0x80, 0x00, 0x40, 0x44},

	{0x80, 0x00, 0x41, 0x23},
	{0x80, 0x00, 0x42, 0x38},
	{0x80, 0x00, 0x43, 0x10},
	{0x80, 0x00, 0x44, 0x33},
	{0x80, 0x00, 0x45, 0x23},

	{0x80, 0x00, 0x46, 0x02},
	{0x80, 0x00, 0x47, 0x00},
	{0x80, 0x00, 0x48, 0x20},
	{0x80, 0x00, 0x49, 0x00},
	{0x80, 0x00, 0x4a, 0x00},

	{0x80, 0x00, 0x4b, 0x04},
	{0x80, 0x00, 0x4c, 0x04},
	{0x80, 0x00, 0x4d, 0x04},
	{0x80, 0x00, 0x4e, 0x10},
	{0x80, 0x00, 0x4f, 0xf8},

	{0x80, 0x00, 0x50, 0x30},
	{0x80, 0x00, 0x51, 0x20},
	{0x80, 0x00, 0x52, 0x30},
	{0x80, 0x00, 0x53, 0x3f},
	{0x80, 0x00, 0x54, 0x3f},

	{0x80, 0x00, 0x55, 0x3f},
	{0x80, 0x00, 0x56, 0x0c},
	{0x80, 0x00, 0x57, 0x0c},
	{0x80, 0x00, 0x58, 0x80},
	{0x80, 0x00, 0x59, 0x80},
	
	{0x80, 0x00, 0x5a, 0x08},
	{0x80, 0x00, 0x5b, 0x08},
	{0x80, 0x00, 0x5c, 0x08},
	{0x80, 0x00, 0x5d, 0x30},
	{0x80, 0x00, 0x5e, 0x08},

	{0x80, 0x00, 0x5f, 0x08},
	{0x80, 0x00, 0x60, 0x00},
	{0x80, 0x00, 0x61, 0x00},
	{0x80, 0x00, 0x62, 0x00},
	{0x80, 0x00, 0x63, 0x00},

	{0x80, 0x00, 0x68, 0x03},
	{0x80, 0x00, 0x69, 0x00},
	{0x80, 0x00, 0x6a, 0x03},
	{0x80, 0x00, 0x6b, 0x00},
	{0x80, 0x00, 0x6c, 0x30},

	{0x80, 0x00, 0x6d, 0x03},
	{0x80, 0x00, 0x6e, 0x18},
	{0x80, 0x00, 0x6f, 0x0c},
	{0x80, 0x00, 0x34, 0x40},
	{0x80, 0x00, 0x34, 0x41},

	{0x80, 0x00, 0x44, 0x53},
	{0x80, 0x00, 0x4a, 0x04},
	{0x80, 0x00, 0x5f, 0x04},
	{0x80, 0x00, 0x61, 0x10},
/*
WR_IND,VID_DEC,0x01,0x80003C,0x40 //
WR_IND,VID_DEC,0x01,0x80003D,0x00 //
WR_IND,VID_DEC,0x01,0x80003E,0x40 //
WR_IND,VID_DEC,0x01,0x80003F,0x00 //
WR_IND,VID_DEC,0x01,0x800040,0x44 //

WR_IND,VID_DEC,0x01,0x800041,0x23 //
WR_IND,VID_DEC,0x01,0x800042,0x38 //
WR_IND,VID_DEC,0x01,0x800043,0x10 //
WR_IND,VID_DEC,0x01,0x800044,0x33 //
WR_IND,VID_DEC,0x01,0x800045,0x23 //

WR_IND,VID_DEC,0x01,0x800046,0x02 //
WR_IND,VID_DEC,0x01,0x800047,0x00 //
WR_IND,VID_DEC,0x01,0x800048,0x20 //
WR_IND,VID_DEC,0x01,0x800049,0x00 //
WR_IND,VID_DEC,0x01,0x80004A,0x00 //

WR_IND,VID_DEC,0x01,0x80004B,0x04 //
WR_IND,VID_DEC,0x01,0x80004C,0x04 //
WR_IND,VID_DEC,0x01,0x80004D,0x04 //
WR_IND,VID_DEC,0x01,0x80004E,0x10 //
WR_IND,VID_DEC,0x01,0x80004F,0xF8 //

WR_IND,VID_DEC,0x01,0x800050,0x30 //
WR_IND,VID_DEC,0x01,0x800051,0x20 //
WR_IND,VID_DEC,0x01,0x800052,0x30 //
WR_IND,VID_DEC,0x01,0x800053,0x3F //
WR_IND,VID_DEC,0x01,0x800054,0x3F //

WR_IND,VID_DEC,0x01,0x800055,0x3F //
WR_IND,VID_DEC,0x01,0x800056,0x0C //
WR_IND,VID_DEC,0x01,0x800057,0x0C //
WR_IND,VID_DEC,0x01,0x800058,0x80 //
WR_IND,VID_DEC,0x01,0x800059,0x80 //

WR_IND,VID_DEC,0x01,0x80005A,0x08 //
WR_IND,VID_DEC,0x01,0x80005B,0x08 //
WR_IND,VID_DEC,0x01,0x80005C,0x08 //
WR_IND,VID_DEC,0x01,0x80005D,0x30 //
WR_IND,VID_DEC,0x01,0x80005E,0x08 //

WR_IND,VID_DEC,0x01,0x80005F,0x08 //
WR_IND,VID_DEC,0x01,0x800060,0x00 //
WR_IND,VID_DEC,0x01,0x800061,0x00 //
WR_IND,VID_DEC,0x01,0x800062,0x00 //
WR_IND,VID_DEC,0x01,0x800063,0x00 // 

WR_IND,VID_DEC,0x01,0x800068,0x03 //
WR_IND,VID_DEC,0x01,0x800069,0x00 //
WR_IND,VID_DEC,0x01,0x80006A,0x03 //
WR_IND,VID_DEC,0x01,0x80006B,0x00 //
WR_IND,VID_DEC,0x01,0x80006C,0x30 //

WR_IND,VID_DEC,0x01,0x80006D,0x30 //
WR_IND,VID_DEC,0x01,0x80006E,0x18 //
WR_IND,VID_DEC,0x01,0x80006F,0x0C //
WR_IND,VID_DEC,0x01,0x800034,0x40 //  
WR_IND,VID_DEC,0x01,0x800034,0x41 //

WR_IND,VID_DEC,0x01,0x800044,0x53 //
WR_IND,VID_DEC,0x01,0x80004A,0x04 // 
WR_IND,VID_DEC,0x01,0x80005F,0x04 // 
WR_IND,VID_DEC,0x01,0x800061,0x10 //
*/
};
BYTE CAdjustRealValue(BYTE srcItem, BYTE srcSliderValue, BYTE srcSliderMax, BYTE srcMax, BYTE srcMid, BYTE srcMin)
{
	WORD usTemp;

	srcItem = srcItem;

	if (srcSliderValue == srcSliderMax)
		return (srcMax);
	if (srcSliderValue == 0)
		return (srcMin);

	if (srcItem == _MENU_MU_SHARPNESS) {
		if (srcSliderValue<5)
			return 0;
		else if (srcSliderValue<10)
			return 1;
		else if (srcSliderValue<15)
			return 2;
		else 
			return 3;

	}
	
	if (srcSliderValue>srcSliderMax)
		srcSliderValue = srcSliderMax/2;
	/* This line 
	usTemp = (srcValue * (srcMax-srcMin)) /100 + srcMin;
	*/

	if (srcSliderValue > srcSliderMax/2) {
		usTemp = srcMax-srcMid;
		usTemp *= (srcSliderValue-srcSliderMax/2);
		usTemp /= srcSliderMax/2;
		usTemp += srcMid;
	}
	else {
		usTemp = srcMid-srcMin;
		usTemp *= (srcSliderValue);
		usTemp /= srcSliderMax/2;
		usTemp += srcMin;
	}
	
	return ((BYTE)usTemp);
}

void CAdjustVideoContrast(void)
{
	BYTE ucTemp;
	#if (_CUSTOM_TYPE == _CUSTOM_HAOZHEN)
	ucTemp = CAdjustRealValue(_MENU_MU_CONTRAST, _SLIDER_MAX_CONTRAST-stVideoData.Contrast, _SLIDER_MAX_CONTRAST,_VCONTRAST_MAX, _VCONTRAST_MID, _VCONTRAST_MIN);
	#else
	ucTemp = CAdjustRealValue(_MENU_MU_CONTRAST, stVideoData.Contrast, _SLIDER_MAX_CONTRAST,_VCONTRAST_MAX, _VCONTRAST_MID, _VCONTRAST_MIN);
	#endif
	//CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0A), LENGTH(1), &stVideoData.Contrast);
	CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0A), LENGTH(1), &ucTemp);
}

void CAdjustVideoBright(void)
{
#if (_SLIDER_MAX_BRIGHTNESS == 15)
#define DIGITAL_BRI_MIN		(0x50+5)
#define DIGITAL_BRI_MAX		(0x50+3*15+5)
#define DIGITAL_BRI_STEP	((DIGITAL_BRI_MAX-DIGITAL_BRI_MIN)/_SLIDER_MAX_BRIGHTNESS)
	BYTE ucTemp;
	/////////////////////////////
	stConBriData.Brightness = DIGITAL_BRI_MIN + DIGITAL_BRI_STEP*stVideoData.Brightness;
	CAdjustBrightness();
	CEepromSaveBriConData();
	
	////////////////////////////
	//ucTemp = CAdjustPercentValue(stVideoData.Brightness, _VBRIGHT_MAX, _VBRIGHT_MIN);
	//ucTemp = CAdjustRealValue(_MENU_MU_BRIGHT, 6/*stVideoData.Brightness*/, _SLIDER_MAX_BRIGHTNESS,_VBRIGHT_MAX, _VBRIGHT_MID, _VBRIGHT_MIN);
	ucTemp = 0x68;	
	CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x09), LENGTH(1), &ucTemp);
#else
/*
#define DIGITAL_BRI_MAX		(0x50+100/2)
#define DIGITAL_BRI_MIN		0x50
#define DIGITAL_BRI_STEP	1//((DIGITAL_BRI_MAX-DIGITAL_BRI_MIN)/_SLIDER_MAX_BRIGHTNESS)
	BYTE ucTemp;
	/////////////////////////////
	stConBriData.Brightness = DIGITAL_BRI_MIN + DIGITAL_BRI_STEP*(stVideoData.Brightness/2);
	CAdjustBrightness();
	CEepromSaveBriConData();
	ucTemp = 0x68;	
	CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x09), LENGTH(1), &ucTemp);
	//CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x09), LENGTH(1), &stVideoData.Brightness);
*/
#define DIGITAL_BRI_MAX		(0x50+100+40)
#define DIGITAL_BRI_MIN		(0x50-10)
#define DIGITAL_BRI_STEP	1//((DIGITAL_BRI_MAX-DIGITAL_BRI_MIN)/_SLIDER_MAX_BRIGHTNESS)
	BYTE ucTemp;
	/////////////////////////////
	stConBriData.Brightness = DIGITAL_BRI_MIN + DIGITAL_BRI_STEP*(stVideoData.Brightness);
	CAdjustBrightness();
	CEepromSaveBriConData();
	ucTemp = 0x68;	
	CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x09), LENGTH(1), &ucTemp);
#endif
}

void CAdjustVideoSaturation(void)
{
	BYTE ucTemp;
	ucTemp = CAdjustRealValue(_MENU_MU_SATURATION, stVideoData.Saturation, _SLIDER_MAX_SATURATION,_VSATURATION_MAX, _VSATURATION_MID, _VSATURATION_MIN);
	CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0B), LENGTH(1), &ucTemp);
}

void CAdjustVideoHue(void)
{
/*
	BYTE temp;
	if (CHECK50HZ())
		temp = _VHUE_50_DEFAULT^0x80;
	else
		temp = stVideoData.Hue^0x80;
	CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0C), LENGTH(1), &temp);
*/
	BYTE ucTemp;
		//ucTemp = CAdjustPercentValue(stVideoData.Hue, _VHUE_MAX, _VHUE_MIN);
	if (CHECK50HZ()) {
		ucTemp = 0x00;
	}
	else{
		ucTemp = CAdjustRealValue(_MENU_MU_HUE, stVideoData.Hue, _SLIDER_MAX_HUE, _VHUE_MAX, _VHUE_MID, _VHUE_MIN);
		ucTemp = ucTemp^0x80;
	}
	CI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0C), LENGTH(1), &ucTemp);
}

void CAdjustVideoSharpness(void)
{
	BYTE temp;

	temp = CAdjustRealValue(_MENU_MU_SHARPNESS, stVideoData.VSharpness, _SLIDER_MAX_SHARPNESS,_VSHARPNESS_MAX, _VSHARPNESS_MID, _VSHARPNESS_MIN);
	//CVdcI2cRead(_VIDEO_DEVICE, ADDRESS(0x07), LENGTH(1));
	temp = /*(pData[0] & 0xF3) |*/ (temp&0x03)<<2;
	CI2cRead(_VIDEO_DEVICE, ADDRESS(0x07), LENGTH(1), &temp);
/*
	BYTE temp;

	temp = (temp & 0xF3) | ((stVideoData.VSharpness&0x03)<<2);
	CI2cRead(_VIDEO_DEVICE, ADDRESS(0x07), LENGTH(1), &temp);
*/
}


//--------------------------------------------------
// Description  : Video initialize
// Input Value  : None
// Output Value : None
//--------------------------------------------------

void CVideoInitial(void)

⌨️ 快捷键说明

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