久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: LED點陣經驗各種點陣驅動方法講解 [打印本頁]

作者: 51hei學習技術中    時間: 2017-3-4 01:56
標題: 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


作者: 51hei學習技術中    時間: 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. }
復制代碼




作者: wanggengniu    時間: 2017-3-7 21:28
試試看看,效果如何
作者: 木佑111    時間: 2018-6-4 22:22
解釋的不錯,謝謝樓主
作者: wwzgch    時間: 2018-7-14 21:21
不錯,向樓主學習
作者: scybyq    時間: 2018-8-23 11:22
東東不錯滿意
作者: 960035433    時間: 2018-8-26 01:47
顏色是怎么調的,沒想通,樓主能科普一下嗎
作者: sanfu123    時間: 2018-9-10 19:26
顏色是怎么調的,沒想通,樓主能科普一下嗎
作者: 留住這一刻2014    時間: 2018-9-18 01:39
樓主74HC164和74HC595這兩者有什么區別?
作者: monthyasha    時間: 2018-12-9 13:20
顏色是怎么調的,沒想通,樓主能科普一下嗎
作者: moonchen    時間: 2019-4-22 11:01
不錯,向樓主學習
作者: sc_gaolao    時間: 2023-8-7 11:49
顏色是怎么調的,沒想通,樓主能科普一下嗎?
作者: cnfloatleaf    時間: 2023-8-7 16:57
留住這一刻2014 發表于 2018-9-18 01:39
樓主74HC164和74HC595這兩者有什么區別?

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

不一樣的哦!5020是開漏輸出,595是推挽輸出,電路上的差異沒有可比性
作者: cnfloatleaf    時間: 2023-9-3 17:13
5020確定是恒流源輸出,所以不需要串聯電阻來限流,簡化了電路,方便使用。而一片595需要8個電阻,既增加了成本,也增加了電路節點,降低可靠性。

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

5020.png

作者: 科林科技    時間: 2023-10-2 10:37
32X64的單色LED屏幕 用2個74HC245 一個74HC123D 和 2個74hc138  16個595  8個4953這種室內單元板的原理圖有沒有





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人国产午夜在线观看 | 黄色片在线免费看 | 精品视频www | 成年人在线视频 | 色在线看 | 成人精品一区 | 成人99 | 一级片在线观看 | 亚洲精品一区二区网址 | 亚洲视频三 | 日本黄色一级片视频 | 国产精品小视频在线观看 | 狠狠涩 | 国产精品久久久久无码av | 午夜精品久久久久久久99黑人 | 国产精品av久久久久久久久久 | 国产欧美在线一区二区 | 亚洲精品电影网在线观看 | 亚洲免费视频在线观看 | www亚洲成人 | 色性av| 国产特一级黄色片 | 最近最新中文字幕 | 日韩精品在线一区 | 中文在线www | 九九99精品 | 日韩av在线中文字幕 | 亚洲国产精品成人综合久久久 | 亚洲精品成人免费 | 亚洲精品乱码8久久久久久日本 | 美女逼网站 | 欧美激情欧美激情在线五月 | 99精品免费久久久久久久久日本 | 日韩视频免费在线 | 亚洲欧美一区二区三区情侣bbw | 国产色在线| 色视频网站| 成人精品毛片国产亚洲av十九禁 | 成人精品一区二区三区中文字幕 | 国产色| 亚洲精品视频在线观看免费 |