tuner.c

来自「韩国光新一体化车载收音高频头(KST-1111)的调试程序」· C语言 代码 · 共 1,059 行 · 第 1/2 页

C
1,059
字号
			Eeprom_read_freq();
			Direct_select();
			Tuner_display_freq();
			Tuner_DisplayChannel(ChannelNum);

			uop = MS_UOP_NOP;
			break;

		case MS_UOP_10P:
			TenKeyCnt ++;
			Osd_display_symbol(TUNER_CH_ROW, TUNER_CH_COL, TenKeyCnt + '0',
				OSD_DOUBLE_HEIGHT, NO_SHADE, OSD_GREEN, BACKGROUND_ON, DISPLAY_STRING);

			Osd_display_symbol(TUNER_CH_ROW, TUNER_CH_COL + 1, '-',
				OSD_DOUBLE_HEIGHT, NO_SHADE, OSD_GREEN, BACKGROUND_ON, DISPLAY_STRING);

			break;

		case MS_UOP_SEARCH:
			MemoryCnt = 0;
			bPrevNextSearchFlag = 0;
			//P_AMP_STANDBY = 1;	
			if(!b_Mute)
			Audio_mute(ALL_CHANNEL, AUDIO_MUTE);
			#ifdef ENGLISH_SYS

			#else 
			Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
				NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);			
			#endif
		        FMfreq=FMFREQ_MIN + 5;
            		AMfreq=AMFREQ_MIN + 9;
			ChannelNum = 1;
			bSearchDir = 1;
			bAutoSearchOK = 0;
				Osd_display_string(
					OSD_ROW_9, OSD_COLUMN_17, TV_SEARCH,
					OSD_STANDARD, OSD_BLUE, OSD_RED, BACKGROUND_OFF, DISPLAY_STRING
					);
			
			AutoSearchStep = 0;
			Tuner_DisplayChannel(ChannelNum);

			uop=MS_UOP_NOP;
			break;

		case MS_UOP_NEXT:
			P_AMP_STANDBY = 1;			
			ChannelNum++;
			if(ChannelNum > MAX_CHANNEL_NUM)
				ChannelNum = 1;
			Eeprom_write_ch_band();
			Eeprom_read_freq();
			Direct_select();
			Tuner_display_freq();
			Tuner_DisplayChannel(ChannelNum);
			P_AMP_STANDBY = 0;
			uop=MS_UOP_NOP;
			break;

		case MS_UOP_PREVIOUS:
			P_AMP_STANDBY = 1;			
			ChannelNum--;
			if(ChannelNum < 1)
				ChannelNum = MAX_CHANNEL_NUM;
			Eeprom_write_ch_band();
			Eeprom_read_freq();
			Direct_select();
			Tuner_display_freq();
			Tuner_DisplayChannel(ChannelNum);
			P_AMP_STANDBY = 0;
			uop=MS_UOP_NOP;
			break;

		case MS_UOP_FORWARD:
			Tuner_handsearch(1);
			Tuner_display_freq();

			uop=MS_UOP_NOP;
			break;

		case MS_UOP_BACKWARD:
			Tuner_handsearch(0);
			Tuner_display_freq();

			uop=MS_UOP_NOP;
			break;

		case MS_UOP_SEARCH_PREV:
			if(!b_Mute)
			Audio_mute(ALL_CHANNEL, AUDIO_MUTE);
			#ifdef ENGLISH_SYS

			#else 
			Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
				NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);
			#endif
			bSearchDir = 0;
			bAutoSearchOK = 0;
			Osd_display_string(
					OSD_ROW_9, OSD_COLUMN_17, TV_SEARCH,
					OSD_STANDARD, OSD_BLUE, OSD_RED, BACKGROUND_OFF, DISPLAY_STRING
					);
			
			AutoSearchStep = 0;
			bPrevNextSearchFlag = 1;

			uop=MS_UOP_NOP;
			break;

		case MS_UOP_SEARCH_NEXT:
			if(!b_Mute)
			Audio_mute(ALL_CHANNEL, AUDIO_MUTE);
			#ifdef ENGLISH_SYS

			#else 
			Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
				NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);
			#endif
			bSearchDir = 1;
			bAutoSearchOK = 0;
				Osd_display_string(
					OSD_ROW_9, OSD_COLUMN_17, TV_SEARCH,
					OSD_STANDARD, OSD_BLUE, OSD_RED, BACKGROUND_OFF, DISPLAY_STRING
					);
			
			AutoSearchStep = 0;
			bPrevNextSearchFlag = 1;

			uop=MS_UOP_NOP;
			break;


		case MS_UOP_STORE:
          		Eeprom_write_freq();
			Osd_display_string(OSD_ROW_9, OSD_COLUMN_18,
				MEMORY_OK, OSD_STANDARD, NO_SHADE, OSD_RED, BACKGROUND_OFF,
						DISPLAY_STRING);	
			MemoryCnt = 15;
			break;

		case MS_UOP_LOC_DX:
			Process_loc_dx();
			break;

		case MS_UOP_SEL_FREQ:

			break;

		case MS_UOP_ST_MO:
			Process_mono_stereo();
			break;
		default:
			break;
	}
	return uop;
}
 void Tuner_init()
 {
	TvOsOff();
 
 	if(dvd_state_flag)
		{
		McuSendEss(g_ir_system_code, 0x00ff);
		dvd_state_flag = 0;
		}
 	P_ANT_MOTOR = 1;
	if(Cdc_state_flag)
		{ 	
		ET0=0;	
		EX0 = 0;	
		CDCoffPower();
		delay_ms(300);
		Cdc_state_flag = 0;			
		}
  	OSD_send_byte(OSD_COMMAND_9 + GRM);       //GRM = 1
	OSD_send_byte(0); 
	cdc_indicator_clear_cnt = 0;	
 	master_volume_cnt = 0;
	open_disc_cnt = 0; 	
 	main_menu_pointer = TUNER_MENU; 
 	highlight_item = 0;	 	
	Switch_to_intersyn();
	AV_ID = FM_ID;
	 OSD_clear_all();	
	 bLocDx = DX;
 	Init_lc72131();
	RADIO_SD_HIGH = 1;
	I2C_read_sub(EEPROM_ADDR, CURRENT_CHANNEL, I2C_buffer, 1);
	ChannelNum = I2C_buffer[0];
	Eeprom_read_freq();
	Direct_select();
	Osd_tuner_sub_screen();
	Osd_display_string(TUNER_ROW, TUNER_COL + 1, RADIO, OSD_DOUBLE_HEIGHT,
   			NO_SHADE, OSD_WHITE,BACKGROUND_ON, DISPLAY_STRING);
 	 Osd_display_string(TUNER_ROW + 1, TUNER_COL + 7, CHANNEL, OSD_STANDARD,
   			NO_SHADE, OSD_MAGENTA,BACKGROUND_OFF, DISPLAY_STRING);
 	 Osd_display_string(TUNER_ROW + 1, TUNER_COL + 14, FREQ, OSD_STANDARD,
   			NO_SHADE, OSD_MAGENTA,BACKGROUND_OFF, DISPLAY_STRING);
 	//Display_background_picture();
	Tuner_menu_set();	
	Tuner_DisplayChannel(ChannelNum);
	Tuner_display_freq();
	Display_vertical_bar();

	AV_Switch(FM_ID);	
	P_TV_MUTE = 0;
	Audio_switch(AUDIO_FM);
	I2C_buffer[0] = AV_ID;
	I2C_write_sub(EEPROM_ADDR, AV_ID_ADDR, I2C_buffer, 1);	
	//Audio_mute(ALL_CHANNEL, AUDIO_UNMUTE);	
	if(b_Mute)
		Osd_display_string(OSD_ROW_9, OSD_COLUMN_18,
			MUTE1, OSD_STANDARD, NO_SHADE, OSD_RED, BACKGROUND_OFF,
				DISPLAY_STRING);	
	P_AMP_STANDBY = 0;		
	P_DVD_POWER=0;	

	TunerTypeFlag=TUNER_TYPE_SELECT;
 }
