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

📄 main.c

📁 本程序是汽车音响中不可缺少的LCD显示程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                              }
                           } /* VCD STATE */
                           /* ******************* */
                          if (system_state > AUX_STATE) system_state = VCD_STATE;
                           save_vcd_time(1);
#if  PLAY_DVD
                           if(pre_system_state == VCD_STATE) {
                             send_powerkey_to_dvd();
                           }
#endif
                           source_change();
                          if (system_state != VCD_STATE) {
                              MUTE_CLR;                                  /* line mute off */
                              Delay50ms(2);                              /* delay 100ms   */
                          }
                          break;
		     case  KEY_CLK:
			 	#if SIOTEST
				     for(;;)
                                   SIO_IO_sendbyte();
                         #endif
			 	break;
                    default:
			  break;

	    }          /* switch(g_key_data) end */

      NOP();
      }                /* vaild key pressed process end (F_KEY_INP = 1) */
/* ****************** no key pressed process  F_KEY_INP = 0 *************** */
common:
/* *************************************************************** */
/* *************** if necessary transmit data to vcd side ******** */
      if (system_state == VCD_STATE) {

          if (transmit_data_ptr != 0 && VCD_STBIN == 1) {
              if (send1word_to_vcd(transmit_data_stack[0])) {
                 for (ii=1;ii<=transmit_data_ptr-1;++ii) {
                    transmit_data_stack[ii-1] = transmit_data_stack[ii];
                 }
                 transmit_data_stack[transmit_data_ptr-1] = 0x0000;
                 --transmit_data_ptr;
              }
          }
      }  
     p_volume_display();
     if (F_VOL_INP) {
         if (MUTE_ON == 1) {
            p_mute_off();      /* exit mute state */
         }
         DISPLAY_CHG = 1;
         SET_TIME_DISP = 0;
         count_time = 0x00;
         VFD_processBlank(BLANK_ALL);
         tda7313_send_data1();
         F_VOL_INP = 0;
     }
/******************TIME STATE ******************************/
      Display_Time();
/******************PAUSE STATE ******************************/
/*********************************************************/
/*********************************************************/
      if(MUTE_ON) {
           count_time  = 0x00;
           DISPLAY_CHG = 1;
         if (flash_timer == 0) {
            flash_timer = 10;
            VFD_processBlank(BLANK_ALL);
         }
         if (flash_timer == 5)  {
             VFD_processBlank(BLANK_ALL);
            if(MUTE_ON) temp = SHOW_MUTE;
             LCD_processMessage(temp);
         }
     }
      if (DISPLAY_CHG == 1) {
      	  unsigned char Max = 50;
#if USE_BLUETOOTH              
      	  if(SetBlueDisplay) Max = 100; 
#endif      	  
          if (count_time >= Max) {
              if (MUTE_ON) {
                 count_time =0x00;
              }
              else {
                  Clear_Adjust_Time();
                  DISPLAY_CHG = 0;
                  p_input_dsp();
              }
	  }
#if USE_BLUETOOTH              
             SetBlueDisplay = 0; 
#endif             
	  
      }
/*********************************************************/
     if (POWER_FAILURE == 0) update_lcd_ram();
/* *******************Mute Cancel ************************* */
    if (Mute_timer == 0) {
        if (Mute_Cancel == 0) {
            if (AUTO_SCAN == 0 && MUTE_ON == 0)  {
                MUTE_CLR;
                Mute_Cancel = 1;
            }
        }
    }
/*********************************************************/
/*********************************************************/
  }       /* power on mode process end   */
/* ********************************************************************* */
/**************** power off ******************************************** */
  else {                                  /* power off process, if need  */

      if(StandbyState == 0) {
         Display_Time();
        if(Refresh_Lcd) Write_Tuner_LCD();
      }
      if (F_KEY_INP == 1) {
           F_KEY_INP = 0;
           if (g_key_data == STANDBY_KEY) {
                POWER_ON = 1;
                p_standby_clr();
           }
      }
  }
  goto start;
}
/* ************************ subroutine program area *********************** */
/* ************************************************************************ */
void    tda7313_send_data1(void)
{
         temp = Vol_Ms_Tbl[volume_select];
         LCD_processMessage(temp);

   switch(volume_select) {
          case MAIN_VOLUME:
               process_volume_select(main_volume_data,MAIN_VOLUME);
               LCD_process7Segments(VOL_SEG,main_volume_data);
#if !AX6013
               if(system_state == VCD_STATE)
               push_transmit_data(MAIN_VOL,main_volume_data);
#endif
               break;
         default:
               break;

   }
   return;
}
void Send_4ch_Data(void)
{
     TDA7313_send_data(0x80);
     TDA7313_send_data(0xa0);
     TDA7313_send_data(0xc0);
     TDA7313_send_data(0xe0);
     process_volume_select(main_volume_data,MAIN_VOLUME);
    return;
}
void process_bass(unsigned char B1)
{
#if 1
     if (eq_mode == 0) {
         temp_data =  bass_treble_data[B1];
         if (volume_select == BASS_VOL)
             temp_data |=0x60;
         else
             temp_data |=0x70;
         TDA7313_send_data(temp_data);

     } else {
        B1 = EqDataBass_tbl[eq_mode];
        TDA7313_send_data(B1); /* bass  */
        B1 = EqDataTreble_tbl[eq_mode];
        TDA7313_send_data(B1); /* treble  */
     }
#endif
     return;
}
void process_volume_select(unsigned char B1,unsigned char C1)
{
      B1 = Volume_Data_Tbl[B1];
      TDA7313_send_data(B1);
      return;
}
void adjust_volume(void) {
     unsigned char *temp_ptr;
     unsigned char  ij,temp1;

     vol_timer = 40;
     temp_ptr = mainvol + 1;            /* temp_ptr = &main_volume_data */
     temp_ptr += volume_select;
     if (g_key_data == M_VOLUP_KEY) {
        ++(*temp_ptr);
        ij = Vol_Tbl[volume_select];
        if (*temp_ptr >= ij)  *temp_ptr = ij;
     }
     if (g_key_data == M_VOLDWN_KEY) {
        --(*temp_ptr);
        if (*temp_ptr == 0xff)  *temp_ptr = 0;
     }
     F_VOL_INP = 1;
}
void TDA7313_Mute(void)  {
     TDA7313_send_data(0x9f);       /* Mute volume IC */
     TDA7313_send_data(0xbf);
     TDA7313_send_data(0xdf);
     TDA7313_send_data(0xff);
     return;
}

