找回密码
 立即注册
查看: 767|回复: 18

STC8H8K64U,驱动960颗16x60段WS2812,制作动感音频FFT

[复制链接]
  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
    发表于 2024-2-3 15:16:49 | 显示全部楼层 |阅读模式
    STC8H8K64U,驱动960颗16x60段WS2812,效果展示!

    16x60段

    16x60段

    开发板连接图

    开发板连接图

    上下连接板

    上下连接板

    焊接好图片

    焊接好图片

    显示LOGO

    显示LOGO

    b5479696f27a4575e6a8095038af3568.mp4

    19.92 MB, 下载次数: 20

    成品视频

    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-3-15 16:26:02 | 显示全部楼层
    用自制的STC8H8K64U核心板加MIC也可以驱动
    567063315d3d252a0c607b09c0ec9ee2.jpg
    微信图片_20240315162117.jpg

    567063315d3d252a0c607b09c0ec9ee2.mp4

    17.52 MB, 下载次数: 8

    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-2-3 15:18:12 | 显示全部楼层
    有兴趣欢迎沟通交流{:4_186:
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-2-3 15:22:07 | 显示全部楼层
    颜色和动态效果都可以根据自己想法改进
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-2-3 15:32:22 | 显示全部楼层
    6X150的音柱

    8bc4547507728f7608fd9a6f1356aefa.mp4

    13.16 MB, 下载次数: 15

    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-2-3 15:43:10 | 显示全部楼层

    谢谢!
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:36
  • 签到天数: 166 天

    [LV.7]常住居民III

    115

    主题

    469

    回帖

    949

    积分

    高级会员

    积分
    949
    发表于 2024-2-19 16:47:23 | 显示全部楼层
    这个有动感
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-2-19 16:48:25 | 显示全部楼层

    音频同步
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:36
  • 签到天数: 166 天

    [LV.7]常住居民III

    115

    主题

    469

    回帖

    949

    积分

    高级会员

    积分
    949
    发表于 2024-2-19 16:51:51 | 显示全部楼层

    分享出来,大家一起玩,可玩出不同的花样来,与粉同乐,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-2-19 17:01:21 | 显示全部楼层
    void showbar()
    {                               
       
              
        u16 i,j,f;
              u8 i2,high;//,f2,f3;
              
              for(i2=0;i2<16;i2++)          //读取FFT转换数据
            {
                    float t0=0;
                    t0=sqrt(pow((s[i2].real+s[i2+1].real),2)+pow((s[i2].imag+s[i2+1].imag),2))/2;
                    dis_rdata[i2]=(u8)t0;
            }
    ///**************************************************************/
    ///*****************写入下屏,i:0~16,表示16列**************/
    ///***************************high:表示列的高度*********/
           
          for (i=0;i<16;i++) //在显示下屏显存必须清0,后面有操作是或运算
              {
            for (j=0;j<60;j++)
                    {
                             dis_data[i][j]=0;
                    }        
        }
         for(i=0;i<16;i++)
             {   
                     high=dis_rdata[i];
                    // high=15;
                     if(high<4)high=0;  //判断小于2时,为0/
                     if(high>60)high=56;        //判断高于60时,为62***/
                      
                              
                                     for(j=0;j<high;j++)
                            {

                     if(i==1||i==3||i==5||i==7||i==9||i==11||i==13||i==15)
                                                            {dis_data[i][60-j]=dis_RGB[j];  //0,2,4,6,8,10,12,14倒相
                                                            }
                                                            else
                                                            {dis_data[i][j]=dis_RGB[j];
                           
                                                    }                                                  
                           
                                                    }                                                  
           
                                                                    if(high>0)               
                                    {       

                            switch(i)
          {case 0:dis_data[i][high+2]=0x00ff00;dis_data[i][high+3]=0x00ff00;break;//R
                             case 1:dis_data[i][60-high-2]=0x0000ff;dis_data[i][60-high-3]=0x0000ff;break;//G
                             case 2:dis_data[i][high+2]=0xff0000;dis_data[i][high+3]=0xff0000;break;//B
                             case 3:dis_data[i][60-high-2]=0xffff00;dis_data[i][60-high-3]=0xffff00;break;//BR
                             case 4:dis_data[i][high+2]=0xff00ff;dis_data[i][high+3]=0xff00ff;break;//BG
                             case 5:dis_data[i][60-high-2]=0x00ffff;dis_data[i][60-high-3]=0x00ffff;break;//RG
                             case 6:dis_data[i][high+2]=0xffffff;dis_data[i][high+3]=0xffffff;break;//RGB
                             case 7:dis_data[i][60-high-2]=0x00ff00;dis_data[i][60-high-3]=0x00ff00;break;//R
                             case 8:dis_data[i][high+2]=0x0000ff;dis_data[i][high+3]=0x0000ff;break;//G
                             case 9:dis_data[i][60-high-2]=0xff0000;dis_data[i][60-high-3]=0xff0000;break;//B
                             case 10:dis_data[i][high+2]=0x00ff00;dis_data[i][high+3]=0x00ff00;break;//R
                             case 11:dis_data[i][60-high-2]=0x0000ff;dis_data[i][60-high-3]=0x0000ff;break;//G
                             case 12:dis_data[i][high+2]=0xff0000;dis_data[i][high+3]=0xff0000;break;//B
                             case 13:dis_data[i][60-high-2]=0x00ff00;dis_data[i][60-high-3]=0x00ff00;break;//R
                             case 14:dis_data[i][high+2]=0x0000ff;dis_data[i][high+3]=0x0000ff;break;//G
                             case 15:dis_data[i][60-high-2]=0xff0000;dis_data[i][60-high-3]=0x0000ff;break;//B
                            }                               
                                   
            }
          
       
             
             
             }     
            for(i=0;i<60;i++)                          //数据合并
            {               
               
                                                    
                                                            data1=TC[i][0]<<8|TC[i][1];                                                       
                   for (f1=0; f1<16; f1++)
        {
          
            if (data1&0x8000)            // 发送数据
                                    {
                                    switch(f1)
          {case 0:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//R
                             case 1:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//G
                             case 2:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//B
                             case 3:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//BR
                             case 4:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//BG
                             case 5:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//RG
                             case 6:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//RGB
                             case 7:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//R
                             case 8:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//G
                             case 9:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//B
                             case 10:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//R
                             case 11:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//G
                             case 12:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//B
                             case 13:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//R
                             case 14:dis_data[f1][60-i]=dis_data[f1][60-i]|0x00ff00;break;//G
                             case 15:dis_data[f1][i-1]=dis_data[f1][i-1]|0x00ffff;break;//B
                            }                               
                                            }
            data1=data1<<1;
                           
                                           
                                    }
    //   
    //         
            }       
                                    for(i=0;i<60;i++)                          //数据合并
            {               
               
                                            for(f3=0;f3<2;f3++)
                {               
             
                                                            data1=TC[f3][i];                                                       
                   for (f1=0; f1<8; f1++)
        {
            f2=f3*8+f1;
            if (data1&0x80)            // 发送数据
                                    {
                                    if(f1==0||f1==2||f1==4||f1==6)
                                                            {
                                                                   
                                                                    dis_data[f2][60-i]=dis_data[f2][60-i]|0x0000ff;  //0,2,4,6倒相
                                                            }
                                                            else
                                                            {dis_data[f2][i-1]=dis_data[f2][i-1]|0x00ff00;   //1,3,5,7
                           
                                                    }
                                            }
            data1=data1<<1;
                           
                                           
                                    }
       
                }
            }       
       
             for(f=0;f<16;f++)                              //数据转存
            {               
                for(i=0;i<60;i++)
                {                         
          
                                                    DisP_Color(        dis_data[f][i]);
                }
            }       

                    delay_ms(100);
                    reset();
       
           
    }
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 55 天

    [LV.5]常住居民I

    10

    主题

    143

    回帖

    344

    积分

    中级会员

    积分
    344
     楼主| 发表于 2024-2-19 17:04:54 | 显示全部楼层
    380091044 发表于 2024-2-19 16:51
    分享出来,大家一起玩,可玩出不同的花样来,与粉同乐,

    分享显示子程序,硬件的接法都不一样,只能按你的原理图重新修改就好,用音频的FFT修改就好
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 1 反对 0 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-16 02:04 , Processed in 0.075751 second(s), 74 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表