tv.c

来自「CS8955控制TV软件。用MCU做模拟电视的控制。」· C语言 代码 · 共 2,016 行 · 第 1/5 页

C
2,016
字号
    bData[1] = _sTunerPLL.wDB  ;
//    bData[2] = TUNER_CB1;
    bData[2] = _sTunerPLL.bCB;
    bData[3] = _sTunerPLL.bBB;
#endif
	
    vTV_PLL_Write(bData);	

    bData[0] = IF_RESERVED;
#ifdef MARTIN_TEST_TV_IIC  //29May08 test  //PAL B/G 471.25M
bData[1] = 0x56;
bData[2] = 0x70;
bData[3] = 0x09;
#else	
#if 0
bTvCurrSystem=(sTvCurrChannel.bSystem & 0x07);
bTvCurrSound=(sTvCurrChannel.bSystem & 0x38 )>>3;
bTvPllGate=0x00;

bTVSoundCarrier=bTvCurrSound; //Sound Default == setup menu
if((bTvCurrSystem == SV_NTSC)||(bTvCurrSystem == SV_PAL_M)||(bTvCurrSystem == SV_PAL_N))
 {
   if(bTvCurrSound != SV_MN)
    {
     bTvCurrSound=bTVSoundCarrier = SV_MN; //sound set MN,
     sTvCurrChannel.bSystem &= 0xc7;  //sound set MN,
    }
 }
if(bTvCurrSystem == SV_SECAM_L)
  {
  	if(bTvCurrSound == SV_MN)
  		{
  		bTvPllGate=0x01;
             bTvCurrPolarity=IF_SWITCH_SEACAM_L;    //Positive 
             bTVSoundCarrier=SV_DK; //SEACAM L +DK
  		}
	   else
            bTvCurrPolarity=IF_SWITCH_SEACAM_DK; //Negative 
  }
else if(bTvCurrSystem == SV_SECAM_L2)
  {
  	if(bTvCurrSound == SV_MN)
  		{
  		bTvPllGate=0x01;
              bTvCurrPolarity=IF_SWITCH_SEACAM_L1;     //Positive 
               bTVSoundCarrier=SV_DK; //SEACAM L' +DK
  		}
		else
       bTvCurrPolarity=IF_SWITCH_SEACAM_L1_DK; //Negative 
  }
else
	  bTvCurrPolarity=IF_SWITCH_PAL;  //Negative 

if(bTvCurrSystem == SV_SECAM_L2)
  bTvCurrIF=0x04;   //33.9M
else
   bTvCurrIF=0x02;  //38.9M



   bData[0] = IF_RESERVED;
   bData[1] = bTvCurrPolarity;
   bData[2] = IF_ADJUST_PAL;
   bData[3] = (bTvPllGate<<6)| (bTvCurrIF <<2 ) | bTVSoundCarrier;


#else	
	

     if(bTempSystem ==SV_PAL)			
	 {
	 bData[1] =IF_SWITCH_PAL;
        bData[2] = IF_ADJUST_PAL;
		
     if (bTvCurrSound==SV_BG) //TV_SOUND_BG
       { 
         bData[3] = IF_DATA_PAL_BG; // BG
         sTvCurrChannel.bSystem &= 0xc7; 
	sTvCurrChannel.bSystem |= 0x08; //17Jul08  seacam_l + sound_BG
     	}
    else if (bTvCurrSound==SV_I) //TV_SOUND_I
    	{
        bData[3] = IF_DATA_PAL_I;  // I
    	}
    else if (bTvCurrSound==SV_DK)   //TV_SOUND_DK
    	{
        bData[3] = IF_DATA_PAL_DK;  // DK
      	}
   else if (bTvCurrSound==SV_MN)  //TV_SOUND_MN_L
    	{
        bData[3] = IF_DATA_PAL_MN;  // MN
      	}       
   }
    else   if(bTempSystem ==SV_NTSC)			
              {
             bData[1] =IF_SWITCH_NTSC; 
	      bData[2] = IF_ADJUST_NTSC;
    	#if 0
    	 if (bTvCurrSound==TV_SOUND_BG)
           { bData[3] = IF_DATA_PAL_BG; // BG 12Sep08
         	}
        else if (bTvCurrSound==TV_SOUND_I)
        	{
            bData[3] = IF_DATA_PAL_I;  // I 12Sep08
        	}
        else if (bTvCurrSound==TV_SOUND_DK)
        	{
            bData[3] = IF_DATA_PAL_DK;  // DK 12Sep08
          	}
       else if (bTvCurrSound==TV_SOUND_MN_L)
        	{
            bData[3] = IF_DATA_NTSC_MN;  // MN  12Sep08
          	}
	   else
      #endif

	bData[3] = IF_DATA_NTSC_MN;
	bTvCurrSound=SV_MN;//TV_SOUND_MN_L;
	sTvCurrChannel.bSystem &= 0xc7;   //17Jul08  ntsc + sound_mn	
    }	
    else if(bTempSystem ==SV_PAL_M)  //12Sep08 
 	{
        bData[1] =IF_SWITCH_PAL_M;
	  bData[2] = IF_ADJUST_PAL;	
	  bData[3] = IF_DATA_PAL_MN; 	 
	bTvCurrSound=SV_MN; //TV_SOUND_MN_L;
	sTvCurrChannel.bSystem &= 0xc7;   //17Jul08  ntsc + sound_mn	 	
 	}
