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

📄 tuner.c

📁 7寸TFT电视的源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    if(bIsFm) {
		FmFreq = uitemp;
		if( FmFreq  > FreqArray[TunerArea].FmMax || FmFreq  < FreqArray[TunerArea].FmMin){ 
			FmFreq = FreqArray[TunerArea].FmMin;
			bPreset = 0;
		}
    }
    else {
		AmFreq = uitemp;
		if( AmFreq  > FreqArray[TunerArea].AmMax || AmFreq  < FreqArray[TunerArea].AmMin){ 
			AmFreq = FreqArray[TunerArea].AmMin;
			bPreset = 0;
		}
    }

    GotoFreq();
    DisplayTunerCurrentFreq();
}

#if 0
void PresetUp()
{
	if(bIsFm){
		if(!bPreset) {
			bPreset = 1;
			FmPresetNo=1;
			TunerBand = 1;
		}
		FmPresetNo++;
		if((FmPresetNo %6 ) ==1  ) TunerBand++;	
		if(FmPresetNo > MAX_FMSTATION_NO){
			FmPresetNo = 1;
			TunerBand = 1;
		}
		GotoPreset(FmPresetNo);
	}
	else{
		if(!bPreset) {
			bPreset = 1;
			AmPresetNo=1;
		}

		TunerBand = 4;
		AmPresetNo++;
		if(AmPresetNo > MAX_AMSTATION_NO) AmPresetNo = 1;
		GotoPreset(AmPresetNo);	
	}
}

void PresetDown()
{
	if(bIsFm){
		if(FmPresetNo == 1) {
			 FmPresetNo = MAX_FMSTATION_NO;
			 TunerBand = 3;
		}
		else{
			 FmPresetNo--;
			 if( (TunerBand % 6 ) == 1) TunerBand--;
		}
		GotoPreset(FmPresetNo);	
	}
	else{
		if(AmPresetNo == 1)  AmPresetNo = MAX_AMSTATION_NO;
		else AmPresetNo--;
		GotoPreset(AmPresetNo);	
	}
}
#endif

/*************************************************
	func:	calculate the real preset no
			fm   (band-1)*6 + number
			am   number
	argu:	tunerband
	return	real preset no

*************************************************/
unsigned char GetRealPresetNo(unsigned char number)
{
	if(TunerBand == 4){
		AmPresetNo = number;
		return  number;
	}
	else{                   
		FmPresetNo = number;
		return  (TunerBand - 1)*6 + number;
	}
}

//在主循环调用,处理收音机部分的定时处理或滚动显示.
void TunerTimeHandle()
{
}

