欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 420|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

控制不同EQ的增益,達(dá)到控制不同場景的效果

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1157515 發(fā)表于 2025-8-6 16:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
通過控制不同EQ的增益,達(dá)到控制不同場景的效果
效果視頻如下:
https://v.youku.com/v_show/id_XNjQ4NTc2NjQzMg==.html
界面如下:






界面代碼如下:
void main(){
       INIT_CPU();  //系統(tǒng)初始化
       PORT_Init();//IO口初始化

       T0_Init();//定時器0初始化
       T2_Init();//定時器2初始化   my_UART4_Init(115200);
       uart_init();//串口初始化

ws2812_writ_byte(8); //LED初始化
       resetEQValue();
       delay_ms(1000);
       ChangePage(1);
       delay_ms(1000);
       updateScreenEQPage(Nature_screen);

       while(1){
              Uart_Handle_all();
              OneMsHandle();//1Ms一次
              TenMsHandle();

   Read_0xF00();//數(shù)據(jù)自動上傳
//            data_change_sava();//數(shù)據(jù)改變自動保存
       }
}

void updateScreenEQPage(EQ_Screen_e screen)
{
       u8send[10*2][2];
       u8i=0;

       if(screen>=EQ_MaxScreen)
              return;

       for(i=0;i<10;i++)
       {
              EQv.Gain=ScreenGain[screen]+8;
              UserReadEQ[1]=ScreenGain[screen]+8;
       }

       //更改上面顯示的增益
       memset(send,0,sizeof(send));
       for(i=0;i<10;i++)
       {
              sprintf(send[i*2],"%d",ScreenGain[screen]);
       }
       write_dgusii_vp(0x1300,send,20);

       //更改滑條內(nèi)容顯示
       memset(send,0,sizeof(send));
       for(i=0;i<10;i++)
       {
              send[1]=EQv.Gain;
       }
       write_dgusii_vp(0x1000,send,10);


       //更改顯示場景文本
       memset(send,0,sizeof(send));
       switch(screen)
       {
              case  Nature_screen:
                     sprintf(send,"自然");
              break;


             case YaoGun_screen:
                     sprintf(send,"搖滾");
              break;


             case LiuXing_screen:
                     sprintf(send,"流行");
              break;


             case JingDian_screen:
                     sprintf(send,"經(jīng)典");
              break;
       }
       write_dgusii_vp(0x1500,send,3);

       //更新從機(jī)的增益
       updateAllEQGain();
}

void EQChangeSend(void)
{
       u8Read[10][2];
       u8send[10][2];
       u8i=0;
       intgain=0;

       memset(Read,0,sizeof(Read));
       Read_Dgusii_Vp(0x1000,Read,10);

       for(i=0;i<10;i++)
       {
              if(UserReadEQ[1]!=Read[1])
              {
                     UserReadEQ[1]=Read[1];

                     //更改上面顯示的增益
                     gain=Read[1]-8;
                     memset(send,0,sizeof(send));
                     sprintf(send,"%d",gain);
                     write_dgusii_vp(0x1300+2*i,send,2);
                     EQSenddata(i,Read[1]);
                     break;
              }
       }
}

解碼板子代碼如下:

voidUserUartRecHandle(const uart_bus_t *uart_bus,u8 *data,u16 len)
{
    u8 retdata[30];
    u8 i=0;
    struct eq_seg_info*tar_seg1;
    u32 eq_name = 7;

   if(data[0]!=DwinLocal_addr)
     return;

    switch(data[1])
    {
       case 1://設(shè)置音量
           app_audio_direct_set_volume(data[2]);
           retdata[i++]=0x15;
           memcpy(&retdata[1],&data[1],len-1);
           UserUartRetRec(uart_bus,retdata,len);
       break;

       case 0x0b://更新EQ值
           if(data[2]>9)
               break;
           tar_seg1=&music_mode.eq_parm.seg[data[2]];
           u16 fre1=data[3]<<8|data[4];
           float gain1=((data[5]&0x7f)*100+data[6]);
           gain1/=100;
           if(data[5]>=0X80)
               gain1=-gain1;
           float Q1=(data[7]*100+data[8]);
           Q1/=100;
           tar_seg1->freq=fre1;
           tar_seg1->gain=gain1;
           tar_seg1->q=Q1;

           cur_eq_set_update(eq_name, tar_seg1,get_eq_nsection(eq_name), 0);
#if 1      
           int gain=tar_seg1->gain*100;
           int q=tar_seg1->q*100;
           log_info("fre:%d,gain:%d.%d,Q/S:%d.%d",tar_seg1->freq,
           gain/100,gain%100,
           q/100,q%100);
#endif                 
       break;

       case 0x1b://更新指定增益
           if(data[2]>9)
               break;
           tar_seg1=&music_mode.eq_parm.seg[data[2]];
           tar_seg1->gain=data[3]-8;

           cur_eq_set_update(eq_name, tar_seg1,get_eq_nsection(eq_name), 0);
#if 1      
            gain=tar_seg1->gain*100;
            q=tar_seg1->q*100;
           log_info("fre:%d,gain:%d.%d,Q/S:%d.%d",tar_seg1->freq,
                    gain/100,gain%100,
                    q/100,q%100);
#endif         
       break;

           case 0x1C://更新指定增益
           int k=0;

           for(k=0;k<10;k++)
           {
           tar_seg1=&music_mode.eq_parm.seg[k];
           tar_seg1->gain=data[2+k]-8;
           cur_eq_set_update(eq_name, tar_seg1,get_eq_nsection(eq_name), 0);
#if 1      
            gain=tar_seg1->gain*100;
            q=tar_seg1->q*100;
           log_info("fre:%d,gain:%d.%d,Q/S:%d.%d",tar_seg1->freq,
                    gain/100,gain%100,
                    q/100,q%100);
#endif
           }
       break;

    }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表