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

📄 control.c

📁 完整功放的控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:




/********DSP时的音调处理 *************************/
void  dsp_tone_do(void)
{  
  uchar z;
  if (dsp_att!=DSP_NO)          /*不在DSP下则返回*/
  { /* DSP模式的音调处理 */
    z=dsp_att-1;		/*数组从0开始,DSP从1开始*/
    tre_val=tab_dsp[z][0];	/* tre  DSP模式下TONE表位值 */
    bass_val=tab_dsp[z][1];	/* bass DSP模式下TONE表位值 */
  }
}



void tre_bass_do(void)
{
  uchar z;
  uchar w;
  /********  音调处理 *************************/
    if (b_lound)
    { /* 等响时 */
      if (master_val<35)
      {
        z=bass_val+4;		/* bass 格数 */
        w=tre_val+4;		/* tre  格数 */
      }
      else if (master_val<43)
      {
        z=bass_val+3;		/* bass 格数 */
        w=tre_val+3;		/* tre  格数 */
      }
      else if (master_val<51)
      {
        z=bass_val+2;		/* bass 格数 */
        w=tre_val+2;		/* tre  格数 */
      }
      else if (master_val<59)
      {
        z=bass_val+1;		/* bass 格数 */
        w=tre_val+1;		/* tre  格数 */
      }
      else
      {
        z=bass_val;		/* bass 格数 */
        w=tre_val;		/* tre  格数 */
      }
      if (z>10) z=10;		/* bass 最大为10格 */
      if (w>10) w=10;		/* tre  最大为10格 */
    }
    else
    { /* 没有等响时 */
      z=bass_val;		/* bass 格数 */
      w=tre_val;		/* tre  格数 */
    }

    par[0]=tab_tone[z];		/* bass TONE表位值 */
    par[1]=tab_tone[w];		/* tre  TONE表位值 */

   if(delay_val==0)
   {
     par1_7=1;
     par1_6=1;	
   }	
   else if(delay_val==1)
   {
     par1_7=0;
     par1_6=1;	
   }	
   else if(delay_val==2)
   {
     par1_7=1;
     par1_6=0;	
   }	
   else if(delay_val==3)
   {
     par1_7=0;
     par1_6=0;	
   }	

   if(input_att==INPUT_AC3)  par1_4=1;  /* out 1 */
   else par1_4=0;
   		
  /********  音调处理 *************************/
  par0_7=0; par0_6=0; par0_5=0;  /*控制高低音*/
  send_62446();
}





/*** 把MIC音量db数合成M62421音量格式 ##### ***/
void m62421_chval(void)
{ /* 参数: par[0]	db数(MIC1 or MIC2)
     返回: par[0]	高位数据
           par[1]	低位数据 */

  par[2]=par[0];
  par[0]=0;
  par[1]=0;

  if (par2_0) par1_7=1;
  if (par2_1) par0_0=1;
  if (par2_2) par1_2=1;
  if (par2_3) par1_3=1;
  if (par2_4) par1_4=1;
  if (par2_5) par1_5=1;
  if (par2_6) par1_6=1;
}





/***** MIC音频的音量、音调数据输出处理(IC: M62421) ******/
void m62421_do(void)
{
  uchar x;
  uchar y;

  /*****  音量处理 *******/
  par[0]=mic_echo_tab[mic2_val];	 /*MIC2 db数 */
  m62421_chval();			/* 格式数据 */
  par1_0=1;
  par1_1=1;
  
  par0_4=1;				/*cs接高电平*/
  
  send_62421();

  par[0]=mic_echo_tab[mic1_val];	 /*MIC2 db数 */
  m62421_chval();			/* 格式数据 */
  par1_0=0;
  par1_1=1;

  par0_4=1;				/*cs接高电平*/
  
  send_62421();

  /*****  音调处理 *****/
  x=tab_mic_tone[mbass_val];		/* bass TONE表位值 */
  y=tab_mic_tone[mtre_val];		/* tre  TONE表位值 */
  
  x=x<<4;
  par[1]=(y & 0x0f) | x;
  par[0]=0x07;

  par0_4=1;				/*cs接高电平*/
  
  send_62421();
}



