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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

音樂頻譜電路原理圖與源程序分享

  [復制鏈接]
跳轉到指定樓層
樓主
一個學習單片機的程序及電路
原理圖上畫的是16 x 8的,實物是16 x 12的,另外加的4行LED分別由由P1.6、P1.7、P5.4和P5.5控制。

完整的資料下載:
音樂頻譜.zip (476.95 KB, 下載次數: 282)


音樂頻譜電路圖:


音樂頻譜源程序:
  1. /*-----------------------------------------------------------------------*/
  2. /*                            單片機音樂頻譜                             */
  3. /*                            系統時鐘33MHz                              */
  4. /*-----------------------------------------------------------------------*/

  5. /*-----------------------------宏定義-----------------------------------*/
  6. #include<stc15f2k60s2.h>                    //stc15系列1T單片機
  7. #define ADC_CHANNEL 0x01                    //AD轉換通道P1.0
  8. #define ADC_POWER 0x80                                                //ADC電源控制位
  9. #define ADC_SPEED 0x60                                                //90個時鐘周期
  10. #define ADC_START 0x08                                                //ADC啟動控制位
  11. #define ADC_FLAG 0x10                                                //ADC完成標志位
  12. #define SAMPLE_NUM 64                       //取64點FFT算法
  13. #define NUM_2_LOG 6                                                        //2的6次方
  14. #define FFT_OUT_MIN 1                       //FFT運算最小值
  15. #define LED_C1_8 P2                         //LED1~8列
  16. #define LED_C9_16 P3                        //LED9~16列
  17. #define LED_R1_8 P0                         //LED1~8行
  18. /***************************引腳定義*****************************/
  19. sbit LED_R1 = P0^0;                                                        //LED1~8行
  20. sbit LED_R2 = P0^1;
  21. sbit LED_R3 = P0^2;
  22. sbit LED_R4 = P0^3;
  23. sbit LED_R5 = P0^4;
  24. sbit LED_R6 = P0^5;
  25. sbit LED_R7 = P0^6;
  26. sbit LED_R8 = P0^7;
  27. sbit LED_R9 = P1^6;                                                    //LED第9行
  28. sbit LED_R10 = P1^7;                                                //LED第10行
  29. sbit LED_R11 = P5^4;                                                //LED第11行
  30. sbit LED_R12 = P5^5;                                                //LED第12行
  31. sbit SWITCH = P4^5;

  32. /*----------------------------變量表----------------------------*/
  33. unsigned char code BIT_RESORT[SAMPLE_NUM] = { 0, 32, 16, 48, 8, 40, 24, 56,4, 36, 20, 52, 12, 44, 28, 60,          //比特逆序重排
  34.                                                                             2, 34, 18, 50, 10, 42, 26, 58, 6, 38, 22, 54, 14, 46, 30, 62,
  35.                                                                             1, 33, 17, 49, 9, 41, 25, 57,5, 37, 21, 53, 13, 45, 29, 61,
  36.                                                                              3, 35, 19, 51, 11, 43, 27, 59,7, 39, 23, 55, 15, 47, 31, 63};
  37.        
  38. char code SIN_TAB[SAMPLE_NUM] = { 0 ,12 ,25 ,37 ,49 ,60 ,71 ,81 ,90 ,98 ,106 ,112 ,117 ,122 ,125 ,126 ,              //正弦表
  39.                                                                    127 ,126 ,125 ,122 ,117 ,112 ,106 ,98 ,90 ,81 ,71 ,60 ,49 ,37 ,25 ,12 ,
  40.                                                                    0 ,-12 ,-25 ,-37 ,-49 ,-60 ,-71 ,-81 ,-90 ,-98 ,-106 ,-112 ,-117 ,-122 ,-125 ,-126 ,
  41.                                                                    -127 ,-126 ,-125 ,-122 ,-117 ,-112 ,-106 ,-98 ,-90 ,-81 ,-71 ,-60 ,-49 ,-37 ,-25 ,-12  };
  42.                                  
  43. char code COS_TAB[SAMPLE_NUM] = {127 ,126 ,125 ,122 ,117 ,112 ,106 ,98 ,90 ,81 ,71 ,60 ,49 ,37 ,25 ,12 ,            //余弦表
  44.                                                                   0 ,-12 ,-25 ,-37 ,-49 ,-60 ,-71 ,-81 ,-90 ,-98 ,-106 ,-112 ,-117 ,-122 ,-125 ,-126 ,
  45.                                                                   -127 ,-126 ,-125 ,-122 ,-117 ,-112 ,-106 ,-98 ,-90 ,-81 ,-71 ,-60 ,-49 ,-37 ,-25 ,-12 ,
  46.                                                                   0 ,12 ,25 ,37 ,49 ,60 ,71 ,81 ,90 ,98 ,106 ,112 ,117 ,122 ,125 ,126 };

  47. unsigned char LED_NUM[] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};          //led顯示數目
  48. unsigned char AMP, AMP_TAB[16];                      //頻譜幅值,幅值表
  49. unsigned char DISP_NUM;                              //顯示次數
  50. unsigned char KEEP, KEEP_NUM;                                                 //自動增益選擇
  51. int xdata FFT_REAL[SAMPLE_NUM];                      //FFT運算結果實部
  52. int xdata FFT_IMAGE[SAMPLE_NUM];                     //FFT運算結果虛部
  53. bit SWITCH_ON;
  54. /**************************************************************
  55. *名                稱:delay
  56. *功                能:微秒級延時
  57. **************************************************************/
  58. void Delay(unsigned int i)
  59. {
  60.         while(i--);
  61. }
  62. /**************************************************************
  63. *名                稱:Delay_ms
  64. *功                能:毫秒級延時
  65. **************************************************************/
  66. void Delay_ms(unsigned int x)
  67. {
  68.         unsigned int i, j;
  69.         for(i = 0; i < x; i++)
  70.                 for(j = 0; j < 500; j++);
  71. }
  72. /**************************************************************
  73. *名                稱:IOInit
  74. *功                能:IO端口初始化
  75. **************************************************************/
  76. void IOInit(void)
  77. {
  78.         P1M0 = 0x00;                        //高阻輸入
  79.         P1M1 = 0x01;
  80.         P1ASF = 0x01;                        //設為AD轉換
  81. }
  82. /**************************************************************
  83. *名                稱:Timer0Init
  84. *功                能:定時器0初始化100us定時
  85. **************************************************************/
  86. void TimerInit(void)                //100微秒@33.000MHz
  87. {
  88.         AUXR = 0XC0;                        //定時器0-1T,定時器1-12T
  89.         TMOD = 0X00;                        //定時器0/1-方式0-16位自動重裝
  90.         TL0 = 0X16;                                //定時器0-定時170us-顯示幅值
  91.         TH0 = 0Xea;                               
  92.         TL1 = 0X1C;                                //定時器1-定時1ms-檢測開關狀態
  93.         TH1 = 0XF3;
  94.         TR0=1;
  95.         TR1 = 1;
  96. }

  97. /**********************************************************
  98. *名                稱:Display
  99. *功                能:顯示幅值
  100. **********************************************************/
  101. void Display(void)
  102. {
  103.         DISP_NUM++;
  104.         if(DISP_NUM == 17)
  105.                 DISP_NUM = 1;
  106.         LED_R1_8 = 0X00; LED_R9 = 0; LED_R10 = 0; LED_R11 = 0; LED_R12 = 0;                        //顯示前先關閉
  107.         switch(DISP_NUM)                                                                                           //逐列顯示
  108.         {
  109.                 case 1: AMP = AMP_TAB[0]; LED_C1_8 = 0X01; LED_C9_16 = 0x00; break;
  110.                 case 2: AMP = AMP_TAB[1]; LED_C1_8 = 0X02; LED_C9_16 = 0x00; break;
  111.                 case 3: AMP = AMP_TAB[2]; LED_C1_8 = 0X04; LED_C9_16 = 0x00; break;
  112.                 case 4: AMP = AMP_TAB[3]; LED_C1_8 = 0X08; LED_C9_16 = 0x00; break;
  113.                 case 5: AMP = AMP_TAB[4]; LED_C1_8 = 0X10; LED_C9_16 = 0x00; break;
  114.                 case 6: AMP = AMP_TAB[5]; LED_C1_8 = 0X20; LED_C9_16 = 0x00; break;
  115.                 case 7: AMP = AMP_TAB[6]; LED_C1_8 = 0X40; LED_C9_16 = 0x00; break;
  116.                 case 8: AMP = AMP_TAB[7]; LED_C1_8 = 0X80; LED_C9_16 = 0x00; break;
  117.                 case 9: AMP = AMP_TAB[8]; LED_C1_8 = 0X00; LED_C9_16 = 0x01; break;
  118.                 case 10: AMP = AMP_TAB[9]; LED_C1_8 = 0X00; LED_C9_16 = 0x02; break;
  119.                 case 11: AMP = AMP_TAB[10]; LED_C1_8 = 0X00; LED_C9_16 = 0x04; break;
  120.                 case 12: AMP = AMP_TAB[11]; LED_C1_8 = 0X00; LED_C9_16 = 0x08; break;
  121.                 case 13: AMP = AMP_TAB[12]; LED_C1_8 = 0X00; LED_C9_16 = 0x10; break;
  122.                 case 14: AMP = AMP_TAB[13]; LED_C1_8 = 0X00; LED_C9_16 = 0x20; break;
  123.                 case 15: AMP = AMP_TAB[14]; LED_C1_8 = 0X00; LED_C9_16 = 0x40; break;
  124.                 case 16: AMP = AMP_TAB[15]; LED_C1_8 = 0X00; LED_C9_16 = 0x80; break;
  125.         }
  126.         if(AMP <= 8)
  127.         {
  128.                 LED_R1_8 = LED_NUM[AMP];
  129.                 LED_R9 = 0;
  130.                 LED_R10 = 0;
  131.                 LED_R11 = 0;
  132.                 LED_R12 = 0;
  133.         }
  134.         if(AMP == 9)
  135.         {
  136.                 LED_R1_8 = 0XFF;
  137.                 LED_R9 = 1;
  138.                 LED_R10 = 0;
  139.                 LED_R11 = 0;
  140.                 LED_R12 = 0;
  141.         }
  142.         if(AMP == 10)
  143.         {
  144.                 LED_R1_8 = 0XFF;
  145.                 LED_R9 = 1;
  146.                 LED_R10 = 1;
  147.                 LED_R11 = 0;
  148.                 LED_R12 = 0;
  149.         }
  150.         if(AMP == 11)
  151.         {
  152.                 LED_R1_8 = 0XFF;
  153.                 LED_R9 = 1;
  154.                 LED_R10 = 1;
  155.                 LED_R11 = 1;
  156.                 LED_R12 = 0;
  157.         }
  158.         if(AMP == 12)
  159.         {
  160.                 LED_R1_8 = 0XFF;
  161.                 LED_R9 = 1;
  162.                 LED_R10 = 1;
  163.                 LED_R11 = 1;
  164.                 LED_R12 = 1;
  165.         }
  166. //         unsigned char i;
  167. //         LED_C1_8 = 0X01; LED_C9_16 = 0X00;
  168. //         for(i = 0; i < 8; i++)
  169. //         {
  170. //                 if(LED_NUM[AMP_TAB[i]] <= 8)
  171. //                 {
  172. //                         LED_R1_8 = LED_NUM[AMP_TAB[i]];
  173. //                         LED_R9 = 0; LED_R10 = 0; LED_R11 = 0; LED_R12 = 0;
  174. //                 }
  175. //                 if(LED_NUM[AMP_TAB[i]] == 9)
  176. //                 {
  177. //                         LED_R1_8 = 0XFF;
  178. //                         LED_R9 = 1; LED_R10 = 0; LED_R11 = 0; LED_R12 = 0;
  179. //                 }
  180. //                 if(LED_NUM[AMP_TAB[i]] == 10)
  181. //                 {
  182. //                         LED_R1_8 = 0XFF;
  183. //                         LED_R9 = 1; LED_R10 = 1; LED_R11 = 0; LED_R12 = 0;
  184. //                 }
  185. //                 if(LED_NUM[AMP_TAB[i]] == 11)
  186. //                 {
  187. //                         LED_R1_8 = 0XFF;
  188. //                         LED_R9 = 1; LED_R10 = 1; LED_R11 = 1; LED_R12 = 0;
  189. //                 }
  190. //                 if(LED_NUM[AMP_TAB[i]] == 12)
  191. //                 {
  192. //                         LED_R1_8 = 0XFF;
  193. //                         LED_R9 = 1; LED_R10 = 1; LED_R11 = 1; LED_R12 = 1;
  194. //                 }
  195. //                 Delay(2000);
  196. //                 LED_C1_8 <<= 1;
  197. //         }
  198. //         LED_C1_8 = 0X00; LED_C9_16 = 0X01;
  199. //         for(i = 0; i < 8; i++)
  200. //         {
  201. //                 if(LED_NUM[AMP_TAB[i]] <= 8)
  202. //                 {
  203. //                         LED_R1_8 = LED_NUM[AMP_TAB[i]];
  204. //                         LED_R9 = 0; LED_R10 = 0; LED_R11 = 0; LED_R12 = 0;
  205. //                 }
  206. //                 if(LED_NUM[AMP_TAB[i]] == 9)
  207. //                 {
  208. //                         LED_R1_8 = 0XFF;
  209. //                         LED_R9 = 1; LED_R10 = 0; LED_R11 = 0; LED_R12 = 0;
  210. //                 }
  211. //                 if(LED_NUM[AMP_TAB[i]] == 10)
  212. //                 {
  213. //                         LED_R1_8 = 0XFF;
  214. //                         LED_R9 = 1; LED_R10 = 1; LED_R11 = 0; LED_R12 = 0;
  215. //                 }
  216. //                 if(LED_NUM[AMP_TAB[i]] == 11)
  217. //                 {
  218. //                         LED_R1_8 = 0XFF;
  219. //                         LED_R9 = 1; LED_R10 = 1; LED_R11 = 1; LED_R12 = 0;
  220. //                 }
  221. //                 if(LED_NUM[AMP_TAB[i]] == 12)
  222. //                 {
  223. //                         LED_R1_8 = 0XFF;
  224. //                         LED_R9 = 1; LED_R10 = 1; LED_R11 = 1; LED_R12 = 1;
  225. //                 }
  226. //                 Delay(2000);
  227. //                 LED_C9_16 <<= 1;
  228. //         }
  229. }

  230. /************************************************
  231. *名                稱:ReadADC
  232. *功                能:讀取AD轉換結果
  233. ************************************************/
  234. unsigned char ReadADC(void)
  235. {
  236.         ADC_CONTR = ADC_POWER + ADC_START;           //啟動轉換
  237.         Delay(50);                                   
  238.         while(!(ADC_CONTR & ADC_FLAG));              //等待轉換結束
  239.         ADC_CONTR = ADC_POWER;
  240.         return (ADC_RES << 2 + ADC_RESL);
  241. }
  242. /************************************************
  243. *名                稱:sqrt
  244. *功                能:算平方根
  245. ************************************************/
  246. short sqrt( unsigned long M)                                            //不懂啊
  247. {
  248.     unsigned int N, i;
  249.     unsigned long tmp, ttp;
  250.     if( M == 0 )            
  251.         return 0;
  252.    
  253.     N = 0;
  254.    
  255.     tmp = ( M >> 30 );        
  256.     M <<= 2;
  257.     if( tmp > 1 )            
  258.     {
  259.         N ++;               
  260.         tmp -= N;
  261.     }
  262.    
  263.     for( i=15; i>0; i-- )   
  264.     {
  265.         N <<= 1;           
  266.         
  267.         tmp <<= 2;
  268.         tmp += (M >> 30);  
  269.         
  270.         ttp = N;
  271.         ttp = (ttp<<1)+1;
  272.         
  273.         M <<= 2;
  274.         if( tmp >= ttp )   
  275.         {
  276.             tmp -= ttp;
  277.             N ++;
  278.         }      
  279.     }
  280.    
  281.     return N;
  282. }

  283. /************************************************
  284. *名                稱:FFT
  285. *功                能:快速傅里葉變換求取頻譜
  286. ************************************************/
  287. void FFT(void)                             //基2時分蝶式算法
  288. {
  289. //         unsigned char i, j, r, m1, m2, m3, m4, k1, k2;       //分別為:級號,蝶群號,運算蝶號,蝶群總數,蝶群長度,運算蝶數,蝶群址,蝶址
  290. //         unsigned char p;
  291. //         unsigned char MAX = 0;
  292. //         short u, v;
  293. //         unsigned long ulReal, ulImage;
  294.         register unsigned char i,bb,j,k,p,MAX;
  295.         register short TR,TI,temp;
  296.     unsigned long ulReal;                             
  297.     unsigned long ulImage;

  298.         for(i = 0; i < SAMPLE_NUM; i++)                                         //采樣
  299.         {
  300.                 FFT_REAL[BIT_RESORT[i]] = ReadADC() << KEEP;
  301.                 FFT_IMAGE[i] = 0;
  302.         }
  303.         KEEP_NUM = FFT_REAL[2] >> 4;
  304.         if((7 < KEEP_NUM) && (KEEP_NUM <= 8))
  305.                 KEEP = 1;
  306.         else if((4 < KEEP_NUM) && (KEEP_NUM <= 6))
  307.                 KEEP = 2;
  308.         else if((2 < KEEP_NUM) && (KEEP_NUM <= 4))
  309.                 KEEP = 3;
  310.         else
  311.                 KEEP = 5;
  312.     for( i=1; i<=NUM_2_LOG; i++)                          
  313.     {
  314.         bb=1;
  315.         bb <<= (i-1);                                      
  316.         for( j=0; j<=bb-1; j++)                           
  317.         {
  318.             p=1;
  319.             p <<= (NUM_2_LOG-i);            
  320.             p = p*j;
  321.             for( k=j; k<SAMPLE_NUM; k=k+2*bb)               
  322.             {
  323.                 TR = FFT_REAL[k]; TI = FFT_IMAGE[k]; temp = FFT_REAL[k+bb];
  324.                 FFT_REAL[k] = FFT_REAL[k] + ((FFT_REAL[k+bb]*COS_TAB[p])>>7) + ((FFT_IMAGE[k+bb]*SIN_TAB[p])>>7);
  325.                 FFT_IMAGE[k] = FFT_IMAGE[k] - ((FFT_REAL[k+bb]*SIN_TAB[p])>>7) + ((FFT_IMAGE[k+bb]*COS_TAB[p])>>7);
  326.                 FFT_REAL[k+bb] = TR - ((FFT_REAL[k+bb]*COS_TAB[p])>>7) - ((FFT_IMAGE[k+bb]*SIN_TAB[p])>>7);
  327.                 FFT_IMAGE[k+bb] = TI + ((temp*SIN_TAB[p])>>7) - ((FFT_IMAGE[k+bb]*COS_TAB[p])>>7);
  328.                
  329.                 FFT_REAL[k]  >>= 1;            
  330.                 FFT_IMAGE[k]  >>= 1;
  331.                 FFT_REAL[k+bb]  >>= 1;                 
  332.                 FFT_IMAGE[k+bb]  >>= 1;
  333.                                                                               
  334.             }  
  335.         }
  336.     }
  337. //         for(i = 1; i <= NUM_2_LOG; i++)
  338. //         {
  339. //                 m1 = 1 << (i - 1);                  
  340. //                 m2 = m1 << 1;
  341. //                 m3 = 1 << (NUM_2_LOG - i);
  342. //                 for(j = 0; j < m3; j++)
  343. //                 {
  344. //                         m4 = j * m2;
  345. //                         for(r = 0; r < m1; r++)
  346. //                         {
  347. //                                 p = r * m3;
  348. //                                 k1 = m4 + r;
  349. //                                 k2 = k1 + m1;
  350. //              u = (FFT_REAL[k2] * COS_TAB[p]) >> 7 + (FFT_IMAGE[k2] * SIN_TAB[p]) >> 7;
  351. //                                 v = (FFT_IMAGE[k2] * COS_TAB[p]) >> 7 + (FFT_REAL[k2] * SIN_TAB[p]) >> 7;
  352. //                                 FFT_REAL[k2] = FFT_REAL[k1] - u;       
  353. //                                 FFT_IMAGE[k2] = FFT_IMAGE[k1] - v;
  354. //                                 FFT_REAL[k1] = FFT_REAL[k1] + u;
  355. //                                 FFT_IMAGE[k1] = FFT_IMAGE[k1] + v;
  356. //              FFT_REAL[k1]  >>= 1;            
  357. //              FFT_IMAGE[k1]  >>= 1;
  358. //              FFT_REAL[k2]  >>= 1;                 
  359. //              FFT_IMAGE[k2]  >>= 1;
  360. //                         }
  361. //                 }
  362. //         }
  363.         for(i = 0; i < 16; i++)
  364.         {
  365.                 ulReal = FFT_REAL[i + 1];
  366.                 ulReal *= ulReal;
  367.                 ulImage = FFT_IMAGE[i + 1];
  368.                 ulImage *= ulImage;
  369.                 AMP_TAB[i] = sqrt(ulImage + ulReal);
  370.                 if(AMP_TAB[i] < FFT_OUT_MIN)
  371.                         AMP_TAB[i] = 0;
  372.                 else
  373.                         AMP_TAB[i] -= FFT_OUT_MIN;
  374.                 if(AMP_TAB[i] > MAX)
  375.                         MAX = AMP_TAB[i];
  376.         }
  377.         if(MAX > 12)
  378.         {
  379.                 MAX /= 12;
  380.                 for(i = 0; i < 16; i++)
  381.                         AMP_TAB[i] /= MAX;
  382.         }
  383. }
  384. /**********************************************************
  385. *名                稱:Display_zzz
  386. *功                能;顯示動畫
  387. **********************************************************/
  388. void Display_zzz(void)
  389. {
  390.         //逐行掃描-4幀
  391.         unsigned char code TAB_LED[4][24] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  392.                                                                                  {0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  393.                                                                                  {0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0xe0, 0x01, 0x40, 0x00, 0x80, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  394.                                                                                  {0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0xe0, 0x01, 0x40, 0x00, 0x80, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0xf8}};
  395.         unsigned char i, j;
  396.         P0 = 0x00; LED_R9 = 0; LED_R10 = 0; LED_R11 = 0; LED_R12 = 0;
  397.         for(i = 0; i < 4; i++)
  398.         {
  399.                 for(j = 0; j < 100; j++)
  400.                 {
  401.                         LED_C1_8 = TAB_LED[i][2 * 0];
  402.                         LED_C9_16 = TAB_LED[i][2 * 0 + 1];
  403.                         LED_R1 = 1;
  404.                         Delay_ms(2);
  405.                         LED_R1 = 0;
  406.                        
  407.                         LED_C1_8 = TAB_LED[i][2 * 1];
  408.                         LED_C9_16 = TAB_LED[i][2 * 1 + 1];
  409.                         LED_R2 = 1;
  410.                         Delay_ms(2);
  411.                         LED_R2 = 0;

  412.                         LED_C1_8 = TAB_LED[i][2 * 2];
  413.                         LED_C9_16 = TAB_LED[i][2 * 2 + 1];
  414.                         LED_R3 = 1;
  415.                         Delay_ms(2);
  416.                         LED_R3 = 0;
  417.                        
  418.                         LED_C1_8 = TAB_LED[i][2 * 3];
  419.                         LED_C9_16 = TAB_LED[i][2 * 3 + 1];
  420.                         LED_R4= 1;
  421.                         Delay_ms(2);
  422.                         LED_R4 = 0;

  423.                         LED_C1_8 = TAB_LED[i][2 * 4];
  424.                         LED_C9_16 = TAB_LED[i][2 * 4 + 1];
  425.                         LED_R5 = 1;
  426.                         Delay_ms(2);
  427.                         LED_R5 = 0;

  428.                         LED_C1_8 = TAB_LED[i][2 * 5];
  429.                         LED_C9_16 = TAB_LED[i][2 * 5 + 1];
  430.                         LED_R6 = 1;
  431.                         Delay_ms(2);
  432.                         LED_R6 = 0;

  433.                         LED_C1_8 = TAB_LED[i][2 * 6];
  434.                         LED_C9_16 = TAB_LED[i][2 * 6 + 1];
  435.                         LED_R7 = 1;
  436.                         Delay_ms(2);
  437.                         LED_R7 = 0;

  438.                         LED_C1_8 = TAB_LED[i][2 * 7];
  439.                         LED_C9_16 = TAB_LED[i][2 * 7 + 1];
  440.                         LED_R8 = 1;
  441.                         Delay_ms(2);
  442.                         LED_R8 = 0;

  443.                         LED_C1_8 = TAB_LED[i][8 * 2];
  444.                         LED_C9_16 = TAB_LED[i][8 * 2 + 1];
  445.                         LED_R9 = 1;
  446.                         Delay_ms(2);
  447.                         LED_R9 = 0;
  448.                        
  449.                         LED_C1_8 = TAB_LED[i][9 * 2];
  450.                         LED_C9_16 = TAB_LED[i][9 *2 + 1];
  451.                         LED_R10 = 1;
  452.                         Delay_ms(2);
  453.                         LED_R10 = 0;
  454.                
  455.                         LED_C1_8 = TAB_LED[i][10 *2];
  456.                         LED_C9_16 = TAB_LED[i][10 * 2 + 1];
  457.                         LED_R11 = 1;
  458.                         Delay_ms(2);
  459.                         LED_R11 = 0;                       

  460.                         LED_C1_8 = TAB_LED[i][11 * 2];
  461.                         LED_C9_16 = TAB_LED[i][11 * 2 + 1];
  462.                         LED_R12 = 1;
  463.                         Delay_ms(2);
  464.                         LED_R12 = 0;
  465.                 }
  466.         }
  467. }
  468. /************************************************
  469. *名                稱:main
  470. *功                能:主函數
  471. ************************************************/
  472. void main()
  473. {
  474.         IOInit();                                                            //初始化
  475.         TimerInit();
  476.         DISP_NUM = 0;
  477.         KEEP = 0;
  478.         KEEP_NUM = 0;
  479.         EA = 1;                                                                        //開中斷
  480.         ET1 = 1;
  481.         while(1)
  482.         {
  483.                 if(SWITCH_ON == 0)
  484.                 {
  485.                         ET0 = 0;
  486.                         Display_zzz();
  487.                 }
  488.                 if(SWITCH_ON == 1)
  489.                 {
  490.                         ET0 = 1;
  491.                         FFT();
  492.                 }
  493.         }
  494. }

  495. /************************************************
  496. *名                稱:Timer0Interrupt
  497. *功                能:定時器0中斷服務程序-顯示
  498. ************************************************/
  499. void Timer0Interrupt() interrupt 1
  500. {
  501.         Display();
  502.         Delay(300);
  503. }
  504. /************************************************
  505. *名                稱:Timer1Interrupt
  506. *功                能:定時器1中斷服務程序-檢測開關狀態
  507. ************************************************/
  508. void Timer1Interrupt() interrupt 3
  509. {
  510.         if(SWITCH == 1)
  511.                 SWITCH_ON = 1;
  512.         if(SWITCH == 0)
  513.                 SWITCH_ON = 0;
  514. }
復制代碼


評分

參與人數 4黑幣 +70 收起 理由
7914251a + 10 很給力!
天0 + 5 贊一個!
愛玩的學旨 + 5 很給力
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:108508 發表于 2016-5-7 10:06 | 只看該作者
下載保留學習
回復

使用道具 舉報

板凳
ID:84948 發表于 2016-5-14 14:14 | 只看該作者
多謝樓主的分享!~~
回復

使用道具 舉報

地板
ID:61840 發表于 2016-6-15 23:19 | 只看該作者
不錯的程序,學習學習
回復

使用道具 舉報

5#
ID:136460 發表于 2016-9-1 05:36 來自手機 | 只看該作者
好人,天下好人多
回復

使用道具 舉報

6#
ID:138343 發表于 2016-9-17 07:22 | 只看該作者
感謝樓主分享,最近在想關于頻譜的顯示問題,如同一行,假如第一列的不顯示,而第二列的顯示,在同一時間里這個問題怎么處理
回復

使用道具 舉報

7#
ID:42417 發表于 2016-9-25 00:33 | 只看該作者
好東西,多謝樓主的分享!~~
回復

使用道具 舉報

8#
ID:100826 發表于 2016-9-25 07:35 | 只看該作者
多謝樓主的分享!
回復

使用道具 舉報

9#
ID:148612 發表于 2016-11-18 11:15 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

10#
ID:33848 發表于 2017-6-1 09:02 | 只看該作者
看上去似乎不錯
回復

使用道具 舉報

11#
ID:220055 發表于 2017-9-5 23:38 | 只看該作者
看上去似乎不錯
回復

使用道具 舉報

12#
ID:14237 發表于 2017-9-6 08:54 | 只看該作者
多謝樓主的分享!
回復

使用道具 舉報

13#
ID:239055 發表于 2017-11-9 07:56 | 只看該作者
我又來了,謝謝樓主
回復

使用道具 舉報

14#
ID:127160 發表于 2017-11-15 14:05 | 只看該作者
謝謝分享。
回復

使用道具 舉報

15#
ID:229527 發表于 2017-11-23 10:53 | 只看該作者
謝謝樓主!
回復

使用道具 舉報

16#
ID:128101 發表于 2018-8-1 21:07 | 只看該作者
感謝分享
回復

使用道具 舉報

17#
ID:128101 發表于 2018-10-9 21:44 | 只看該作者
感謝分享 學習學習
回復

使用道具 舉報

18#
ID:73030 發表于 2019-1-20 17:42 | 只看該作者
感謝樓主分享。
回復

使用道具 舉報

19#
ID:524014 發表于 2019-6-11 18:42 | 只看該作者
下載保存,學習
回復

使用道具 舉報

20#
ID:578423 發表于 2020-5-16 12:21 | 只看該作者
先頂再看,好東西
回復

使用道具 舉報

21#
ID:53667 發表于 2020-5-22 06:08 | 只看該作者
謝謝分享,收下了慢慢研究
回復

使用道具 舉報

22#
ID:78387 發表于 2020-6-2 00:30 來自手機 | 只看該作者
謝謝樓主分享!學習了
回復

使用道具 舉報

23#
ID:653833 發表于 2020-10-24 20:12 | 只看該作者
我想知道三極管的作用,,,
回復

使用道具 舉報

24#
ID:833128 發表于 2020-12-11 08:45 | 只看該作者
收藏了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲第一黄色网 | 亚洲经典一区 | 国产成人精品一区二区三区四区 | 青青伊人久久 | 国产一区在线免费 | 天天艹天天干天天 | 免费黄色的视频 | 欧美日韩国产在线观看 | 久久久69| 91在线观看免费 | 午夜成人在线视频 | 久久久精品一区 | 日韩一区二区三区四区五区六区 | av网址在线 | 天天摸天天看 | 日韩一区二区在线免费观看 | 欧美天堂一区 | xnxx 日本免费 | av手机在线免费观看 | 一级a性色生活片久久毛片 午夜精品在线观看 | 99精品免费久久久久久久久日本 | 国产精品毛片一区二区在线看 | 黄色一级大片在线免费看产 | 日日夜夜天天 | 日本高清视频在线播放 | h视频免费观看 | 日韩欧美网 | 欧美精品二区 | www.99re5.com | 男人亚洲天堂 | 国产日韩一区二区三区 | 国产91亚洲精品一区二区三区 | 国产成人精品在线播放 | 精品国产欧美一区二区三区不卡 | 91精品观看| 久久久www成人免费精品张筱雨 | 中文字幕一区二区三区乱码图片 | 国产视频一区二区 | 亚洲一区二区三区国产 | 欧美精品一区久久 | 久久亚洲视频 |