else   if(bTempSystem ==SV_PAL_N)  //12Sep08 
  {
           bData[1] =IF_SWITCH_PAL_N;
	    bData[2] = IF_ADJUST_PAL;
	     bData[3] = IF_DATA_PAL_MN; 	
	bTvCurrSound=SV_MN;//TV_SOUND_MN_L;
	sTvCurrChannel.bSystem &= 0xc7;   //17Jul08  ntsc + sound_mn		 
   }	
    else   if(bTempSystem ==SV_SECAM_L)
             {
               bData[2] = IF_ADJUST_SEACAM;
     		   if(bTvCurrSound ==SV_MN)  //TV_SOUND_MN_L
     		   	{
     		   	bData[1] = IF_SWITCH_SEACAM_L;
     			  bData[3] = IF_DATA_SEACAM_L; 			
     			sTvCurrChannel.bSystem &= 0xc7; 		
                           
     		   	}               
        	    else if (bTvCurrSound==SV_BG)  //TV_SOUND_BG
                   {
                   bData[1] =IF_SWITCH_SEACAM_DK;
                    bData[3] = IF_DATA_SEACAM_L_BG; // BG 12Sep08
             	    }
                 else if (bTvCurrSound==SV_I)  // == seacam L TV_SOUND_I
               	{      
               	bData[1] =IF_SWITCH_SEACAM_DK;
                       bData[3] = IF_DATA_SEACAM_L_I;  // I 12Sep08
               	}
                 else if (bTvCurrSound==SV_DK) //TV_SOUND_DK
              	{
              	bData[1] =IF_SWITCH_SEACAM_DK;
                        bData[3] = IF_DATA_SEACAM_L_DK;  // DK 12Sep08
                	}           	
         	      }
    else   if(bTempSystem ==SV_SECAM_L2)
    	       {
    	              bData[2] = IF_ADJUST_PAL;
		   if(bTvCurrSound ==SV_MN)
		   	{
		   	   bData[1] = IF_SWITCH_SEACAM_L1;                 
			  bData[3] = IF_DATA_SEACAM_L1; 	                      
			sTvCurrChannel.bSystem &= 0xc7; 	                     
		   	}
		   else  if (bTvCurrSound==SV_BG) //TV_SOUND_BG
                 { 
                  bData[1] =IF_SWITCH_SEACAM_L1_DK;
                   bData[3] = IF_DATA_SEACAM_L1_BG; // BG 12Sep08
               	}
             else if (bTvCurrSound==SV_I)  // == seacam L'   TV_SOUND_I
           	{   
           	 bData[1] =IF_SWITCH_SEACAM_L1_DK;
               bData[3] = IF_DATA_SEACAM_L1_I;  // I 12Sep08
           	}
        else if (bTvCurrSound==SV_DK)   //TV_SOUND_DK
          	{
          	  bData[1] =IF_SWITCH_SEACAM_L1_DK;
                bData[3] = IF_DATA_SEACAM_L1_DK;  // DK 12Sep08
            	}     	
    	     }
