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

📄 lc72131.c

📁 C51的基于KST-CD111LVD-100 car tuner Driver PLL LC72131 & LA1787 的数字调谐系统
💻 C
📖 第 1 页 / 共 3 页
字号:
    {
        I2C_buffer[0] = HIBYTE(AMfreq);
        I2C_buffer[1] = LOBYTE(AMfreq);
        I2C_write_sub(EEPROM_ADDR, ((ChannelNum - 1) * 2 + AM_START_ADDR), I2C_buffer, 1);
        I2C_write_sub(EEPROM_ADDR, ((ChannelNum - 1) * 2 + 1 + AM_START_ADDR), I2C_buffer + 1,
                      1);

        //I2C_write_sub(EEPROM_ADDR, ((ChannelNum - 1) * 2  + AM_START_ADDR), I2C_buffer, 2);
    }
    else
    {
        I2C_buffer[0] = HIBYTE(FMfreq);
        I2C_buffer[1] = LOBYTE(FMfreq);
        I2C_write_sub(EEPROM_ADDR, ((ChannelNum - 1) * 2 + FM_START_ADDR), I2C_buffer, 1);
        I2C_write_sub(EEPROM_ADDR, ((ChannelNum - 1) * 2 + 1 + FM_START_ADDR), I2C_buffer + 1,
                      1);
    }
    delay_ms(5);
}

void Eeprom_write_ch_band(void)
{
    I2C_buffer[0] = ChannelNum;
    I2C_write_sub(EEPROM_ADDR, CURRENT_CHANNEL, I2C_buffer, 1);
    delay_ms(5);
}