#endif


//Display channel
void Tuner_DisplayChannel(Uint8 channel)
{
	Uint16 idata temp[3];

	if(channel > 9)
		temp[0] = channel / 10 + '0';
	else
		temp[0] = '0';
	temp[1] = channel % 10 + '0';
	temp[2] = 0xff;
	Osd_display_string(TUNER_CH_ROW, TUNER_CH_COL, temp, OSD_DOUBLE_HEIGHT,
		NO_SHADE, OSD_GREEN, BACKGROUND_ON, DISPLAY_STRING);
}
#if 0
void Display_background_picture()
{
	Osd_display_string(PICTURE_ROW, PICTURE_COL, TUNER_PICTURE_1, OSD_STANDARD,
		NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
	Osd_display_string(PICTURE_ROW + 1, PICTURE_COL, TUNER_PICTURE_2, OSD_STANDARD,
		NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
	Osd_display_string(PICTURE_ROW + 2, PICTURE_COL, TUNER_PICTURE_3, OSD_STANDARD,
		NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
	Osd_display_string(PICTURE_ROW + 3, PICTURE_COL, TUNER_PICTURE_4, OSD_STANDARD,
		NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
	Osd_display_string(PICTURE_ROW + 4, PICTURE_COL, TUNER_PICTURE_5, OSD_STANDARD,
		NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
	Osd_display_string(PICTURE_ROW + 5, PICTURE_COL, TUNER_PICTURE_6, OSD_STANDARD,
		NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
	Osd_display_string(PICTURE_ROW + 6, PICTURE_COL, TUNER_PICTURE_7, OSD_STANDARD,
		NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
}
#endif
void Tuner_display_picture()
{
#if 0
	switch(picture_state)
		{
		case 6:
			Osd_display_string(PICTURE_ROW, PICTURE_COL, TUNER_PICTURE_1, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 1, PICTURE_COL, TUNER_PICTURE_2, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 2, PICTURE_COL, TUNER_PICTURE_3, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 3, PICTURE_COL, TUNER_PICTURE_4, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 4, PICTURE_COL, TUNER_PICTURE_5, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);			
			break;
		case 3:
			Osd_display_string(PICTURE_ROW, PICTURE_COL, TUNER_PICTURE_21, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 1, PICTURE_COL, TUNER_PICTURE_22, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 2, PICTURE_COL, TUNER_PICTURE_23, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 3, PICTURE_COL, TUNER_PICTURE_24, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 4, PICTURE_COL, TUNER_PICTURE_25, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			break;	
		case 0:
			Osd_display_string(PICTURE_ROW, PICTURE_COL, TUNER_PICTURE_31, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 1, PICTURE_COL, TUNER_PICTURE_32, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 2, PICTURE_COL, TUNER_PICTURE_33, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 3, PICTURE_COL, TUNER_PICTURE_34, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			Osd_display_string(PICTURE_ROW + 4, PICTURE_COL, TUNER_PICTURE_35, OSD_STANDARD,
				NO_SHADE, OSD_BLUE, BACKGROUND_OFF, DISPLAY_STRING);
			break;			
		}
	picture_state++;
	if(picture_state > 8)
		picture_state = 0;
	#endif
}

void AM_FM_indicator_set()
{
	if(CurrentBand == FM_BAND)
		{
		if(bMonoStereo)
			{
			Osd_display_string(TUNER_ROW + 5, TUNER_COL + 12, STEREO_IND, OSD_STANDARD,
   				SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
			Osd_display_string(TUNER_ROW + 2, TUNER_COL + 12, MONO_IND, OSD_STANDARD,
   				SHADE, OSD_BLACK,CONCAVE, DISPLAY_STRING);
			}
		else
			{
			Osd_display_string(TUNER_ROW + 5, TUNER_COL + 12, STEREO_IND, OSD_STANDARD,
   				SHADE, OSD_BLACK,CONCAVE, DISPLAY_STRING);
			Osd_display_string(TUNER_ROW + 2, TUNER_COL + 12, MONO_IND, OSD_STANDARD,
   				SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
			}

		Osd_display_string(TUNER_ROW + 11, TUNER_COL + 7, FM, OSD_STANDARD,
	   			SHADE, OSD_BLACK,CONCAVE, DISPLAY_STRING);
		Osd_display_string(TUNER_ROW + 11, TUNER_COL + 3, AM, OSD_STANDARD,
   				SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
		}
	else
		{
		Osd_display_string(TUNER_ROW + 5, TUNER_COL + 12, STEREO_IND, OSD_STANDARD,
   				SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
		Osd_display_string(TUNER_ROW + 2, TUNER_COL + 12, MONO_IND, OSD_STANDARD,
   				SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
		Osd_display_string(TUNER_ROW + 11, TUNER_COL + 7, FM, OSD_STANDARD,
	   			SHADE, OSD_BLACK, CONVEX, DISPLAY_STRING);
		Osd_display_string(TUNER_ROW + 11, TUNER_COL + 3, AM, OSD_STANDARD,
   				SHADE, OSD_BLACK, CONCAVE, DISPLAY_STRING);
		}
}

void LOC_DX_set()
{
	if(bLocDx)
		{
 	 	Osd_display_string(TUNER_ROW + 11, TUNER_COL + 15, DX_IND, OSD_STANDARD,
   			SHADE, OSD_BLACK,CONCAVE, DISPLAY_STRING);
 		Osd_display_string(TUNER_ROW + 11, TUNER_COL + 11, LOC_IND, OSD_STANDARD,
   			SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
		}
	else
		{
 	 	Osd_display_string(TUNER_ROW + 11, TUNER_COL + 15, DX_IND, OSD_STANDARD,
   			SHADE, OSD_BLACK, CONVEX, DISPLAY_STRING);
 		Osd_display_string(TUNER_ROW + 11, TUNER_COL + 11, LOC_IND, OSD_STANDARD,
   			SHADE, OSD_BLACK, CONCAVE, DISPLAY_STRING);
		}
}

void mute_indicator_set()
{
	if(b_Mute)
	 Osd_display_string(TUNER_ROW + 8, TUNER_COL + 12, MUTE, OSD_STANDARD,
   			SHADE, OSD_BLACK,CONCAVE, DISPLAY_STRING);
	else
	 Osd_display_string(TUNER_ROW + 8, TUNER_COL + 12, MUTE, OSD_STANDARD,
   			SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);		
}

void Tuner_menu_set(void)
{
	//AM_FM_indicator_set();
	//LOC_DX_set();
	//mute_indicator_set();
	
 	// Osd_display_string(TUNER_ROW + 11, TUNER_COL + 19, MAIN_TITLE, OSD_STANDARD,
   	//		SHADE, OSD_WHITE,CONVEX, DISPLAY_STRING);

	Tuner_icon_set();
}

void Switch_to_mono()
{
	if(CurrentBand == AM_BAND)
		return;
	RadioIn2Data &= ~BO3_ST;
	bMonoStereo = MONO;
	Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
	AM_FM_indicator_set();
	#ifdef ENGLISH_SYS

	#else 
	Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
			NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);	
	#endif
	}

void Switch_to_stereo()
{
	if(CurrentBand == AM_BAND)
		return;
	RadioIn2Data |= BO3_ST;
	bMonoStereo = STEREO;
	Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
	AM_FM_indicator_set();	
}

void Switch_to_AM()
{
	P_AMP_STANDBY = 1;
	CurrentBand = AM_BAND;
	Init_lc72131();
	Tuner_DisplayChannel(ChannelNum);
	Tuner_display_freq();
	AM_FM_indicator_set();
	#ifdef ENGLISH_SYS

	#else 
	Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
			NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);			
	#endif
	 bLocDx = DX;	
	LOC_DX_set();
	P_AMP_STANDBY = 0;	
}

void Switch_to_FM()
{
	P_AMP_STANDBY = 1;
	CurrentBand = FM_BAND;
	Init_lc72131();
	Tuner_DisplayChannel(ChannelNum);
	Tuner_display_freq();
	AM_FM_indicator_set();
	 bLocDx = DX;	
	LOC_DX_set();	
	P_AMP_STANDBY = 0;
}

void Switch_to_DX()
{
	RadioIn2Data |= IO1_DX;
	bLocDx = DX;
	Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
	LOC_DX_set();	
}

void Switch_to_LOC()
{
	RadioIn2Data &= ~IO1_DX;
	bLocDx = LOC;
	Send_data_to_ccb(LC72131_IN2_ADDR, RadioIn2Data, 24);
	LOC_DX_set();
}

void Process_search_key()
{
	Tuner_operation(MS_UOP_SEARCH);
}

void Process_skipf_key()
{
	Tuner_operation(MS_UOP_NEXT);
	Tuner_icon_set();
}

void Process_skipb_key()
{
	Tuner_operation(MS_UOP_PREVIOUS);
}

void Process_fastf_key()
{
	if(tuner_repeat_key_flag)
		{
		Tuner_operation(MS_UOP_SEARCH_NEXT);	
		tuner_repeat_key_flag = 0;
		}
	else
		{
		Tuner_operation(MS_UOP_FORWARD);
		tuner_repeat_key_flag = 1;
		touch_key_cnt = 5;
		}
}

void Process_fastb_key()
{
	if(tuner_repeat_key_flag)
		{
		Tuner_operation(MS_UOP_SEARCH_PREV);	
		tuner_repeat_key_flag = 0;
		}
	else
		{
		Tuner_operation(MS_UOP_BACKWARD);
		tuner_repeat_key_flag = 1;
		touch_key_cnt = 5;
		}
}

void Tuner_Minus(){
	if(TunerTypeFlag==TUNER_TYPE_SELECT){
		Process_skipb_key();
		}
	else if(TunerTypeFlag==TUNER_TYPE_STEP){
		Process_fastb_key();
		}
}

void Tuner_Plus(){
	if(TunerTypeFlag==TUNER_TYPE_SELECT){
		Process_skipf_key();
		}
	else if(TunerTypeFlag==TUNER_TYPE_STEP){
		Process_fastf_key();
		}

	
}

void Process_store_key()
{
	Tuner_operation(MS_UOP_STORE);
}



⌨️ 快捷键说明

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