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

標(biāo)題: 哪位大佬有驅(qū)動(dòng)ws2812b的源程序 求分享 [打印本頁(yè)]

作者: sanli    時(shí)間: 2018-12-11 09:33
標(biāo)題: 哪位大佬有驅(qū)動(dòng)ws2812b的源程序 求分享
如題
作者: angmall    時(shí)間: 2018-12-30 11:43
程序分享出來(lái)給需要的人作參考
  1. /*------------------------------------------------------------------------------------
  2. * 項(xiàng)目名稱:
  3. 帶單片機(jī)8位全彩流水燈模板程序V1.0
  4. * 功能描述:
  5. 1、兩個(gè)按鍵采用中斷形式,一個(gè)控制顯示模式,一個(gè)控制顯示顏色
  6. * 歷史版本:
  7.      2016-01-27:
  8.        - 初始版本 V1.0.0;
  9. * 配置說(shuō)明:
  10.           - MCU    :STC15W204S
  11.          - CPU頻率:30MHz
  12. -------------------------------------------------------------------------------------*/

  13. /**************************************子函數(shù)聲明*************************************/

  14. //子程序名稱:IO_Init(void)        功能:端口初始化,使能中斷
  15. void System_Init(void);

  16. /**************************************包含頭文件*************************************/

  17. #include "STC15W.h"
  18. #include "ws2812.h"                 //包含LED驅(qū)動(dòng)程序
  19. #include "delay.h"                 //包含延時(shí)程序

  20. /***************************************硬件接口**************************************/

  21. sbit BTN1 = P3^2;         //按鈕1連接P3.2
  22. sbit BTN2 = P3^3;         //按鈕2連接P3.3

  23. /***************************************全局變量**************************************/
  24. unsigned char mode=0;                  //控制顯示模式
  25. unsigned char color=0;                  //控制顯示顏色

  26. //9種顏色數(shù)據(jù)
  27. code unsigned char  colorArr[9][3]={{126,249,7},{242,212,241},{122,14,197},{42,238,27}
  28. ,{234,251,38},{35,218,3},{64,24,114},{250,18,20},{18,231,250}};

  29. //定義一個(gè)二維,每個(gè)括號(hào)內(nèi)的三個(gè)數(shù)據(jù)對(duì)應(yīng)一個(gè)像素點(diǎn)
  30. //16像素點(diǎn)的數(shù)組,每個(gè)像素點(diǎn)的顏色由3個(gè)字節(jié)絕對(duì){綠,紅,藍(lán)}
  31. unsigned char s[16][3]={{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},
  32. {50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},
  33. {50,5,5},{50,5,5}};        

  34. //8像素點(diǎn)的數(shù)組,每個(gè)像素點(diǎn)的顏色由3個(gè)字節(jié)絕對(duì){綠,紅,藍(lán)}
  35. //unsigned char s[16][3]={{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},
  36. //{50,5,5},{50,5,5}};        

  37. //定義一個(gè)拖尾數(shù)組
  38. unsigned char tail[5][3]={{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5}};

  39. //定義一個(gè)消減比例
  40. code unsigned char cut[5]={3,2,0,2,3};
  41. code unsigned char cut2[5]={1,2,3,2,1};

  42. /***************************************主程序****************************************/

  43. void  main()
  44. {
  45.         unsigned char i,j,k;
  46.         unsigned char side=0;
  47.         
  48.         DelayMs(100);                          //上電延時(shí)
  49.         System_Init();                          //系統(tǒng)初始化
  50.     EA = 1;                                          //使能中斷

  51.         //上電讓所有LED滅掉
  52.         for(i=0;i<16;i++)
  53.         {
  54.                 s[i][0]=0;                      //修改數(shù)組中的數(shù)據(jù)
  55.                 s[i][1]=0;
  56.                 s[i][2]=0;
  57.         }
  58.         SendOneFrame(s);                  //顯示數(shù)組中的數(shù)據(jù)
  59.         Delay100Ms(1);
  60.                
  61.         //主循環(huán)
  62.         while(1)
  63.         {
  64.                 //計(jì)算拖尾色
  65.                 for(j=0;j<5;j++)
  66.                 {                                
  67.                         tail[j][0]=colorArr[8-color][0]>>cut[j];
  68.                         tail[j][1]=colorArr[8-color][1]>>cut[j];
  69.                         tail[j][2]=colorArr[8-color][2]>>cut[j];
  70.                 }
  71.                
  72.                 for(j=0;j<SNUM+5;j++)
  73.                 {
  74.                         //先上底色
  75.                         for(i=0;i<SNUM;i++)
  76.                         {
  77.                                 s[i][0]=colorArr[color][0];
  78.                                 s[i][1]=colorArr[color][1];
  79.                                 s[i][2]=colorArr[color][2];
  80.                         }
  81.                         //修改數(shù)值
  82.                         for(i=j,k=0;i>0&&k<5;i--,k++)
  83.                         {
  84.                                 if(i<=SNUM)
  85.                                 {
  86.                                         //s[i-1][0]=(colorArr[color][0]>>cut2[k])+tail[k][0];
  87.                                         //s[i-1][1]=(colorArr[color][1]>>cut2[k])+tail[k][1];
  88.                                         //s[i-1][2]=(colorArr[color][2]>>cut2[k])+tail[k][2];
  89.                                         s[i-1][0]=tail[k][0];
  90.                                         s[i-1][1]=tail[k][1];
  91.                                         s[i-1][2]=tail[k][2];
  92.                                 }                                       
  93.                         }
  94.                         SendOneFrame(s);                  //顯示數(shù)組中的數(shù)據(jù)
  95.                         DelayMs(50);
  96.                 }               
  97.         }
  98. }

  99. //-------------------------------------------------------------------------------
  100. //子程序名稱:System_Init(void)
  101. //功能:端口初始化,使能中斷
  102. //-------------------------------------------------------------------------------
  103. void System_Init(void)
  104. {
  105.         BTN1=1;
  106.         BTN2=1;

  107.         //使能INT0中斷
  108.         INT0 = 1;
  109.     IT0 = 1;                    //設(shè)置INT0的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
  110.     EX0 = 1;                    //使能INT0中斷
  111.         
  112.         //使能INT1中斷
  113.         INT1 = 1;
  114.     IT1 = 1;                    //設(shè)置INT1的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
  115.     EX1 = 1;                    //使能INT1中斷
  116. }
  117. /**************************************中斷服務(wù)程序*********************************/
  118. //按鍵1中斷入口:模式切換
  119. void Btn1Int() interrupt 0         
  120. {
  121.         //進(jìn)來(lái)先關(guān)中斷
  122.         EA = 0;
  123.         INT_CLKO &= 0xEF;           
  124.         INT_CLKO &= 0xDF;  
  125.         
  126.         //延時(shí)一段時(shí)間
  127.         DelayMs(40);
  128.         
  129.         mode++;
  130.         if(mode==4)
  131.         {
  132.                 mode=0;
  133.         }
  134.         //走時(shí)開中斷
  135.         EA = 1;
  136.         INT_CLKO |= 0x10;              
  137.         INT_CLKO |= 0x20;                                 
  138. }
  139. //按鍵2中斷入口:控制顏色切換
  140. void Btn2Int() interrupt 2        
  141. {
  142.         //進(jìn)來(lái)先關(guān)中斷
  143.         EA = 0;
  144.         INT_CLKO &= 0xEF;           
  145.         INT_CLKO &= 0xDF;  
  146.         
  147.         //延時(shí)一段時(shí)間
  148.         DelayMs(40);
  149.         
  150.         color++;
  151.         if(color==9)
  152.         {
  153.                 color=0;
  154.         }

  155.         //走時(shí)開中斷
  156.         EA = 1;
  157.         INT_CLKO |= 0x10;              
  158.         INT_CLKO |= 0x20;                 
  159. }



  160. /************************結(jié)束*******************************************************/
復(fù)制代碼

全部資料51hei下載地址:
ws2812B模塊資料.7z (10.02 MB, 下載次數(shù): 142)




作者: AlphaEta    時(shí)間: 2019-4-3 16:02
angmall 發(fā)表于 2018-12-30 11:43
程序分享出來(lái)給需要的人作參考

全部資料51hei下載地址:

謝謝分享
作者: momo2051    時(shí)間: 2019-4-21 16:01
學(xué)習(xí)學(xué)習(xí)
作者: King23    時(shí)間: 2020-11-14 09:57
非常感謝,資料非常齊全,謝謝




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1