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

📄 vpc3230.c

📁 MCS51源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
      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 + -