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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4813|回復: 4
收起左側

哪位大佬有驅動ws2812b的源程序 求分享

[復制鏈接]
ID:443823 發表于 2018-12-11 09:33 來自觸屏版 | 顯示全部樓層 |閱讀模式
如題
回復

使用道具 舉報

ID:155507 發表于 2018-12-30 11:43 | 顯示全部樓層
程序分享出來給需要的人作參考
  1. /*------------------------------------------------------------------------------------
  2. * 項目名稱:
  3. 帶單片機8位全彩流水燈模板程序V1.0
  4. * 功能描述:
  5. 1、兩個按鍵采用中斷形式,一個控制顯示模式,一個控制顯示顏色
  6. * 歷史版本:
  7.      2016-01-27:
  8.        - 初始版本 V1.0.0;
  9. * 配置說明:
  10.           - MCU    :STC15W204S
  11.          - CPU頻率:30MHz
  12. -------------------------------------------------------------------------------------*/

  13. /**************************************子函數聲明*************************************/

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

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

  17. #include "STC15W.h"
  18. #include "ws2812.h"                 //包含LED驅動程序
  19. #include "delay.h"                 //包含延時程序

  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種顏色數據
  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. //定義一個二維,每個括號內的三個數據對應一個像素點
  30. //16像素點的數組,每個像素點的顏色由3個字節絕對{綠,紅,藍}
  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像素點的數組,每個像素點的顏色由3個字節絕對{綠,紅,藍}
  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. //定義一個拖尾數組
  38. unsigned char tail[5][3]={{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5}};

  39. //定義一個消減比例
  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);                          //上電延時
  49.         System_Init();                          //系統初始化
  50.     EA = 1;                                          //使能中斷

  51.         //上電讓所有LED滅掉
  52.         for(i=0;i<16;i++)
  53.         {
  54.                 s[i][0]=0;                      //修改數組中的數據
  55.                 s[i][1]=0;
  56.                 s[i][2]=0;
  57.         }
  58.         SendOneFrame(s);                  //顯示數組中的數據
  59.         Delay100Ms(1);
  60.                
  61.         //主循環
  62.         while(1)
  63.         {
  64.                 //計算拖尾色
  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.                         //修改數值
  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);                  //顯示數組中的數據
  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;                    //設置INT0的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
  110.     EX0 = 1;                    //使能INT0中斷
  111.         
  112.         //使能INT1中斷
  113.         INT1 = 1;
  114.     IT1 = 1;                    //設置INT1的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
  115.     EX1 = 1;                    //使能INT1中斷
  116. }
  117. /**************************************中斷服務程序*********************************/
  118. //按鍵1中斷入口:模式切換
  119. void Btn1Int() interrupt 0         
  120. {
  121.         //進來先關中斷
  122.         EA = 0;
  123.         INT_CLKO &= 0xEF;           
  124.         INT_CLKO &= 0xDF;  
  125.         
  126.         //延時一段時間
  127.         DelayMs(40);
  128.         
  129.         mode++;
  130.         if(mode==4)
  131.         {
  132.                 mode=0;
  133.         }
  134.         //走時開中斷
  135.         EA = 1;
  136.         INT_CLKO |= 0x10;              
  137.         INT_CLKO |= 0x20;                                 
  138. }
  139. //按鍵2中斷入口:控制顏色切換
  140. void Btn2Int() interrupt 2        
  141. {
  142.         //進來先關中斷
  143.         EA = 0;
  144.         INT_CLKO &= 0xEF;           
  145.         INT_CLKO &= 0xDF;  
  146.         
  147.         //延時一段時間
  148.         DelayMs(40);
  149.         
  150.         color++;
  151.         if(color==9)
  152.         {
  153.                 color=0;
  154.         }

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



  160. /************************結束*******************************************************/
復制代碼
0.png
全部資料51hei下載地址:
ws2812B模塊資料.7z (10.02 MB, 下載次數: 142)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:502412 發表于 2019-4-3 16:02 | 顯示全部樓層
angmall 發表于 2018-12-30 11:43
程序分享出來給需要的人作參考

全部資料51hei下載地址:

謝謝分享
回復

使用道具 舉報

ID:67634 發表于 2019-4-21 16:01 | 顯示全部樓層
學習學習
回復

使用道具 舉報

ID:791100 發表于 2020-11-14 09:57 | 顯示全部樓層
非常感謝,資料非常齊全,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区 | 国产999精品久久久影片官网 | 91免费在线| 二区在线视频 | 久久久久久久电影 | 一级a爱片久久毛片 | 国产一区二区日韩 | 91免费入口 | 亚洲人成在线播放 | 色播久久久| 亚洲首页| 国产成人一区二区 | 国产高清在线观看 | 日韩在线不卡视频 | 在线免费观看视频黄 | 日韩午夜精品 | 成人免费视频网站在线观看 | 精国产品一区二区三区 | 天天夜天天操 | 国产一区二区激情视频 | 日本一区二区高清视频 | 精品视频在线一区 | 国产精品视频97 | 欧美1级| 国产美女一区二区 | 日韩国产高清在线观看 | 亚洲女人天堂成人av在线 | 日韩精品一区二区三区四区视频 | 国产午夜精品一区二区三区四区 | 91极品视频 | 久久99精品视频 | 国产欧美日韩综合精品一 | 中文成人无字幕乱码精品 | 国产高清一二三区 | 日本成人福利视频 | 久久久久国产一区二区三区 | www四虎影视 | 国产三级一区二区三区 | 久久久久久久av | 在线视频99| 啪啪免费网 |