📄 vpc3230.c
字号:
if(ColorOnOff==1) //on
Write3230Fp(0x0148, 0x007f);
else
Write3230Fp(0x0148, 0x0000);
}
/*************************************/
/*设置VPC3230/NV221工作在PAL模式 */
/*形参数据:无,返回值:无 */
/*************************************/
void VpcSetToPal0(void)
{
IBYTE i;
for(i=0;i<3;i++)
WriteI2cToVpcWord(VpcPalStandard[i*2], VpcPalStandard[i*2+1]);
}
/************************************/
/*设置VPC3230/NV221工作在NTSC模式 */
/*形参数据:无,返回值:无 */
/************************************/
void VpcSetToNtsc0()
{
IBYTE i;
for(i=0;i<3;i++)
WriteI2cToVpcWord(VpcNtscStandard[i*2], VpcNtscStandard[i*2+1]);
}
/**************************************************************/
/*设置VPC3230彩色解码的制式 */
/*形参数据:color_std=彩色制式值,参见VPC3230.H文件 */
/*返回值:无 */
/**************************************************************/
void ColorDecoderStandard(BYTE color_std)
{
WORD temp;
BYTE i;
WORD x[3];
temp=ReadOneWordFromVpcfp(0x0020);
temp&=0x07f8;
switch(color_std)
{
case PAL_50_443: //PAL B,G,H,I
VpcSetToPal0();
temp|=PAL_50_443;
Write3230Fp(0x0020, temp);
break;
case NTSC_60_358: //NTSC M
VpcSetToNtsc0();
temp|=NTSC_60_358;
Write3230Fp(0x0020, temp);
break;
case SECAM: //SECAM
VpcSetToPal0();
temp|=SECAM;
Write3230Fp(0x0020, temp);
break;
case NTSC_60_443:
VpcSetToNtsc0(); //NTSC443
temp|=NTSC_60_443;
Write3230Fp(0x0020, temp);
break;
case PAL_60_358: //PAL M
VpcSetToPal0();
temp|=PAL_60_358;
Write3230Fp(0x0020, temp);
break;
case PAL_50_358: //PAL N
VpcSetToPal0();
temp|=PAL_50_358;
Write3230Fp(0x0020, temp);
break;
case PAL_60_443: //PAL60
VpcSetToPal0();
temp|=PAL_60_443;
Write3230Fp(0x0020, temp);
break;
case AUTO_RECOGNITION:
for(i=0;i<3;i++)
{
x[i]=ReadOneWordFromVpcfp(0x00cb);
Delay(0x80);
}
if(x[0]==x[1]==x[2])
temp=x[0];
else
temp=312;
if(temp>=(312+262)/2) //average PAL and NTSC
VpcSetToPal0();
else
VpcSetToNtsc0();
VpcAutoColor(1); //auto standard recognition on
break;
default:
break;
}
}
/**************************************************************/
/*选择VPC3230的输入信号 */
/*形参数据:g_video_mode=选择输入信号,参见VPC3230.H文件 */
/*返回值:无 */
/**************************************************************/
void VideoSelect(BYTE g_video_mode)
{
WORD temp;
temp=ReadOneWordFromVpcfp(0x0020);
// WriteI2cToVpcWord(0x1f, 0x0c00);
VpcAutoColor(0); //auto standard recognition off
switch(g_video_mode)
{
case TV:
temp&=0xff9f;
temp|=0x0020;
Write3230Fp(0x0020, temp);
Write3230Fp(0X0021, 0x0220); //620
SelectMixMode(2);
AudioSel=0;
break;
case VIDEO:
temp&=0xff9f;
temp|=0x0020;
Write3230Fp(0x0020, temp);
Write3230Fp(0X0021, 0X0625);
SelectMixMode(2);
AudioSel=1;
break;
case SVIDEO:
temp&=0xff9f;
temp|=0x0040;
Write3230Fp(0x0020, temp);
Write3230Fp(0X0021, 0X0646);
SelectMixMode(2);
AudioSel=1;
break;
case YCBCR:
Write3230Fp(0X0021, 0X0627);
StaticSwitchMode(); //select DVD component
AudioSel=1;
break;
default:
break;
}
VpcAutoColor(1); //auto standard recognition on
}
/******************************************************************/
/******* vpc3230模拟量设置 ***********/
/*形参传递:target=需要的模拟量(包括亮度/对比度等) ****/
/* upordown=增加/减少方向 *****/
/*返回值:无 *****/
/***注意:每次调整都是从EEPROM中读出,调整后重新存入EEPROM ****/
/******************************************************************/
void DV_MP_Change_Effect(BYTE target, BOOL upordown)
{
BYTE temp,y;
WORD x;
read_from_i2c(READ_EEPROM,ANALOG_2402+target,&temp);
y=temp;
if(target!=SHARPNESS_ADJUST)
y/=2;
if(y>29)
y=29;
SpecPosiDrawErase(upordown,y); //display or erase current block
if(upordown==1) //up
{
if(temp<63)
temp++;
}
else
{
if(temp!=0)
temp--; //down
}
switch(target)
{
case BRIGHTNESS_ADJUST:
Write3230Fp(0x0052, temp&0x00ff);
Write3230Fp(0x0040, 0x0000);
break;
case CONTRAST_ADJUST:
Write3230Fp(0x0053, temp&0x003f);
Write3230Fp(0x0040, 0x0000);
break;
case SATURATION_ADJUST:
x=((WORD)temp)*0x0040;
Write3230Fp(0x0030, x);
break;
case SHARPNESS_ADJUST:
if(temp>31)
temp=31;
write_to_i2c(WRITE_NDSP320,0x8e,1, &temp);
break;
case HUE_ADJUST:
Write3230Fp(0x0091, temp&0x003f);
break;
default:
break;
}
osd_select(OSD_DATA_BASE+temp%10,RED,24,2+target);/*display spec.analog data low bit'*/
if(temp>9)
osd_select(OSD_DATA_BASE+temp/10,RED,23,2+target); /*display spec.analog data high bit'*/
else
osd_select(0,RED,23,2+target); /*no high bit,instead of blank unit*/
write_to_i2c(WRITE_EEPROM,ANALOG_2402+target,1,&temp);
write_to_i2c(WRITE_EEPROM,MODE_ADDRESS+target,1,&temp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -