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 + -
显示快捷键?