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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2789|回復: 0
打印 上一主題 下一主題
收起左側

音頻光立方程序(傅里葉變換)

[復制鏈接]
跳轉到指定樓層
樓主
小燈可以隨著音頻閃爍(傅里葉變換)

自行利用序列點亮小燈
#include <STC12C5A60S2.H>
#define uchar unsigned char
#define uint unsigned int
sbit Y1=P2^0;//紅
sbit Y2=P2^1;//綠
sbit R1=P2^2;//藍
sbit R2=P2^3;//紅
sbit B1=P2^4;//綠
sbit B2=P2^5;//藍
sbit G1=P2^6;//紅
sbit G2=P2^7;//綠
sbit AK=P1^0;//外部音源
sbit BK=P1^2;//內部音源
sbit ABL=P0^3;//亮度
char data menu,out,amenu,sa,bb,num,cheng,yanse,liangdu; //menu按鍵左,     out按鍵右,    amenu按鍵中,
                                                        //sa串口中斷,     bb延時變量,   num頻譜顯示,              //cheng行掃描變量,yanse顏色控制, liangdu亮度控制
char yp=1;
uint yinpin;
void timer0init(void) //初始化函數特殊功能寄存器配置
{
   B1=0;
   B2=1;
   G1=0;
   G2=1;
   R1=1;
   R2=0;
   Y1=1;
   Y2=0;
   TMOD=0X12;
   //EX0=1; //外部中斷0開
   //ET0=1; //定時器0中斷開            
   //EX1=0; //
   ET1=1;//定時器1開中斷                  
   EA=1; //總中斷打開  
   //TH1=0x10;
   //TL1=0x00;
   IPH|=0X01;
   PX0=1;
   IT0=1;
   P1M0=0X7F;
      P1M1=0X80;
   P0M0=0xf8; //P0口開漏輸出
   P0M1=0xf0;
   P3M0=0x00; //P0口準雙向輸出
   P3M1=0X00;
   P2M0=0x00; //P2口準雙向輸出
   P2M1=0X00;   
}
/*************************************************************************************************************************/
void delay(int i)// 延時 bb速度控制
{           
char b;
while (i--)
{
    b=bb;
    while(b--);
}
}
/*************************************************************************************************************************/
/******************************************74HC595數據發送函數************************************************************/
/*************************************************************************************************************************/
sbit SH_CP = P3^4; //SCK
sbit ST_CP = P3^3;//RCK
sbit DS    = P3^5;//SER
void initial595() //列掃描74HC595初始化
{
SH_CP = 0;
ST_CP = 0;
DS = 0;
}
/**********************************************************************************************************************/
/*******************************************************************************************************************************/
void sendbyte1(unsigned int num1,unsigned int num2,unsigned int num3,unsigned int num4) //列掃描74HC595輸出
{
  unsigned char i=0;
  for(i=0;i<8;i++)
  {
  DS = num1&0x01;  //發送最低位
  SH_CP = 1;
  SH_CP = 0;   //移位寄存器移位
     num1=num1>>1;  //數據移位
  }
  for(i=0;i<8;i++)
  {
  DS = num2&0x01;  //發送最低位
  SH_CP = 1;
  SH_CP = 0;   //移位寄存器移位
  num2 = num2>>1;  //數據移位
  }
for(i=0;i<8;i++)
{
  DS = num3&0x01;  //發送最低位
  SH_CP = 1;
  SH_CP = 0;   //移位寄存器移位
  num3 = num3>>1;  //數據移位
}
  for(i=0;i<8;i++)
  {
  DS = num4&0x01;  //發送最低位
  SH_CP = 1;
  SH_CP = 0;   //移位寄存器移位
  num4 = num4>>1;  //數據移位
  }
   
}     
/*音柱編碼*/
uchar code BRTable[64] ={ 0,32,16,48,8,40,24,56,4,36,20,52,12,44,28,60,2,34,18,50,10,42,26,58,6,38,22,54,14,46,30,62,1,33,17,49,9,41,25,57,5,37,21,53,13,45,29,61,3,35,19,51,11,43,27,59,7,39,23,55,15,47,31,63};
char code sin_tabb[64] = { 0 ,12 ,25 ,37 ,49 ,60 ,71 ,81 ,90 ,98 ,106 ,112 ,117 ,122 ,125 ,126 ,127 ,126 ,125 ,122 ,117 ,112 ,106 ,98 ,90 ,81 ,71 ,60 ,49 ,37 ,25 ,12 ,0 ,-12 ,-25 ,-37 ,-49 ,-60 ,-71 ,-81 ,-90 ,-98 ,-106 ,-112 ,-117 ,-122 ,-125 ,-126 ,-127 ,-126 ,-125 ,-122 ,-117 ,-112 ,-106 ,-98 ,-90 ,-81 ,-71 ,-60 ,-49 ,-37 ,-25 ,-12  };
char code cos_tabb[64] = {127 ,126 ,125 ,122 ,117 ,112 ,106 ,98 ,90 ,81 ,71 ,60 ,49 ,37 ,25 ,12 ,0 ,-12 ,-25 ,-37 ,-49 ,-60 ,-71 ,-81 ,-90 ,-98 ,-106 ,-112 ,-117 ,-122 ,-125 ,-126 ,-127 ,-126 ,-125 ,-122 ,-117 ,-112 ,-106 ,-98 ,-90 ,-81 ,-71 ,-60 ,-49 ,-37 ,-25 ,-12 ,0 ,12 ,25 ,37 ,49 ,60 ,71 ,81 ,90 ,98 ,106 ,112 ,117 ,122 ,125 ,126 };
char data c[8];//用于存儲5個不同頻率的幅值
char data b[8];//用于使音譜柱形顯示的平滑
int xdata Real[64];//實部
int xdata Image[64];//虛部
/*音柱編碼*/
uchar code tuku1[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,};//音頻顯示方式1
uchar code tuku2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};//音頻顯示方式3
uchar code tuku3[]={0x00,0x10,0x18,0x38,0x3c,0x7c,0x7e,0xff,};//音頻顯示方式3
uchar code table1[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//音頻顯示頻段1
uchar code table2[]={
0Xe0,0Xe0,0Xe0,0xe0,0Xe0,0Xe0,0Xe0,0Xe0,
0X07,0X07,0X07,0X07,0X07,0X07,0X07,0X07
};//音頻顯示頻段2
uchar code table3[]={
0Xf0,0Xe0,0Xc0,0x80,0X00,0X00,0X00,0X00,
0X03,0X07,0X0e,0x1c,0X38,0X70,0Xe0,0Xc0,
0X00,0X00,0X00,0X00,0X01,0X03,0X07,0X0f
};//音頻顯示頻段3
uchar code table4[]={
0Xc0,0Xc0,0X00,0x00,0X00,0X00,0X00,0X00,
0X00,0X00,0X30,0x30,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X0c,0X0c,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03
}; //音頻顯示頻段4
uchar code table5[]={
0Xc0,0Xc0,0X00,0x00,0X00,0X00,0X00,0X00,
0X18,0X18,0X00,0x00,0X00,0X00,0X00,0X00,
0X03,0X03,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X03,0X03,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03
}; //音頻顯示頻段5
uchar code table6[]={
0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,
0Xc0,0Xc0,0X00,0x00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0xc0,0Xc0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0xc0,0Xc0,
0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X03
}; //音頻顯示頻段6
uchar code table7[]={
0X00,0X00,0X00,0x00,0X00,0X00,0X00,0X01,
0X00,0X00,0X00,0x00,0X00,0X00,0X03,0X03,
0X00,0X00,0X00,0X00,0X00,0X07,0x04,0X04,
0X00,0X00,0X00,0X00,0X0f,0X08,0X08,0X08,
0X00,0X00,0X00,0X1f,0X10,0X10,0X10,0X10,
0X00,0X00,0X2f,0x20,0x20,0X20,0X20,0X20,
0X00,0X7f,0X40,0x40,0x40,0X40,0X40,0X40
}; //音頻顯示頻段7
uchar code table8[]={
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
}; //音頻顯示頻段8
int STC_ADC() //啟動ADC轉換讀取數據后返回值
{
   uchar i;
   ADC_RES=0;
   ADC_RESL=0;
   ADC_CONTR=0x88;
   i=3;
   while(i--);
        while(1)                     
        {
   if(ADC_CONTR&0x10) //判斷A轉換完成      
   break;
         }
   ADC_CONTR=0x80;   //AD電源打開
   return(ADC_RESL+ADC_RES<<2);//返回采集值
}
short sqrt_16( unsigned long M)   
{
   unsigned int N,i;
   unsigned long tmp,ttp;
   if(M==0)            
   return 0;
   N=0;
   tmp=(M>>30);        
   M<<=2;
    if(tmp>1)            
    {
   N++;               
   tmp-=N;
    }
    for(i=15;i>0;i--)   
    {
   N<<=1;           
   tmp<<=2;
   tmp+=(M>>30);  
   ttp=N;
   ttp=(ttp<<1)+1;
   M<<=2;
        if(tmp>=ttp)   
        {
            tmp-=ttp;
            N++;
        }      
    }
    return N;
}
完整程序見附件



音頻光立方程序.rar

3.61 KB, 下載次數: 38, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表