//收音的追台处理程序,被TunnerFunc调用.
unsigned char TunerSeekFunc(int key,unsigned char *para)
{   para=para;
	switch(key)
	{
		case SD_KEY:
			if(IsStation()){
				//ShowLcdString(0x40,"sd high");
				SetTimerFunc(TIME_100MS,IFCOUNT_KEY);
				StartCountIf();
			}
			else{
				//ShowLcdString(0x40,"sd low");
				if( (bIsAscan || bIsPscan) && IsFreqOverFlow() ){//at the end, stop
					ReturntoMainMode();
				}
				else{
					if(bIsUp) FreqUp();
					else FreqDown();
					GotoSeekMode();
				}
			}
		break;

		case IFCOUNT_KEY:
			if(IsIfOk()){
				if(bIsAscan == 0 && bIsPscan == 0) ReturntoMainMode();
				else {
					StopSeekStation();
					GotoFreq();
					DisplayTunerCurrentFreq();
					if(bIsAscan) SetTimerFunc(TIME_3SEC,AS_TIMEOUT);
					else SetTimerFunc(TIME_5SEC,PS_TIMEOUT);
	
					if(bIsFm){
						
						if(bIsAscan) FmPresetNo++;
						bPreset = 0;
						if(bIsAscan){
							 SavePreset(FmPresetNo);
							 bPreset = 1;
						}
						
						if(bIsAscan){					
							if(FmPresetNo < 7) TunerBand = 1;
							else if(FmPresetNo < 13) TunerBand = 2;
							else TunerBand = 3;
						}
						if(FmPresetNo>=18 && bIsAscan)	ReturntoMainMode() ;
						else if (FmPresetNo>=18 && bIsPscan)  FmPresetNo=1;
					}
					else{
						TunerBand = 4;
						bPreset = 0;
						AmPresetNo++;
						
						if(bIsAscan){
							 SavePreset(AmPresetNo);
							 bPreset = 1;
						}
						if(AmPresetNo >= 6 && bIsAscan) ReturntoMainMode();
						else if (AmPresetNo>=6 && bIsPscan)  AmPresetNo=1;
					}
					DisplayTunerCurrentFreq();
				}
			}
			else{
				if(  (bIsAscan || bIsPscan) && IsFreqOverFlow() ){//at the end, stop
					ReturntoMainMode();
				}
				else{
					if(bIsUp) FreqUp();
					else FreqDown();
					GotoSeekMode();
				}
			}
		break;

		case AS_TIMEOUT:
		case PS_TIMEOUT:
			if( IsFreqOverFlow())	ReturntoMainMode();
			else{
				FreqUp();
				GotoSeekMode();
			}
			//TimeMessage = 0;
		break;
		
		case  REDRAW_KEY:
			RedrawTuner();
		break;
		
		case CLEARSCREEN_KEY:
			FpClearStr();
			FPDisplayIcon(FP_INFO_MHZ,0);
			FPDisplayIcon(FP_INFO_KHZ,0);
			FPDisplayIcon(FP_INFO_DX,0);
			FPDisplayIcon(FP_INFO_ST,0);
			FPDisplayIcon(FP_INFO_DOT_MIN2,0);
		break;

		default:
			if(bIsAscan) {
				if(key==POWER_KEY) ReturntoMainMode();
			}
			else if(bIsPscan){
				if(key==PS_KEY || key==ENTER_KEY) ReturntoMainMode();
			}
			
			else ReturntoMainMode();
		break;
	}
	return 0;
}