/*输入选择控制电平*/
void input_select(bit lr_flag)
{
  uchar i;	

	 start_intmute();			/* 临时静音启动 */
     b_mute=0;				/*取消静音标志*/	     
     screen_num=0;
     peng_flg=0;       
     test_c=0;	       

     if(lr_flag)
     { 
       if(input_att<4) input_att++;    /*改变当前输入选择*/
       else input_att=0;
     }
     else
     {
       if(input_att>0)  input_att--;  /*改变当前输入选择*/
       else input_att=4;	
     }
    input_control();
	kdel=KTIME4;
}


/*====================== 各内部控制处理程序文件 ========================*/
void input_control(void)    /*音源输入选择*/	
{
   start_intmute();			/* 临时静音启动 */
	
   tre_bass_do();
	
   if((input_att==INPUT_AUX)||(input_att==INPUT_AC3))
   {	
    bc_inputa=1;
    bc_inputb=1;
   }
   else if(input_att==INPUT_TAPE)
   {
    bc_inputa=0;
    bc_inputb=0;
   }	
   else if(input_att==INPUT_VCD)
   {
    bc_inputa=1;
    bc_inputb=0;
   }	
   else if(input_att==INPUT_DVD)
   {
    bc_inputa=0;
    bc_inputb=1;
   }	
   
   mach_display();   

   par[0]=&input_att;
   write_abyte();			/*记忆*/

   if((input_att==INPUT_AC3)&&(dsp_att!=DSP_NO))  
   {
     tre_bass_restore();		/*恢复进入DSP原先的高低音*/
   }
}


/***=========================== 扩音机保护 ===================================***/
/***** 扩音机保护检测及保护处理 ******/
void protect_do(void)
{
  uchar i;
  uint x;
  
  if (bc_jin==0)			/* 0=过载 */
  {
    peng_flg=0;  
    bc_jin=1;				/* 预置检测口高电平 */
    bc_jout=1;				/* 继电器控制脚, 1=断开 */
    for (i=2; i!=0; i--)
    {
      china_disp();
    }
    
    bc_jout=0;				/* 继电器控制脚, 0=合上 */
    pub_delay_do(500);			/* 停留时间0.3S */
    
    x=0xffff;				/* 检测停留时间, 2S */
    while (x!=0)
    {
      if (bc_jin==0)			/* 再检测一次 */
      {
        bc_jout=1;			/* 继电器控制脚, 1=断开!!! */
        while(1)			/* 循环走屏"TURN OFF" ****************/
        {
          string_scr_step=55;
          china_scroll();
        }
      }
      dog_main=DOG_MAIN;		/* 恢复main看门狗计数数 */
      x--;
    }
  }
}


/**************做出厂设置*******************************/
void setmach(void)
{			/***** 做出厂设置 *****/
   input_att=INPUT_VCD;
   par[0]=&input_att;		/* 储存 */
   write_abyte();		/*音源选择DVD_LD为输入*/
   
   ch_att=C2_CH;
   par[0]=&ch_att;		/* 储存 */
   write_abyte();		/*2声道*/
   
   tre_val=5;
   par[0]=&tre_val;		/*高音为0DB*/
   write_abyte();
   
   bass_val=5;
   par[0]=&bass_val;		/*低音为0DB*/
   write_abyte();
   
   tre_val_bak=5;
   par[0]=&tre_val_bak;		/*高音为0DB*/
   write_abyte();
   
   bass_val_bak=5;
   par[0]=&bass_val_bak;	/*低音为0DB*/
   write_abyte();
   
   
   dsp_att=DSP_NO;
   par[0]=&dsp_att;		/*低音为0DB*/
   write_abyte();
   
   mtre_val=4;
   par[0]=&mtre_val;		/*低音为0DB*/
   write_abyte();
   mbass_val=4;
   par[0]=&mbass_val;		/*低音为0DB*/
   write_abyte();
   mecho_val=14;
   par[0]=&mecho_val;		/*低音为0DB*/
   write_abyte();

   mic1_val=14;
   mic2_val=14;
   par[0]=&mic1_val;		   /*KALA OK高音*/	
   write_abyte();
   par[0]=&mic2_val;		   /*KALA OK高音*/	
   write_abyte();
   
   delay_val=1;
   par[0]=&delay_val;		   /*KALA OK高音*/	
   write_abyte();
}


