tv.c

来自「myson的MTV332的DEMO程序 主要功能有菜单的设计和无线遥控以及视频」· C语言 代码 · 共 162 行

C
162
字号

#include "global.h"


#ifdef  _TV_
BYTE TVChannel,BackTVCh;
BYTE TVSearchCH[16];
BYTE TVMTS;

WORD code NTSC_CHANNEL[] =
{
    0x0000, 0x06F0, 0x0650, 0x06B0, 0x0710, 0x07B0, 0x0810, 0x0DD0,
    0x0E30, 0x0E90, 0x0EF0, 0x0F50, 0x0FB0, 0x1010, 0x0A70, 0x0AD0,
    0x0B30, 0x0B90, 0x0BF0, 0x0C50, 0x0CB0, 0x0D10, 0x0D70, 0x1070,
    0x10D0, 0x1130, 0x1190, 0x11F0, 0x1250, 0x12B0, 0x1310, 0x1370,
    0x13D0, 0x1430, 0x1490, 0x14F0, 0x1550, 0x15B0, 0x1610, 0x1670,
    0x16D0, 0x1730, 0x1790, 0x17F0, 0x1850, 0x18B0, 0x1910, 0x1970,
    0x19D0, 0x1A30, 0x1A90, 0x1AF0, 0x1B50, 0x1BB0, 0x1C10, 0x1C70,
    0x1CD0, 0x1D30, 0x1D90, 0x1DF0, 0x1E50, 0x1EB0, 0x1F10, 0x1F70,
    0x1FD0, 0x2030, 0x2090, 0x20F0, 0x2150, 0x21B0, 0x2210, 0x2270,
    0x22D0, 0x2330, 0x2390, 0x23F0, 0x2450, 0x24B0, 0x2510, 0x2570,
    0x25D0, 0x2630, 0x2690, 0x26F0, 0x2750, 0x27B0, 0x2810, 0x2870,
    0x28D0, 0x2930, 0x2990, 0x29F0, 0x2A50, 0x2AB0, 0x2B10, 0x0890,
    0x08F0, 0x0950, 0x09B0, 0x0A10, 0x2B70, 0x2BD0, 0x2C30, 0x2C90,
    0x2CF0, 0x2D50, 0x2DB0, 0x2E10, 0x2E70, 0x2ED0, 0x2F30, 0x2F90,
    0x2FF0, 0x3050, 0x30B0, 0x3110, 0x3170, 0x31D0, 0x3230, 0x3290,
    0x32F0, 0x3350, 0x33B0, 0x3410, 0x3470, 0x34D0
};
#endif

#ifdef  _TV_

void Set_TVChannel()
{
	union DW_TEMP dw_temp;
	//BYTE temp[4];
	
	DoWait(50);
	dw_temp.valW[0] = NTSC_CHANNEL[TVChannel];
	dw_temp.valB[2] = 0xCE;
	
	if(dw_temp.valW[0] < 0x0D00)
		dw_temp.valB[3] = 0x01;
	else if(dw_temp.valW[0] < 0x1E80)
		dw_temp.valB[3] = 0x02;
	else
		dw_temp.valB[3] = 0x04;
	
	WriteData(I2C_TVTUNER,dw_temp.valB[0] ,&dw_temp.valB[1] ,3);
	
}

void TV_Channel_Up()
{
	BackTVCh = TVChannel;

	do{
	   	TVChannel ++;
   		if(TVChannel > TV_ChannelTotal) 
			TVChannel= 0;
	}while(!(TVSearchCH[TVChannel/8] & (0x01 << (TVChannel%8))));
   	Set_TVChannel();
	Show_TVChannel();
	SaveProgressData(TVCH);

	//sAudio.Mute = 0;
}

void TV_Channel_Down()
{
	BackTVCh = TVChannel;

	do{
      		TVChannel --;
   		if(TVChannel > TV_ChannelTotal) 
   			TVChannel=TV_ChannelTotal;
	}while(!(TVSearchCH[TVChannel/8] & (0x01 << (TVChannel%8))));
	
   	Set_TVChannel();
	Show_TVChannel();
	SaveProgressData(TVCH);

	//sAudio.Mute = 0;
}

void TV_Channel_Jump()
{
	BYTE temp;
	
	temp = TVChannel;
	TVChannel = BackTVCh;
	BackTVCh = temp;
	Set_TVChannel();
	//Show_TVChannel();
	//Save_Var(SaveTVChannel);
	
	//sAudio.Mute = 0;
}

void TV_Channel_Search()
{
	BYTE i,temp_TVChannel,Temp,tmp;
	//BYTE AudioTemp[4];
	
	//bMuteFlag = 1;
	DoWait(50);
	temp_TVChannel = TVChannel;

	if(TV_ChannelTotal==125)
		 Temp=0x60;  // NTSC System and Signal detected
	 else
	 	 Temp=0x20;  // PAL Syatem and Signal Detected
	
	for(i = 0; i < 16; i++)
		TVSearchCH[i] = 0;
	
	for(i = 1; i <= TV_ChannelTotal; i++)
	{
		TVChannel = i;
		Set_TVChannel();
		Show_TVChannel();
		DoWait(200);
		CS7111_Read(0x00,&tmp,1);		
		tmp&=0x60;
		if(tmp==Temp)
			TVSearchCH[i/8] = (TVSearchCH[i/8]>>1) | 0x80;
		else
			TVSearchCH[i/8] = (TVSearchCH[i/8]>>1);
		
	}

	//bMuteFlag = 0;
	SaveProgressData(SaveTVSearch);
	TVChannel = temp_TVChannel;
	Set_TVChannel();
	
	
}

void TV_MTS()
{
   #ifdef  _MSP3450_

	if(TVMTS == 0)
		Set_Vol_Source(STEREO_AB);
	else if(TVMTS == 1)
		Set_Vol_Source(STEREO_A);
	else
		Set_Vol_Source(STEREO_B);
   #endif
}


void Show_TVChannel()
{
	gotoxy(5,0);
	PrintValue(TVChannel,Red);
	EnableOSD();
}
#endif

⌨️ 快捷键说明

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