wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LED點陣經驗各種點陣驅動方法講解

  [復制鏈接]
跳轉到指定樓層
#
   首先還是講一下芯片。先講164芯片,它用作行掃描,行為低電平有效(0有效)。      ,這個芯片叫做移位寄存器,根據芯片手冊,把AB相連作為數據輸入端,CLK作為時鐘端,CLK是上升沿有效,來一個時鐘,輸出數據往右移動一次。若上電 時芯片輸出為 1111 1111 1111 1111,16個高電平,上電時AB為0,時鐘信號來了一個上升沿,則AB移入寄存器,這時輸出為0111 1111 1111 1111,這時選中了一行,若AB仍然保持為0,再來一個時鐘信號時,這時輸出為0011 1111 1111 1111,已經移入了兩個0了,選中了兩行,而點陣是逐行掃描顯示的,就是一行一行往下顯示,每次只有一行才會顯示,切換速度加快你就看起來它們是同時顯 示的,上面有兩行選中了所以不行。所以第一個時鐘信號過后即輸出為0111 1111 1111 1111時應該把AB設置為1,下一個時鐘信號來時,由于AB為1了,所以輸出為1011 1111 1111 1111,也就是說第二個時鐘時選中了第二行,以此類推依次選中到16行,當輸出為1111 1111 1111 1110時由于再移動一次最低位的0就移出去了,所以這時要把AB改為0了,再來時鐘時輸出為0111 1111 1111 1111,這就是行掃描。下面將列掃描,列掃描為高電平有效(1有效)。 ,這是595芯片,也是一個移位寄存器,和164的不同是有鎖存功能。鎖存功能意思就是說你的時鐘信號在給,數據也隨著時鐘信號一個一個輸入到寄存器,但 是寄存器的輸出仍然沒有改變,直到鎖存引腳有高脈沖時,已經移位好的數據才會輸出到引腳。若行數據選中的是第1行時,列數據輸出為1110 1110 1110 1110這16個數據時,那么就是隔一個燈亮3個燈。若沒有鎖存引腳那么,每來一個時鐘信號,輸出引腳跟著改變,燈的狀態一直在變化,直到16次之后才會 正常,這樣的話就亂了。


相信很多朋友都喜歡LED點陣屏吧,可是對于初學者而言,可能點陣的驅動會有點困難。現在就此講解一下點陣的驅動方法。上幾個圖看看我做的點陣的效果吧。首先上個單色點陣的吧, ,這個有原理圖,那么就給大家看看原理圖吧, 這個是595芯片,串入并出,作為列輸出,注意這個芯片有鎖存輸出,也就是說只有鎖存腳有脈沖信號時輸出才會改變,再看看行輸出,就是控制選通每一行的, ,這個芯片和595主要的區別是沒有鎖存輸出,為什么行不要鎖存輸出呢?因為每次選通一行,每來一個時鐘信號改變一行,若行為低電平有效,164上電默認 輸出為1,則先移入一個0進去,然后一直移入1,直到16行移完,再循環,這里沒來一個時鐘輸出都會變一下,而如果列輸出也這樣的話,列數據是經過16次 的變化才得到最終的正確數據,而不是一次得到一個正確數據。然后繼續下一個啊,這個是雙色點陣 ,這個其實是紅色、綠色、紅綠結合(橙色),這個我沒原理圖,但是這些都可以做,現在要自己分析了,不要原理圖!對于大部分點陣都是逐行掃描的,行掃描一 般都是A、B、C、D四根線組成的,再經過譯碼形成16根行選通信號線,再加上列數據輸入線、列時鐘線、列鎖存線基本就沒什么線了,再加個OE吧,這個用 來控制亮度的,紅、綠各有自己的數據線,但其他線都是公用的,先查查里面用的芯片,再先選通一行,再寫入一個字節數據,看顯示出來的和你的數據是怎么樣 的。下面展示一下彩色點陣,有三原色的,RGB,掃描方式是分上下兩屏同時16行掃描,數據斷獨立,控制端共用,無原理圖 像這樣的屏幕一般都有ABCD的,前面說了這個是行掃描,16行的,然后LAT(列鎖存),CLK(時鐘),每種顏色有獨立的數據輸入。先講到這里吧,上傳幾個程序供大家參考,不是通用的啊,根據原理圖更改相應程序。有興趣的朋友可以交流交流啊。