void process_volume_init(void)
{
    main_volume_data = 10;
    bal_ptr = 7;
    fad_ptr = 7;
    bass_volume_data = 7;
    treble_volume_data = 7;
    volume_select = 0;                        /* main_volume */
    return;
}
void Light_Icon(const unsigned int *DEW1)
{
   i = 1;
   for(;;) {
      temp_16 = *DEW1;
      ++DEW1;
      if (temp_16 == Icon_End) {
         if(i==1) {
           i = 0;
           continue;
         } else {
           break;
         }
      }
      VFD_clear_lite_anode(temp_16,i);
   }; /*end for */
   return;
}

void set_lcd_char(unsigned char B1,unsigned int WA1)
{
#if LC75817
unsigned char c1;
unsigned char c2,i1;
c2=(unsigned char)(WA1);
i1=0;
     while(lc75817_char[i1].en!=c2){i1++;}
      if (system_state == VCD_STATE && DISPLAY_CHG == 0 || Write_VCD_Buff) {
	  	for(c1=0;c1<6;c1++){
               vcd_lcdbuff[(unsigned char)(B1*6+c1)]=lc75817_char[i1].LCD_zhi[c1];}
       }else {
		for(c1=0;c1<6;c1++){
              ShadowRam[(unsigned char)(B1*6+c1)]=lc75817_char[i1].LCD_zhi[c1];}
       }
	 return;		 
#else
   temp_16 = WA1;
   B1 = (unsigned char) (B1*MAX_SEG);
   ptr = (unsigned int *) (VFD_char_segments + B1);
   VFD_set_char(ptr, temp_16);
   return;
  #endif 
}
/* ************************************************************************ */
void ClearOpDurState(void)
{
unsigned char seekflag = 0;
  if(MUTE_ON) {
    p_mute_off();
   }
   Clear_Adjust_Time();
  DISPLAY_CHG = 0;
return;
}
void ClearVcdOpDurState(void)
{
  if(MUTE_ON) {
    p_mute_off();
   }
   Clear_Adjust_Time();
   DISPLAY_CHG = 0;
return;
}
void    source_change(void) {      /* new */
               ClearOpDurState();
               MUTE_SET;                 /* line mute on */
               Delay1ms(100);
               avswitch_set();
               clear_vcd_lcd_mark();
               HaltCommunication();
#if USE_BLUETOOTH
               BlueToothOn = 0;
               bBlueToothOn = 0;
#endif               
               
               if (system_state == VCD_STATE) {
#if 1
                   GetTrayState();
                  if(TrayState != CLOSEOK) {
                    close_mode = 1;
                    Access_Tray();
                  }
#endif
                   RADIO_POWER_OFF;                       /*  turn off radio power */
                   VFD_processBlank(BLANK_ALL);
                   LCD_processMessage(SHOW_CLOSE);
                   VFD_spin_wheel(2);
                   p_eqloud_dsp();
                   Write_VCD_LCD();
                   MP3Reset_Output;
                   ResetCount = 0;
                   MP3_reset = 0;
                   Delay50ms(1);/*50ms*/
                   VCD_POWER_ON;                           /*  turn on CD power   */
                   set_tv_mode();
                   Resume_VCD_Share_Flag  =1;
                   transmitpaneldet = 1;
                   set_sio_receive();
                   EF4 = 1;                           /* interrupt int4 enable   */
                   EF13 = 1;                           /* interrupt SIO enable    */
                   Mcu_Mute = 1;
               } else  {
                   VCD_POWER_OFF;          /*  turn off CD power     */
                   RADIO_POWER_OFF;                       /*  turn off radio power */
                   MP3Reset_Input;
                   Delay1ms(100);
                   p_input_dsp();
                   Write_Tuner_LCD();
               }
               avswitch_set();
               lcd_refresh_state = LCD_REFRESH_COMMON;
#if USE_BLUETOOTH
               ReadBlueId = 0;
               DialNumberSend = 0;
#endif               
               
 return;

}

/* ************************************************************************ */
void    p_standby_clr(void) {
         MAIN_POWER_ON;
         MUTE_SET;                      /* mute on        */
         Delay1ms(50);
         LCD_state_init(0);
         Blank_AllBuff();
         flag_set();
         GetTrayState();
#if BACK_LIGHT
         BACK_LIGHT_ON;
#endif
        if(system_state == VCD_STATE) {
          GetTrayState();
          if(TrayState == FULLOPEN) system_state = AUX_STATE;	
        }
         source_change();
         if (main_volume_data >= 20) main_volume_data = 20;
         Resume_Volume_Data();
         POWER_IC_ON;
         GetTrayState();
         BTrayState = TrayState;
         GetTrayState();
         BTrayState = TrayState;
         if (system_state != VCD_STATE) {
               Mute_timer = 10;                       /* 1s */

⌨️ 快捷键说明

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