#endif
#endif

   #ifdef MARTIN_ADD_SEARCH_TUNER_MUTE
   if(fgTVSearhMute)   //05Aug08 
   bData[1] |= 0x20;   //05Aug08 //mute enable
   else
    bData[1] &= 0xdf;   //05Aug08  mute disable
   #endif	
   
    vTV_IF_Write(bData);

    return 0;	
}

#ifdef MARTIN_TUNER_XF6A_PAL_M_NOT_SYNC
///  first power on picture not sync tnen PAL-M for system
void vPalMBugAdj(void)   //martin 17Sep08 test 
{
   BYTE bTempSystem;
   BYTE bData[4]; 

 bTempSystem=(sTvCurrChannel.bSystem & 0x07);
  if((bTempSystem == SV_PAL_M)||((bTempSystem == SV_PAL)&&(bTvCurrSound==SV_MN)))  //17Sep08  test
     {        		
        //	if(fgTunerType == 0x01)  //DPT2290M
             if((bPalMAdj)&&(mReadDvdDat() ==0 )&&(mReadDvdCs()))
            	 {
            	    bPalMAdj=0;	
       	    /* set frequency
                    bData[0] = (_sTunerPLL.wDB >>8) & 0xff;
                    bData[1] = _sTunerPLL.wDB;             
                    bData[2] = _sTunerPLL.bCB;
                    bData[3] = _sTunerPLL.bBB;       	
                    vTV_PLL_Write(bData);	
                  */
       
            	      bData[0] = IF_RESERVED;	
                    bData[1] =IF_SWITCH_PAL;
            	      bData[2] = IF_ADJUST_PAL;	               	
            	      bData[3] = IF_DATA_PAL_BG;   // set sound system:BG,vertical sync change to 50Hz
    		    #ifdef MARTIN_ADD_SEARCH_TUNER_MUTE
                   if(fgTVSearhMute)   //05Aug08 
                   bData[1] |= 0x20;   //05Aug08 
                   else
                    bData[1] &= 0xdf;   //05Aug08 
                   #endif	               		
                  vTV_IF_Write(bData);
            
                  Delay1ms(200);
                  bData[0] = IF_RESERVED;	
                  bData[1] =IF_SWITCH_PAL;
                  bData[2] = IF_ADJUST_PAL;	
                  bData[3] = IF_DATA_PAL_MN; 	
                #ifdef MARTIN_ADD_SEARCH_TUNER_MUTE
                 if(fgTVSearhMute)   //05Aug08 
                 bData[1] |= 0x20;   //05Aug08 
                 else
                  bData[1] &= 0xdf;   //05Aug08 
                #endif	
                 vTV_IF_Write(bData);
               
               bTvCurrSound=SV_MN;//TV_SOUND_MN_L;
            	sTvCurrChannel.bSystem &= 0xc7;   //17Jul08  ntsc + sound_mn	
            
            }
      }
  else  //NTSC,SEACAM L.PAL I/BG/DK
     {
      bPalMAdj=1;
      }

  if((mReadDvdDat())&&(mReadDvdCs()))  //no singal set 1
    {
             bPalMAdj=1;
     }
}
#endif