MS_UOP Tuner_operation(MS_UOP uop)
{
    switch(uop)
    {
    case MS_UOP_0:
    case MS_UOP_1:
    case MS_UOP_2:
    case MS_UOP_3:
    case MS_UOP_4:
    case MS_UOP_5:
    case MS_UOP_6:
    case MS_UOP_7:
    case MS_UOP_8:
    case MS_UOP_9:

        ChannelNum = uop -MS_UOP_0;
        ChannelNum = ChannelNum + TenKeyCnt * 10;

        TenKeyCnt = 0;
        Eeprom_write_ch_band();
        Eeprom_read_freq();
        Direct_select();
        Tuner_display_freq();
        Tuner_DisplayChannel(ChannelNum);

        uop = MS_UOP_NOP;
        break;

    case MS_UOP_10P:
        if(TenKeyCnt<9)
            TenKeyCnt ++;
        else
            TenKeyCnt =0;
        Osd_display_symbol(TUNER_CH_ROW+3, 6, TenKeyCnt + '0',
                           OSD_STANDARD, NO_SHADE, OSD_WHITE, BACKGROUND_OFF, DISPLAY_STRING);

        Osd_display_symbol(TUNER_CH_ROW+3, 6+ 1, '-',
                           OSD_STANDARD, NO_SHADE, OSD_WHITE, BACKGROUND_OFF, DISPLAY_STRING);

        break;

    case MS_UOP_SEARCH:
        MemoryCnt = 0;
        if(!b_Mute)
        {
            if(!noise_down_flag)
                temp_volume = g_audio_volume;
            g_audio_volume = 0;
            Audio_volume_set();
            up_volume_flag = 0;
            noise_down_flag = 1;
        }
        bPrevNextSearchFlag = 0;
        //Audio_mute(ALL_CHANNEL, AUDIO_MUTE);
        Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
                           NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);

        FMfreq=FMFREQ_MIN + 5;
        AMfreq=AMFREQ_MIN + 9;
        ChannelNum = 1;
        bSearchDir = 1;
        bAutoSearchOK = 0;
        Osd_display_string(
            OSD_ROW_7, OSD_COLUMN_18, 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:
        if(!b_Mute)
        {
            if(!noise_down_flag)
                temp_volume = g_audio_volume;
            g_audio_volume = 0;
            Audio_volume_set();
            up_volume_flag = 1;
            noise_down_flag = 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:
        if(!b_Mute)
        {
            if(!noise_down_flag)
                temp_volume = g_audio_volume;
            g_audio_volume = 0;
            Audio_volume_set();
            up_volume_flag = 1;
            noise_down_flag = 1;
        }
        ChannelNum--;
        if(ChannelNum < 1)
            ChannelNum = MAX_CHANNEL_NUM;
        Eeprom_write_ch_band();
        Eeprom_read_freq();
        Direct_select();
        Tuner_display_freq();
        Tuner_DisplayChannel(ChannelNum);

        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:
        MemoryCnt = 0;
        if(!b_Mute)
        {
            if(!noise_down_flag)
                temp_volume = g_audio_volume;
            g_audio_volume = 0;
            Audio_volume_set();
            up_volume_flag = 0;
            noise_down_flag = 1;
        }
        Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
                           NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);
        bSearchDir = 0;
        bAutoSearchOK = 0;
        Osd_display_string(
            OSD_ROW_7, OSD_COLUMN_18, 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:
        MemoryCnt = 0;
        if(!b_Mute)
        {
            if(!noise_down_flag)
                temp_volume = g_audio_volume;
            g_audio_volume = 0;
            Audio_volume_set();
            up_volume_flag = 0;
            noise_down_flag = 1;
        }
        Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
                           NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);
        bSearchDir = 1;
        bAutoSearchOK = 0;
        Osd_display_string(
            OSD_ROW_7, OSD_COLUMN_18, 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_7, OSD_COLUMN_14,
                           MEMORY_OK, OSD_STANDARD, NO_SHADE, OSD_RED, BACKGROUND_OFF,
                           DISPLAY_STRING);
        MemoryCnt = 15;
        break;

    case MS_UOP_LOC_DX:
        if(!b_Mute)
        {
            if(!noise_down_flag)
                temp_volume = g_audio_volume;
            g_audio_volume = 0;
            Audio_volume_set();
            up_volume_flag = 1;
            noise_down_flag = 1;
        }
        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()
{
    if(dvd_state_flag)
    {
        McuSendEss(g_ir_system_code, 0x00ff);
        //delay_ms(100);
        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();
    OsdHeader();
    Osd_display_string(TUNER_ROW+5, TUNER_COL + 18, RADIO, OSD_STANDARD,
                       NO_SHADE, OSD_WHITE,BACKGROUND_ON, DISPLAY_STRING);
    Osd_display_string(TUNER_ROW + 1, TUNER_COL + 3, PLL_TYPE, OSD_STANDARD,
                       NO_SHADE, OSD_WHITE,BACKGROUND_ON, DISPLAY_STRING);
    Osd_display_string(TUNER_ROW + 3, TUNER_COL + 3, CHANNEL, OSD_STANDARD,
                       NO_SHADE, OSD_WHITE,BACKGROUND_ON, DISPLAY_STRING);
    Osd_display_string(TUNER_ROW + 5, TUNER_COL + 3, FREQ, OSD_STANDARD,
                       NO_SHADE, OSD_WHITE,BACKGROUND_ON, 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_8, OSD_COLUMN_21,
                           MUTE, OSD_STANDARD, NO_SHADE, OSD_RED, BACKGROUND_OFF,
                           DISPLAY_STRING);
    P_AMP_STANDBY = 0;
    P_DVD_POWER=0;
}
#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+3, 6, temp, OSD_STANDARD,
                       NO_SHADE, OSD_WHITE, BACKGROUND_OFF, DISPLAY_STRING);
}
#if 1
void Display_background_picture()
{
#if 0
    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
}
#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 + 11, TUNER_COL + 9, STEREO_IND, OSD_STANDARD,
                               SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
            Osd_display_string(TUNER_ROW + 9, TUNER_COL + 9, MONO_IND, OSD_STANDARD,
                               SHADE, OSD_YELLOW,CONCAVE, DISPLAY_STRING);
        }
        else
        {
            Osd_display_string(TUNER_ROW + 11, TUNER_COL + 9, STEREO_IND, OSD_STANDARD,
                               SHADE, OSD_YELLOW,CONCAVE, DISPLAY_STRING);
            Osd_display_string(TUNER_ROW + 9, TUNER_COL + 9, MONO_IND, OSD_STANDARD,
                               SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
        }

        Osd_display_string(TUNER_ROW + 11, TUNER_COL + 12, FM, OSD_STANDARD,
                           SHADE, OSD_YELLOW,CONCAVE, DISPLAY_STRING);
        Osd_display_string(TUNER_ROW + 9, TUNER_COL + 12, AM, OSD_STANDARD,
                           SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);

        Osd_display_string(TUNER_ROW + 1, TUNER_COL +6, FM, OSD_STANDARD,
                           NO_SHADE, OSD_WHITE,BACKGROUND_OFF, DISPLAY_STRING);
    }
    else
    {
        Osd_display_string(TUNER_ROW + 11, TUNER_COL + 9, STEREO_IND, OSD_STANDARD,
                           SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
        Osd_display_string(TUNER_ROW + 9, TUNER_COL + 9, MONO_IND, OSD_STANDARD,
                           SHADE, OSD_BLACK,CONVEX, DISPLAY_STRING);
        Osd_display_string(TUNER_ROW + 11, TUNER_COL + 12, FM, OSD_STANDARD,
                           SHADE, OSD_BLACK, CONVEX, DISPLAY_STRING);
        Osd_display_string(TUNER_ROW + 9, TUNER_COL +12, AM, OSD_STANDARD,
                           SHADE, OSD_YELLOW, CONCAVE, DISPLAY_STRING);

        Osd_display_string(TUNER_ROW + 1, TUNER_COL +6, AM, OSD_STANDARD,
                           NO_SHADE, OSD_WHITE,BACKGROUND_OFF, DISPLAY_STRING);
    }

}

void LOC_DX_set()
{

    if(bLocDx)
    {
        Osd_display_string(TUNER_ROW + 11, TUNER_COL + 15, DX_IND, OSD_STANDARD,
                           SHADE, OSD_YELLOW,CONCAVE, DISPLAY_STRING);
        Osd_display_string(TUNER_ROW + 9, TUNER_COL + 15, 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 + 9, TUNER_COL + 15, LOC_IND, OSD_STANDARD,
                           SHADE, OSD_YELLOW, CONCAVE, DISPLAY_STRING);
    }

}

void mute_indicator_set()
{

    if(b_Mute)
        Osd_display_string(TUNER_ROW + 9, TUNER_COL + 21, MUTE, OSD_STANDARD,
                           SHADE, OSD_YELLOW,CONCAVE, DISPLAY_STRING);
    else
        Osd_display_string(TUNER_ROW + 9, TUNER_COL + 21, 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 + 8, TUNER_COL + 1, EXIT1, OSD_STANDARD,
               SHADE, OSD_WHITE,CONVEX, DISPLAY_STRING);*/
    Tuner_icon_set();
    DisplayIcon33(OSD_ICON_TUNER2);
}

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();
    Osd_display_string(ST_MO_ROW, ST_MO_COL, STEREO_IND, OSD_STANDARD,
                       NO_SHADE, OSD_YELLOW, BACKGROUND_OFF, CLEAR_STRING);
}

void Switch_to_stereo()
{
    if(CurrentBand == AM_BAND)

⌨️ 快捷键说明

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