/***========================== 检查修正设置 =====================================***/
/*-------------------------------------------------*/
void setup_use(void)	  		/*** 开机的用户状态初始化 ***/
{
  par[0]=&input_att;			/*输入音源存储地址INPUT_ATT_D*/
  read_abyte();
  if (par[0]>4) input_att=INPUT_VCD;	/* 出错,用出厂默认值 */
  else input_att=par[0];		/* 音源输入状态模式属性 */

   
/************* 各种音量调节值 *****************/
   par[0]=&tre_val;
   read_abyte();
   if (par[0]>10) tre_val=5;		/* 出错,用出厂默认值 */
   else tre_val=par[0];			/* 读出高音 */
   
   par[0]=&bass_val;
   read_abyte();
   if (par[0]>10)  bass_val=5;  	/* 出错,用出厂默认值 */
   else bass_val=par[0];		/*读出低音 */
   
/************* 各种音量调节值 *****************/
   par[0]=&tre_val_bak;
   read_abyte();
   if (par[0]>10) tre_val_bak=5;		/* 出错,用出厂默认值 */
   else tre_val_bak=par[0];			/* 读出高音 */
   
   par[0]=&bass_val_bak;
   read_abyte();
   if (par[0]>10)  bass_val_bak=5;  	/* 出错,用出厂默认值 */
   else bass_val_bak=par[0];		/*读出低音 */
   
   
   par[0]=&dsp_att;
   read_abyte();
   if (par[0]>8) dsp_att=DSP_NO;	/* 出错,用出厂默认值 */
   else dsp_att=par[0];			/*读出DSP */
   
   par[0]=&ch_att;
   read_abyte();
   if (par[0]>2) ch_att=C2_CH;		/*只用一位为标志位*/
   else ch_att=par[0];			/*读出5声道或2声道标志位 */

   par[0]=&mtre_val;
   read_abyte();
   if (par[0]>8) mtre_val=4;		/*只用一位为标志位*/
   else mtre_val=par[0];		/*读出5声道或2声道标志位 */

   par[0]=&mbass_val;
   read_abyte();
   if (par[0]>8) mbass_val=4;		/*只用一位为标志位*/
   else mbass_val=par[0];		/*读出5声道或2声道标志位 */

   par[0]=&mecho_val;
   read_abyte();
   if (par[0]>20) mecho_val=14;		/*只用一位为标志位*/
   else mecho_val=par[0];		/*读出5声道或2声道标志位 */

   par[0]=&mic1_val;
   read_abyte();
   if (par[0]>20) mic1_val=14;		/*只用一位为标志位*/
   else mic1_val=par[0];		/*读出5声道或2声道标志位 */
   
   par[0]=&mic2_val;
   read_abyte();
   if (par[0]>20) mic2_val=14;		/*只用一位为标志位*/
   else mic2_val=par[0];		/*读出5声道或2声道标志位 */
   
   par[0]=&delay_val;
   read_abyte();
   if (par[0]>3) delay_val=1;		/*只用一位为标志位*/
   else delay_val=par[0];		/*读出5声道或2声道标志位 */
   
}



void save_program(void)
{
   if(string_num==10)
    {
    par[0]=&bass_val;              /*主音量低音*/    
    write_abyte();
    }	   
   else if(string_num==11)
    {
    par[0]=&tre_val;		   /*主音量高音*/
    write_abyte();
    }	   
   else if(string_num==18)
    {
    par[0]=&mecho_val;		   /*KALA OK混响*/
    write_abyte();
    }	   
   else if(string_num==9)
    {
    par[0]=&mtre_val;		   /*KALA OK高音*/	
    write_abyte();
    }	   
   else if(string_num==17)
    {
    par[0]=&mbass_val;		   /*KALA OK低音*/
    write_abyte();
    }	   
   else if(string_num==65)
    {
    par[0]=&delay_val;		   /*KALA OK低音*/
    write_abyte();
    }	   
}

⌨️ 快捷键说明

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