#ifdef MARTIN_TEST_CHANNNEL_NUMBER_SHOW
void vFreAFCAdjLoop(void)   //martin 04Aug08 test
{
  BYTE bAfcVaule; //02Jul08

    switch(fgAFCADJState)
    	{
    	 case FREQUENCY_ADJ_IDLE:
                 fgAFCTVSyncCnt=0;
                bFreSetpCnt=0;
                fgAFCADJCnt=0;
              break;	
	
	case FREQUENCY_VIDEO_SYNC:
		         
		   if(!mReadDvdCs())
			{
			// if(fgAFCTVSyncCnt < 5)
			//     fgAFCTVSyncCnt++;
			   fgAFCADJState = FREQUENCY_VIDEO_SYNC;
                       break;
			}
                if(((--fgAFCTVSyncCnt)>0)&&(mReadDvdDat() !=0 ))
		      {		
		         Delay1ms(5);
		         fgAFCADJState = FREQUENCY_VIDEO_SYNC;
			  break;
		      }		  
		     else
		     	{
		     	     if(mReadDvdDat() ==0 )
		     	     	{
       			   //  fgReadAFCValue=bTV_IF_Read();	
					 fgAFCVa=bTV_IF_Read();	
       			     fgAFCADJState=FREQUENCY_READ_AFC;
			           break;
			           
		     		}
				else
			       {
			         if((bFreSetpCnt>=0x11)&&(bFreSetpCnt<=0x13))
			       	{
			       	  _sTunerPLL.wDB-= (bFreSetpCnt & 0x0f);
					  bFreSetpCnt=0x00;
					   vTvSearchSetFre(); 
			       	}
				   else if((bFreSetpCnt>=0x01)&&(bFreSetpCnt<=0x03))
				   	{
			       	  _sTunerPLL.wDB+= (bFreSetpCnt & 0x0f);
					  bFreSetpCnt=0x00;
					   vTvSearchSetFre(); 
			       	}
                              fgAFCADJState = FREQUENCY_ADJ_IDLE;
			          break;
			  	}
		     	}
              break;	
			  
	case FREQUENCY_READ_AFC:
		    if(!mReadDvdCs())
			{
			   fgAFCADJState = FREQUENCY_READ_AFC;
                       break;
			}
		     //29Aug08    Delay1ms(10);
		     	bAfcVaule=((fgAFCVa >>1) & 0x0f);	
		  if((bAfcVaule >=0x00)&&(bAfcVaule <=0x02)) 
		  	{
		  	    WriteTVChannel(bTvCurrChIndex,sTvCurrChannel);	  
                        fgAFCADJState = FREQUENCY_ADJ_IDLE;
			   break;
		  	}
		  else
		  	{  
		  	     if(--fgAFCADJCnt>0)
         		  	  {
         		  	    if((bAfcVaule >= 0x03)&&(bAfcVaule <=0x07))
                                {
                                  if(bAfcVaule ==0x07)
                    	              {
                                 	 bFreSetpCnt=0x13;
                                  	}
                                  else if((bAfcVaule >=0x06)&&(bAfcVaule <0x05))
                                  	  {
                                  	   bFreSetpCnt=0x11;
                                      }
                                  else
                            	  	   bFreSetpCnt=0x11;     
                                	}
               		  else if((bAfcVaule >= 0x08)&&(bAfcVaule <=0x0f))
                                  {
                                    if(bAfcVaule ==0x08)
                     	                { 
                                  	           bFreSetpCnt=0x03;
                                           }
               		        else if((bAfcVaule >= 0x09)&&(bAfcVaule <=0x0a))
                                   	{
                                   	 	bFreSetpCnt=0x03;
                                   	}
                                    else if((bAfcVaule >= 0x0b)&&(bAfcVaule <=0x0c))
                                   	{
                                   		bFreSetpCnt=0x02;
                                   	}			   
                                    else
                            	  	   bFreSetpCnt=0x01; 
               			}
               		  	   fgAFCADJState = FREQUENCY_SET_TV;
					break;	   
         		  	   }
			     else
				{
                               fgAFCADJState = FREQUENCY_ADJ_IDLE;
				}
				  break;
			  		  
		  	}
           			  
	case FREQUENCY_SET_TV:
		  if((bFreSetpCnt>=0x11)&&(bFreSetpCnt<=0x13))
		     {
		        _sTunerPLL.wDB+= (bFreSetpCnt & 0x0f);
		      }
		 else if((bFreSetpCnt>=0x01)&&(bFreSetpCnt<=0x03))
	       	{
	               _sTunerPLL.wDB-= (bFreSetpCnt & 0x0f);
			}
			 vTvSearchSetFre(); 				  
		   sTvCurrChannel.wFreq=_sTunerPLL.wDB;   
		  fgAFCTVSyncCnt=3;
		   fgAFCADJState = FREQUENCY_VIDEO_SYNC;
              break;				  
  
          default:
		  break;
    	}

⌨️ 快捷键说明

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