//收音的主处理程序,被TunnerFunc调用.
unsigned char  TunerMainFunc(int key,unsigned char *para)
{
    para=para;
	if(AudioToneMode){
		AudioToneDealFunc(key);
		return 0;
	}
	switch(key){
		case MODE_KEY:
		case VOL_UP_KEY:
		case VOL_DOWN_KEY:
		case MUTE_KEY:
		case VERSION_KEY:
		case TEST_LCD_KEY:
		case POWER_KEY:
			defDealKey(key);
		break;

		case TONE_KEY:
			AudioToneDealFunc(key);
			break;

		case LOCAL_KEY:
			bIsLocal = ~bIsLocal;
			Set_Local();
			if(bIsLocal) FPDisplayIcon(FP_INFO_DX,0);
			else         FPDisplayIcon(FP_INFO_DX,1);
			DisplayTunerCurrentFreq();
		break;

		case ST_KEY:
			bIsStereo = ~bIsStereo;
			Set_Stereo();
		break;

		case BAND_KEY:
			TunerBand++;
			bPreset = 0;
			if(TunerBand > 4) TunerBand = 1;
			if(TunerBand == 4){
				bIsFm = 0;
			}
			else{
				bIsFm = 1;
			}
			MuteOn();
			Set_Band();
			GotoFreq();
			DisplayTunerCurrentFreq();
			{	 unsigned int i;
				for(i=0;i<1000;i++);
			}
			MuteOff();
		break;

		case NUM1_KEY:
		case NUM2_KEY:
		case NUM3_KEY:
		case NUM4_KEY:
		case NUM5_KEY:
		case NUM6_KEY:// it is from ir 
			{
				unsigned char uctemp = key - NUM1_KEY + 1;
				uctemp = GetRealPresetNo(uctemp);
				GotoPreset(uctemp);
			}
		break;

		case P1_KEY:
		case P2_KEY:
		case P3_KEY:
		case P4_KEY:
		case P5_KEY:
		case P6_KEY: // it is from pannel 
			{
				unsigned char uctemp = key - P1_KEY + 1;
				uctemp = GetRealPresetNo(uctemp);
				GotoPreset(uctemp);
			}
		break;

		case M1_KEY:
		case M2_KEY:
		case M3_KEY:
		case M4_KEY:
		case M5_KEY:
		case M6_KEY:
			{
				unsigned char uctemp = key - M1_KEY + 1;
				uctemp = GetRealPresetNo(uctemp);
				SavePreset(uctemp);
				FpClearStr();
				SetTimerFunc(TIME_500MS,REDRAW_KEY);	
			}
		break;

		case UP_KEY:
			FreqUp();
		break;

		case DOWN_KEY:
			FreqDown();
		break;

		case SEEKUP_KEY:
		case SEEKDOWN_KEY:
			if(key == SEEKUP_KEY ) {
				bIsUp = 1;
				FreqUp();
			}
			else{
				bIsUp = 0;
				FreqDown();
			}
			bIsAscan = 0;
			bIsPscan = 0;
			GotoSeekMode();
		break;

		case AS_KEY:
		case PS_KEY:
			bIsAscan = 0;
			bIsPscan = 0;
			if(key == AS_KEY) bIsAscan = 1;
			else
				bIsPscan = 1;
			bIsUp = 1;
			if(bIsFm) {
				if(bIsAscan) {
					FmFreq = FreqArray[TunerArea].FmMin;
					FmPresetNo = 0;
				}
				else if(bIsPscan) {
					if(FmFreq>= FreqArray[TunerArea].FmMax) FmFreq = FreqArray[TunerArea].FmMin;
				}
			}
			else{
				if(bIsAscan){
					AmFreq = FreqArray[TunerArea].AmMin;
					AmPresetNo = 0;
				}
				else if(bIsPscan) {
					if(AmFreq>= FreqArray[TunerArea].AmMax) AmFreq = FreqArray[TunerArea].AmMin;
				}
			}
			GotoFreq();
			DisplayTunerCurrentFreq();
			GotoSeekMode();
		break;

		case INIT_KEY:
			TunerInit();
			RecoverFreq();
			Set_Local();
		break;
		
		case RECOVER_KEY:
			RecoverFreq();
			break;
			
		case REDRAW_KEY:
			if(bNeedSaveTone){
				bNeedSaveTone = 0;
				SaveTone();
			}
			RedrawTuner();
			SetTimerFunc(TIME_1SEC,SAVE_CURRENT_FREQ_KEY);
		break;
		
		case SAVE_CURRENT_FREQ_KEY:
			if(bIsFm){
				if(CurrentFreq != FmFreq) SaveFreq();
				if(bIsStereo){
					if(IsStereo()){
						FPDisplayIcon(FP_INFO_ST,1);
					}
					else{
						FPDisplayIcon(FP_INFO_ST,0);
					}
				}
			}
			else{
				if(CurrentFreq != AmFreq) SaveFreq();
				FPDisplayIcon(FP_INFO_ST,0);
			}
			SetTimerFunc(TIME_1SEC,SAVE_CURRENT_FREQ_KEY);	
		break;
	}
	return 0;
}

//收音的主处理程序,当当前的状态是收音机时,所有的按键都交给它处理,包括定时消息.
unsigned char  TunerFunc(int key,unsigned char *para)
{
	switch(TunerMode){
		case TUNER_SEEK_MODE:
			TunerSeekFunc(key,para);
		break;

		default :
			TunerMainFunc(key,para);
		break;
	}
	return 0;
}

#endif



⌨️ 快捷键说明

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