前面發的程序是買點陣時送的,個人感覺不好,下面是我自己寫的:
  1. /*--------16*48點陣屏的移動顯示------------*/
  2. /*--------16*48點陣屏的移動顯示------------*/
  3. /*--------16*48點陣屏的移動顯示------------*/
  4. /*--------16*48點陣屏的移動顯示------------*/
  5. /*--------16*48點陣屏的移動顯示------------*/

  6. #include < reg51.h>
  7. #include < intrins.h>      

  8. typedef unsigned char uchar
  9. typedef unsigned int uint

  10. #define DATE_OUT P1                //指定P1口做為輸出

  11. sbit DATA=DATE_OUT^0;                //列數據輸出位      
  12. sbit LCLK=DATE_OUT^1;                //列掃描時鐘位
  13. sbit LAT=DATE_OUT^2;                //列數據鎖存位
  14. sbit AB  =DATE_OUT^3;                //行數據輸出位
  15. sbit HCLK =DATE_OUT^4;                //行掃描時鐘位

  16. uchar DatCnt = 0;

  17. idata unsigned char TempDat[6][16]={
  18. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第1個部分的,即第1個8列*/
  19. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第2個部分的,即第2個8列*/
  20. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第3個部分的,即第3個8列*/
  21. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第4個部分的,即第4個8列*/
  22. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第5個部分的,即第5個8列*/
  23. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第6個部分的,即第6個8列*/
  24. };//緩存數據
  25.                                        
  26. //非常好用的字摸軟件PCtoLCD2002完美版   字模選項:陽碼、行列式、順向
  27. code unsigned char DisplayDat[][16]={
  28. {0xFD,0xFD,0xFD,0xFC,0xC1,0xDD,0xDC,0xD1,0xDD,0xDC,0xC1,0xFD,0xFD,0xFE,0xFF,0xFF},
  29. {0xFF,0xFF,0xFF,0x1F,0xDF,0xDF,0x5F,0xDF,0xDF,0x1F,0xFF,0xFB,0xFB,0x03,0xFF,0xFF},/*"電",6*/
  30. {0xFF,0xFE,0xE1,0xFF,0xFD,0xFE,0xFE,0x80,0xFE,0xFE,0xFE,0xFE,0xF6,0xFA,0xFD,0xFF},
  31. {0xFF,0x0F,0xDF,0xBF,0x7F,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"子",7*/
  32. {0xFF,0xFF,0xFF,0xE0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x81,0xFF,0xFF,0xFF},
  33. {0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0xFF},/*"工",8*/
  34. {0xFF,0xF9,0xC7,0xF7,0xF1,0x87,0xF3,0xE4,0xD7,0xB7,0x76,0xF7,0xF7,0xF4,0xF7,0xFF},
  35. {0xFF,0xCF,0x2F,0x6F,0x4F,0x3F,0xC7,0x3F,0xBF,0x87,0x3F,0xBF,0x83,0x7F,0xFF,0xFF},/*"程",9*/
  36. {0xFF,0xFE,0xE1,0xFD,0xFB,0xF0,0xFD,0xFB,0xF7,0xE0,0xFA,0xF6,0xEE,0xDC,0xFE,0xFF},
  37. {0x9F,0x7F,0xFF,0xBF,0x7F,0xFF,0xBF,0xDF,0x0F,0xEF,0xFF,0x9F,0xE7,0xF7,0xFF,0xFF},/*"系",10*/
  38. {0xFD,0xFD,0xFD,0xFC,0xC1,0xDD,0xDC,0xD1,0xDD,0xDC,0xC1,0xFD,0xFD,0xFE,0xFF,0xFF},
  39. {0xFF,0xFF,0xFF,0x1F,0xDF,0xDF,0x5F,0xDF,0xDF,0x1F,0xFF,0xFB,0xFB,0x03,0xFF,0xFF},/*"電",6*/
  40. {0xFF,0xFE,0xE1,0xFF,0xFD,0xFE,0xFE,0x80,0xFE,0xFE,0xFE,0xFE,0xF6,0xFA,0xFD,0xFF},
  41. {0xFF,0x0F,0xDF,0xBF,0x7F,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"子",7*/
  42. {0xFF,0xFF,0xFF,0xE0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x81,0xFF,0xFF,0xFF},
  43. {0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0xFF},/*"工",8*/
  44. {0xFF,0xF9,0xC7,0xF7,0xF1,0x87,0xF3,0xE4,0xD7,0xB7,0x76,0xF7,0xF7,0xF4,0xF7,0xFF},
  45. {0xFF,0xCF,0x2F,0x6F,0x4F,0x3F,0xC7,0x3F,0xBF,0x87,0x3F,0xBF,0x83,0x7F,0xFF,0xFF},/*"程",9*/
  46. {0xFF,0xFE,0xE1,0xFD,0xFB,0xF0,0xFD,0xFB,0xF7,0xE0,0xFA,0xF6,0xEE,0xDC,0xFE,0xFF},
  47. {0x9F,0x7F,0xFF,0xBF,0x7F,0xFF,0xBF,0xDF,0x0F,0xEF,0xFF,0x9F,0xE7,0xF7,0xFF,0xFF},/*"系",10*/
  48. {0xFD,0xFD,0xFD,0xFC,0xC1,0xDD,0xDC,0xD1,0xDD,0xDC,0xC1,0xFD,0xFD,0xFE,0xFF,0xFF},
  49. {0xFF,0xFF,0xFF,0x1F,0xDF,0xDF,0x5F,0xDF,0xDF,0x1F,0xFF,0xFB,0xFB,0x03,0xFF,0xFF},/*"電",11*/
  50. {0xF7,0xF7,0xF7,0xEF,0xE8,0xCF,0xAC,0x6F,0xEC,0xEF,0xEC,0xED,0xED,0xEC,0xED,0xFF},
  51. {0x7F,0xBF,0xFF,0x83,0x7F,0x8F,0x7F,0x8F,0x7F,0x8F,0x6F,0xEF,0x8F,0x7F,0xFF,0xFF},/*"信",12*/
  52. {0xFF,0xFF,0xFF,0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7,0xFF,0xFF,0xFF},/*"1",13*/
  53. {0xFF,0xFF,0xFF,0xE3,0xDB,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,0xFF},/*"0",14*/
  54. {0xFF,0xFF,0xFF,0xE3,0xDB,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,0xFF},/*"0",15*/
  55. {0xFF,0xFF,0xFF,0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7,0xFF,0xFF,0xFF},/*"1",16*/
  56. {0xFE,0xFE,0xF2,0x8E,0xEE,0xEA,0xE2,0xCA,0xEA,0xEE,0xE9,0xE5,0x9B,0xFA,0xF7,0xFF},
  57. {0xFF,0xFF,0xE3,0x1F,0xDF,0xDF,0xC7,0x9F,0xDF,0xDF,0xDF,0xDF,0xC1,0x3F,0xFF,0xFF},/*"班",17*/
  58. {0xFF,0xFF,0xFD,0xFB,0xFB,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xFB,0xFB,0xFD,0xFE,0xFF},/*"(",0*/
  59. {0xFF,0xF8,0xF7,0xEF,0xDF,0xBF,0xBF,0xBE,0xBE,0xBF,0xBF,0xDF,0xEF,0xF7,0xF8,0xFF},
  60. {0xFF,0x1F,0xEF,0xF7,0xFB,0xFD,0xFD,0x7D,0x7D,0xFD,0xFD,0xFB,0xF7,0xEF,0x1F,0xFF},/*"⊙",1*/
  61. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF},/*"_",2*/
  62. {0xFF,0xF8,0xF7,0xEF,0xDF,0xBF,0xBF,0xBE,0xBE,0xBF,0xBF,0xDF,0xEF,0xF7,0xF8,0xFF},
  63. {0xFF,0x1F,0xEF,0xF7,0xFB,0xFD,0xFD,0x7D,0x7D,0xFD,0xFD,0xFB,0xF7,0xEF,0x1F,0xFF},/*"⊙",3*/
  64. {0xFF,0xFF,0xBF,0xDF,0xDF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xDF,0xDF,0xBF,0x7F,0xFF},/*")",4*/
  65. {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",5*/
  66. };
  67. /*下面函數掃描模式:點陣屏為16*48,我分成了6個16*8的,為了簡便我采用
  68. 16進制寫,6個16*8的如下排列
  69. 1                2                3                4                5                6
  70. 0xff        0xfe        0xfb        0xfc        0xfe        0x55        第1行        這些數據都是我隨便寫的,做個假設
  71. 0xff        0xfe        0xfb        0xfc        0xfe        0x55        第2行
  72. 0xff        0xfe        0xfb        0xfc        0xfe        0x55        第3行
  73. 0xff        0xfe        0xfb        0xfc        0xfe        0x55        第4行
  74. ...                ...                ...                ...                ...                ...                ...
  75. ...                ...                ...                ...                ...                ...                ...
  76. 0xff        0xfe        0xfb        0xfc        0xfe        0x55        第15行
  77. 0xff        0xfe        0xfb        0xfc        0xfe        0x55        第16行
  78. */
  79. void Display(uchar flag)
  80. {
  81.         unsigned char i,j,temp,x;                //定義變量
  82.         DATE_OUT = 0XFF;                                        //置位高電平做準備
  83.         AB=0;                                                        //將列數據位清0,準備移位,行為低電平有效
  84.         for(i=0;i<16;i++)                                //因為有16行,所以要16次循環,依次選中1行
  85.         {                                                                //循環輸出16行數據
  86.                 HCLK=0;                                                //為列移位做準備,列移位為上升沿有效
  87.                 LAT=0;                                                //為行鎖存做準備,行鎖存輸出為上升沿有效
  88.                 for(x=6;x>0;x--)                        //分成了6個部分,所以循環6次,
  89.                 {                                                        //若為16*16的點陣,分成兩個部分就可以了,循環兩次
  90.                         if(flag == 1)
  91.                         {
  92.                                 temp = TempDat[x-1][i];        //讀取點陣數據做輸出,這里用到ia目的是先讀取點陣數據的第二位字節,因一行16個點由兩個字節組成,                                                                        //電路中的移位寄存器最后一位對應最后一列,所以要先輸出一行中的第二個字節數據
  93.                         }
  94.                         if(flag == 0)                        //用于清屏
  95.                                 temp = 0xff;                //由于我的點陣里面用了8550三極管,相當于非門,所以這里高電平為滅
  96.                         for(j=0;j<8;j++)                //移動列數據,移動6個字節后鎖存輸出才打開,因為1行的列數據分成了6個字節
  97.                         {                                       
  98.                                 LCLK = 0;                        //為列移位做準備
  99.                              DATA = temp&0x01;          //將數據低位做輸出,由電路圖可知,移位寄存器的最后一位對應最后一列,因此先移最后一位
  100.                                 temp >>= 1;                  //將數據緩沖右移一位,為下次輸出做準備
  101.                              LCLK = 1;                        //將DATA上的數據移入寄存器
  102.                         }                                                //移入單字節結束
  103.                 }
  104.                 HCLK = 1;                                                //HCLK拉高,列數據移位,相應行拉低,三極管導通輸出電量到相應行點陣管陽極(共陽)
  105.                 LAT = 1;                                                //LAT拉高,將數據鎖存輸出到相應行的點陣發光管顯示,顯示一行后將保持到下一行顯示開始
  106.                 AB = 1;                                                    //列數據位只在第一行時為0,其它時候都為1,當將這個0移入寄存器后,從第一位開始一直移位最后一位,                                                                        //移位的過程,AB就必需是1,這是因為不能同時有兩個及兩個以上0的出現,否則顯示出亂
  107.         }
  108.         j = 64;
  109.         while(j--);                                                //每一行的顯示,保持16個移位時間,因此,最后一行的顯示,也要加入保持時間,補嘗顯示的亮度
  110.         HCLK = 0;                                                        //
  111.         HCLK = 1;                                                        //將最后一行數據移出      
  112. }

  113. void DisplayMoveLeft(uint DatNum,uint MoveSpeed)
  114. {
  115.         uchar NextByte[16];//下半個漢字的數據
  116.         uchar i,j=8,a,b;
  117.       
  118.         for(i=0;i<16;i++)
  119.         {
  120.                 NextByte[i]=DisplayDat[DatCnt][i];
  121.         }
  122.           DatCnt++;
  123.     if((DatNum*2)==DatCnt)DatCnt=0;
  124.           while(j--)//8次移位
  125.           {
  126.                 for(i=0;i<16;i++)//16個字節移位
  127.                 {     
  128.                         for(a=0;a<5;a++)
  129.                         {
  130.                                 TempDat[a][i]<<=1;
  131.                                 if(TempDat[a+1][i]&0x80){TempDat[a][i]+=1;}      
  132.                         }
  133.                         TempDat[5][i]<<=1;
  134.                         if(NextByte[i]&0x80)
  135.                         {        
  136.                                 TempDat[5][i]+=1;
  137.                         }
  138.                         NextByte[i]<<=1;
  139.                 }
  140.                 for(b=0;b<MoveSpeed;b++)
  141.                 {
  142.                         Display(1);
  143.                 }
  144.           }
  145. }
  146. void main(void)  //主入口函數
  147. {      
  148.         Display(0);
  149.         while(1)
  150.         {
  151.                 DisplayMoveLeft(30,12);
  152.         }
  153. }
復制代碼

參考程序.rar

13.45 KB, 下載次數: 120, 下載積分: 黑幣 -5

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

使用道具 舉報

16#
ID:281040 發表于 2023-10-2 10:37 | 只看該作者
32X64的單色LED屏幕 用2個74HC245 一個74HC123D 和 2個74hc138  16個595  8個4953這種室內單元板的原理圖有沒有
回復

使用道具 舉報

15#
ID:1085441 發表于 2023-9-3 17:13 | 只看該作者
5020確定是恒流源輸出,所以不需要串聯電阻來限流,簡化了電路,方便使用。而一片595需要8個電阻,既增加了成本,也增加了電路節點,降低可靠性。

5020.png (189.13 KB, 下載次數: 98)

5020.png
回復

使用道具 舉報

14#
ID:69038 發表于 2023-9-2 09:28 | 只看該作者
cnfloatleaf 發表于 2023-8-7 17:03
不好意思,打錯了幾個字
74164和74595在這是都是串行移位用,建議用74595,因為74595帶輸出使能,可以在串 ...

不一樣的哦!5020是開漏輸出,595是推挽輸出,電路上的差異沒有可比性
回復

使用道具 舉報

13#
ID:1085441 發表于 2023-8-7 17:03 | 只看該作者
不好意思,打錯了幾個字
74164和74595在這是都是串行移位用,建議用74595,因為74595帶輸出使能,可以在串行移位的時候關閉輸出,避免數據移位時顯示內容出現短暫的閃爍。74164就不能避免閃爍。
另,現在都是用5020替代74595,2者功能一樣,但是5020是恒流輸出,不需要外接限流電阻
回復

使用道具 舉報

12#
ID:1085441 發表于 2023-8-7 16:57 | 只看該作者
留住這一刻2014 發表于 2018-9-18 01:39
樓主74HC164和74HC595這兩者有什么區別?

74164和74595在這是都是串行以為用,建議用74595,因為74595帶輸出使能,可以在串行一味的時候關閉輸出,避免數據移位時顯示內容出現短暫的閃爍。75264就不能避免閃爍。
回復

使用道具 舉報

11#
ID:362939 發表于 2023-8-7 11:49 | 只看該作者
顏色是怎么調的,沒想通,樓主能科普一下嗎?
回復

使用道具 舉報

10#
ID:74933 發表于 2019-4-22 11:01 | 只看該作者
不錯,向樓主學習
回復

使用道具 舉報

9#
ID:430234 發表于 2018-12-9 13:20 | 只看該作者
顏色是怎么調的,沒想通,樓主能科普一下嗎
回復

使用道具 舉報

8#
ID:398477 發表于 2018-9-18 01:39 來自觸屏版 | 只看該作者
樓主74HC164和74HC595這兩者有什么區別?
回復

使用道具 舉報

7#
ID:395607 發表于 2018-9-10 19:26 | 只看該作者
顏色是怎么調的,沒想通,樓主能科普一下嗎
回復

使用道具 舉報

6#
ID:359702 發表于 2018-8-26 01:47 來自觸屏版 | 只看該作者
顏色是怎么調的,沒想通,樓主能科普一下嗎
回復

使用道具 舉報

5#
ID:389200 發表于 2018-8-23 11:22 | 只看該作者
東東不錯滿意
回復

使用道具 舉報

地板
ID:33522 發表于 2018-7-14 21:21 | 只看該作者
不錯,向樓主學習
回復

使用道具 舉報

板凳
ID:309376 發表于 2018-6-4 22:22 | 只看該作者
解釋的不錯,謝謝樓主
回復

使用道具 舉報

沙發
ID:168401 發表于 2017-3-7 21:28 | 只看該作者
試試看看,效果如何
回復

使用道具 舉報

樓主
ID:140725 發表于 2017-3-4 01:57 | 只看該作者
以前用MSP430G2553做的音頻點陣,fft的頭文件: fft.zip (1.73 KB, 下載次數: 40)

  1. /*********************************************************************
  2.                          快速福利葉變換C函數
  3. 函數簡介:此函數是通用的快速傅里葉變換C語言函數,移植性強,以下部分不依
  4.           賴硬件。此函數采用聯合體的形式表示一個復數,輸入為自然順序的復
  5.           數(輸入實數是可令復數虛部為0),輸出為經過FFT變換的自然順序的
  6.           復數
  7. 使用說明:使用此函數只需更改宏定義FFT_N的值即可實現點數的改變,FFT_N的
  8.           應該為2的N次方,不滿足此條件時應在后面補0
  9. 函數調用:FFT(s);
  10. 時    間:2010-2-20
  11. 版    本:Ver1.0
  12. 參考文獻:   
  13.       
  14. **********************************************************************/
  15. #include<math.h>
  16. #include <stdio.h>


  17. #define PI 3.1415926535897932384626433832795028841971               //定義圓周率值
  18. #define FFT_N 16                                                   //定義福利葉變換的點數

  19. typedef struct compx
  20. {
  21.         double real,imag;
  22. }compx;                                    //定義一個復數結構
  23. struct compx s[FFT_N];                                              //FFT輸入和輸出:從S[1]開始存放,根據大小自己定義


  24. /*******************************************************************
  25. 函數原型:struct compx EE(struct compx b1,struct compx b2)  
  26. 函數功能:對兩個復數進行乘法運算
  27. 輸入參數:兩個以聯合體定義的復數a,b
  28. 輸出參數:a和b的乘積,以聯合體的形式輸出
  29. *******************************************************************/
  30. compx  EE(struct compx *a,struct compx *b)      
  31. {
  32. compx c;
  33. c.real=a->real*b->real-a->imag*b->imag;
  34. c.imag=a->real*b->imag+a->imag*b->real;
  35. return c;
  36. }

  37. /*****************************************************************
  38. 函數原型:void FFT(struct compx *xin,int N)
  39. 函數功能:對輸入的復數組進行快速傅里葉變換(FFT)
  40. 輸入參數:*xin復數結構體組的首地址指針,struct型
  41. *****************************************************************/
  42. void FFT(struct compx *xin)
  43. {
  44.   int f,m,nv2,nm1,i,k,l,j=0;
  45.   struct compx u,w,t;
  46.    
  47.    nv2=FFT_N/2;                  //變址運算,即把自然順序變成倒位序,采用雷德算法
  48.    nm1=FFT_N-1;  
  49.    for(i=0;i<nm1;i++)        
  50.    {
  51.     if(i<j)                    //如果i<j,即進行變址
  52.      {
  53.       t=xin[j];           
  54.       xin[j]=xin[i];
  55.       xin[i]=t;
  56.      }
  57.     k=nv2;                    //求j的下一個倒位序
  58.     while(k<=j)               //如果k<=j,表示j的最高位為1   
  59.      {           
  60.       j=j-k;                 //把最高位變成0
  61.       k=k/2;                 //k/2,比較次高位,依次類推,逐個比較,直到某個位為0
  62.      }
  63.    j=j+k;                   //把0改為1
  64.   }
  65.                         
  66.   {
  67.    int le,lei,ip;                            //FFT運算核,使用蝶形運算完成FFT運算
  68.     f=FFT_N;
  69.    for(l=1;(f=f/2)!=1;l++)                  //計算l的值,即計算蝶形級數
  70.            ;
  71.   for(m=1;m<=l;m++)                         // 控制蝶形結級數
  72.    {                                        //m表示第m級蝶形,l為蝶形級總數l=log(2)N
  73.     le=2<<(m-1);                            //le蝶形結距離,即第m級蝶形的蝶形結相距le點
  74.     lei=le/2;                               //同一蝶形結中參加運算的兩點的距離
  75.     u.real=1.0;                             //u為蝶形結運算系數,初始值為1
  76.     u.imag=0.0;
  77.     w.real=cos(PI/lei);                     //w為系數商,即當前系數與前一個系數的商
  78.     w.imag=-sin(PI/lei);
  79.     for(j=0;j<=lei-1;j++)                   //控制計算不同種蝶形結,即計算系數不同的蝶形結
  80.      {
  81.       for(i=j;i<=FFT_N-1;i=i+le)            //控制同一蝶形結運算,即計算系數相同蝶形結
  82.        {
  83.         ip=i+lei;                           //i,ip分別表示參加蝶形運算的兩個節點
  84.         t=EE(&xin[ip],&u);                    //蝶形運算,詳見公式
  85.         xin[ip].real=xin[i].real-t.real;
  86.         xin[ip].imag=xin[i].imag-t.imag;
  87.         xin[i].real=xin[i].real+t.real;
  88.         xin[i].imag=xin[i].imag+t.imag;
  89.        }
  90.       u=EE(&u,&w);                           //改變系數,進行下一個蝶形運算
  91.      }
  92.    }
  93.   }
  94.   
  95. }
復制代碼



回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
久久亚洲私人国产精品va媚药| 亚洲欧美在线高清| 欧美14一18处毛片| 国产色在线播放| 久久久久亚洲av无码专区体验| 日韩成人手机在线| 欧美高清在线播放| 一本在线高清不卡dvd| 日本特黄久久久高潮| 欧美91在线|欧美| 在线黄色.com| 欧美日韩不卡中文字幕在线| 国产真实夫妇交换视频| 一道本在线免费视频| 成人黄色在线免费观看| 中文字幕日韩欧美在线视频| 午夜久久电影网| 国产在线精品免费| 资源视频在线播放免费| 国产一区二区在线视频观看| 风间由美一二三区av片| 久久久久久av无码免费网站下载| 久久国产精品久久久久久久久久| 岛国av一区二区| 成人免费电影视频| 尹人成人综合网| 午夜久久中文| 午夜cr在线观看高清在线视频完整版| 777琪琪电影午夜理伦片| 国产精品7777777| 双性尿奴穿贞c带憋尿| 97视频久久久| 欧美成人自拍视频| 精品少妇一区二区三区| 国产精品久久久久婷婷二区次| 六月婷婷一区| 成人亚洲欧美激情在线电影| 中文字幕乱码视频| 天美传媒免费在线观看| 性高潮免费视频| 美女网站视频黄色| 国产成人久久婷婷精品流白浆| 2021狠狠干| 久久久99爱| 成人www视频在线观看| 欧美亚洲另类制服自拍| 欧美xxxx做受欧美| 在线一区二区日韩| 亚洲乱码av中文一区二区| 日韩欧美一级二级三级| 欧美美女bb生活片| 欧美人与z0zoxxxx视频| 欧洲精品一区二区| 日韩欧美第一页| 亚洲午夜免费福利视频| 亚洲精品ww久久久久久p站| 中文字幕av一区二区三区| 久久蜜臀中文字幕| 久久亚区不卡日本| 久久精品欧美日韩精品 | 日本黄色激情视频| 永久免费毛片在线观看| 老司机福利在线观看| 精品人妻无码一区二区三区换脸| 久久亚洲AV成人无码国产野外| 波多野结衣一二三区| 亚洲激情 欧美| 国产精品无码永久免费不卡| 人妻少妇精品视频一区二区三区| 偷拍女澡堂一区二区三区| 真人bbbbbbbbb毛片| 日韩人妻无码一区二区三区| 扒开jk护士狂揉免费| 国产jjizz一区二区三区视频| 91视频免费观看网站| 亚洲色图日韩精品| 青青草原免费观看| 日本视频一二三区中文字幕| 亚洲精品极品少妇16p| av在线亚洲天堂| 91精品国产色综合久久久蜜香臀| 仙踪林久久久久久久999| 成人精品一区二区三区电影| 国模雨婷捆绑高清在线| 精品麻豆一区二区三区| 中文在线手机av| av软件在线观看| 中文字幕在线三区| 岛国av在线播放| 日本综合久久| 午夜久久av| 激情婷婷综合| 亚洲手机在线| 久久精品二区亚洲w码| 国产成人精品免费网站| 在线a人片免费观看视频| 天堂av在线7| 91社区在线观看| 秋霞在线视频| 日韩大陆av| 国产精品亚洲人成在99www| 综合激情在线| 美腿丝袜亚洲综合| 久久久九九九九| 精品久久久久久久久中文字幕 | 成人av在线观| 久久婷婷久久一区二区三区| 亚洲视频在线一区二区| 色哟哟国产精品免费观看| 日韩三级av在线播放| 一区二区三区天堂av | 久草视频福利在线| 精品丰满少妇一区二区三区| 亚洲综合久久网| 亚洲成a人片77777kkkk| freexxxx性特大另类| 免费黄色片在线观看| 国产美女高潮在线观看| 精品淫伦v久久水蜜桃| 中文字幕一区二区三区乱码图片 | 免费一级全黄少妇性色生活片| 久久精品视频1| 影音先锋在线中文| 插菊花综合1| 麻豆网站在线| 亚洲91网站| 欧美777四色影| 国内精品久久久久影院薰衣草| 91蜜桃在线观看| 亚洲一二三四区| 精品电影一区二区| 97免费视频在线| 精品视频在线免费看| 亚洲国产日韩一区| 81精品国产乱码久久久久久| 亚洲一区二区久久| 国产精品国语对白| 午夜精品一区二区三区四区| 日日干夜夜操s8| 久久精品第一页| 无码精品一区二区三区在线| 美女xx视频| cao在线视频| 久久免费大视频| 成人网在线免费视频| 日韩欧美精品在线观看| 久热国产精品视频| 欧美一二三四五区| 中文字幕永久免费| 伊人免费在线观看| 99.玖玖.com| 高清av不卡| 激情综合自拍| 欧美h版在线观看| 1000部精品久久久久久久久| 国产日韩欧美麻豆| 亚洲国产精品va在线| 成人国产精品一区| www.欧美日本| 中文字幕五月天| 中文字幕导航| 日本激情视频在线观看| av中字幕久久| 久久久www免费人成精品| 精品精品欲导航| 91国产丝袜在线放| 日韩a一级欧美一级| 又骚又黄的视频| 日本夜爽爽一二区| 久久av网站| 懂色av一区二区三区免费观看| 欧美麻豆精品久久久久久| 青青草原成人在线视频| 加勒比成人在线| 国产网址在线观看| 伊人伊人av电影| 天堂综合在线播放| 国产乱码一区二区三区| 91精品国产综合久久蜜臀| 91精品久久久久久久久青青| 丝袜制服一区二区三区| 黄色污污视频软件| 黄页网址大全在线播放| 国产精品18hdxxxⅹ在线| 成人av电影在线| 亚洲欧美精品在线| 日韩国产高清一区| 国产一二三av| 一个人看的www在线免费观看| 青草在线视频在线观看| 制服诱惑一区二区| 精品人伦一区二区三区蜜桃免费| 久久久久久久久91| 欧美精品色婷婷五月综合| 无码人妻久久一区二区三区不卡| 成人精品3d动漫| 欧美五码在线| 中文字幕不卡在线观看| 成人444kkkk在线观看| 欧美中文字幕视频| 亚洲色欲综合一区二区三区| 中文字幕一级片| 青青久在线视频| 亚洲精品99| 色综合久久综合| eeuss一区二区三区| 在线小视频你懂的| 免费观看h电影在线观看| 电影中文字幕一区二区| 成人v精品蜜桃久久一区| 中文字幕视频在线免费欧美日韩综合在线看 | 成人在线免费在线观看| 亚洲特级黄色片| 成年人在线视频免费观看| 亚洲欧美伊人| 欧美综合色免费| 国产伦精品一区| 青青操国产视频| 男女啪啪免费视频网站| 怡春院在线视频| 最新国产在线拍揄自揄视频| 日韩国产在线观看| 亚洲国产日韩欧美在线动漫| 中文字幕成人一区| av大片在线免费观看| 天堂影院在线| 亚欧成人精品| 日韩成人av一区| 欧美不卡在线播放| 少妇精品视频一区二区| 中文字幕在线免费观看视频| 福利一区二区在线| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲a级黄色片| 久久性生活视频| 久久中文字幕一区二区| 国产精品色哟哟| 国产精品一区电影| 少妇一级黄色片| 2023欧美最顶级a∨艳星| 欧美日本在线| 亚洲电影免费观看高清完整版在线观看 | 久久精品国产69国产精品亚洲 | 一个人看的www片免费高清视频 | 日韩一区二区在线观看| av磁力番号网| 韩国中文字幕hd久久精品| 亚洲色图官网| 日本一二三不卡| 成人免费视频网址| 久久久国产精华液| 午夜在线视频| 国产成+人+日韩+欧美+亚洲| 性久久久久久久久| 国产一区二区三区无遮挡| 国产又大又粗又爽| 大香伊人久久| 国产日本欧洲亚洲| 18成人在线| 日韩国产成人在线| 精精国产xxxx视频在线播放| 欧美激情一区二区三区在线| 91精品天堂| 神马久久久久久久| 丁香高清在线观看完整电影视频 | 国产精品免费视频久久久| 成人精品一二三区| 国产中文在线视频| 成人免费高清视频| 亚洲最大av在线| 精品一区二区无码| 欧美日韩视频网站| 亚洲午夜三级在线| 宅男av一区二区三区| 亚州av在线播放| 奇米色欧美一区二区三区| 日韩一级片在线播放| 国产婷婷色综合av蜜臀av| 伊人影院在线观看视频| 日本18视频网站| 久久国产日韩欧美精品| 日韩美女福利视频| 国产又爽又黄的视频| 免费观看成人性生生活片 | 第四色亚洲色图| 久久国产精品久久w女人spa| 欧美成人免费观看| 一级片一级片一级片| 女同视频在线观看| 一区二区激情视频| bt天堂新版中文在线地址| 国产成人亚洲精品乱码在线观看| 伊人久久大香线| 久久亚洲国产成人| 欧美成人黄色网| 在线高清av| 在线亚洲+欧美+日本专区| 99色精品视频| 午夜影院观看视频免费| 岛国精品在线播放| 欧洲视频一区二区三区| 欧美精品videossex变态| 激情成人亚洲| 国内精品400部情侣激情| 日韩女同强女同hd| 欧洲亚洲精品| 精品乱人伦一区二区三区| 成人一区二区三区仙踪林| 精品成人一区二区三区免费视频| 国产日韩亚洲欧美综合| 永久久久久久| 免费一看一级毛片| 激情丁香综合五月| 精品国产乱码久久久久软件| 蜜桃色永久入口| 18成人免费观看视频| 国产经典一区二区| 精品人妻一区二区三区蜜桃| 精品视频久久| 久久6精品影院| 中文字幕国产在线观看| gogo人体一区| 中文字幕日韩在线播放| 国产 日韩 欧美 在线| 成人精品毛片| 久久中文字幕国产| 黄色av一级片| 久久99国内| 久久久亚洲成人| 亚洲欧美视频二区| 青春草在线观看 | 国产精品入口66mio| 国产专区欧美专区| 午夜国产在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 国产国语刺激对白av不卡| 蜜臀久久久久久999| 伊人激情综合| 成人av影视在线| 天堂在线观看| 成人一级黄色片| 日本美女爱爱视频| 五月天丁香婷| 亚洲已满18点击进入久久| xxxx在线免费观看| 色爱综合区网| 日韩三级电影网址| 国产性猛交普通话对白| 小说区图片区色综合区| 91精品国产91久久久久久吃药| 性欧美一区二区三区| 一级成人国产| 欧美日韩大片一区二区三区| www.嫩草免费在线观看| 久久久亚洲精品石原莉奈| 黄色av网址在线播放| av免费观看一区二区| 国产精品无遮挡| 九色91av视频| 天天干免费视频| 美女视频网站久久| youjizz.com亚洲| 三级在线播放| 欧美色窝79yyyycom| 天堂网avav| 国产精品美女久久久久久不卡 | 337p日本欧洲亚洲大胆精品| av成人免费网站| 少妇精品久久久| 成人福利网站在线观看| 中国女人一级毛片| 国产欧美日韩在线| 欧美高清精品一区二区| 日韩精品专区| 久久久久北条麻妃免费看| 亚洲狼人综合网| 蜜芽一区二区三区| 青青视频免费在线| 黄网站免费在线播放| 亚洲电影免费观看高清完整版在线观看 | **毛片在线网站| 欧美日韩在线免费观看| 刘亦菲国产毛片bd| 少妇精品久久久一区二区| 99热在线播放| 嫩草嫩草嫩草| 欧美欧美欧美欧美| 特黄视频免费看| 一本综合久久| 久久精品国产精品亚洲精品色| 高清性色生活片在线观看| 日韩片之四级片| 中文字幕+乱码+中文| 久久午夜精品| 欧美一级在线看| 性感美女一区二区在线观看| 欧美国产激情18| 成人精品一区二区不卡视频| 亚洲欧美在线另类| 国产jizz18女人高潮|