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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機控制WS2811 LED漸變色源碼,可以顯示16000K色

  [復制鏈接]
跳轉到指定樓層
樓主
LED使用的5050分裝自帶WS2811.只需要一個IO口控制,可以顯示16777215 種顏色,附源代碼。


單片機源程序如下:
  1. #include "main.h"
  2. #include <STC/STC12C5A60S2.h>

  3. //#define MAIN_Fosc                24000000L        //定義主時鐘   
  4. #define WHITE       0xFFFFFF  // 白色
  5. #define BLACK       0x000000  // 黑色
  6. #define RED         0x00ff00  // 紅色
  7. #define GREEN       0xff0000  // 綠色
  8. #define BLUE        0x0000ff  // 藍色
  9. #define CHENG       0xff7f00  // 橙色
  10. #define DIAN                0xff00ff  //
  11. #define ZI                    0x00ffff

  12. #define LED_N  16   //LED的數量   


  13. //extern unsigned long WsDat[];
  14. unsigned long WsDat[];



  15. void main ()//主函數
  16. {

  17.   reset();
  18. //DisP_R_G_B(20);
  19. ColorToColor(0X000000,0XFF0000);
  20. ColorToColor(0XFF0000,0xFFFF00);
  21. ColorToColor(0xFFFF00,0Xffffff);
  22. ColorToColor(0Xffffff,0X00ffff);
  23. ColorToColor(0X00ffff,0X0000ff);
  24. ColorToColor(0X0000ff,0X000000);

  25. ColorToColor(0X000000,0X00FF00);
  26. ColorToColor(0X00FF00,0x0FFFF0);
  27. ColorToColor(0x0FFFF0,0Xffffff);
  28. ColorToColor(0Xffffff,0XFF00ff);
  29. ColorToColor(0XFF00ff,0XF0000f);
  30. ColorToColor(0XF0000f,0X000000);


  31. }

  32. void delay(unsigned int time)   //延時
  33. {  unsigned int i,j,k;
  34.    for(j=0;j<time;j++)
  35.            for(i=0;i<time;i++)
  36.        for(k=0;k<time;k++)
  37.           Delay();
  38.   
  39. }



  40. void Delay()                //@24.000MHz
  41. {
  42.         _nop_();
  43. }
  44. void reset(void)
  45. {
  46.    int i;
  47.    LED=0;
  48. for(i=0;i<50;i++)
  49. {Delay();
  50.    }  
  51. }
  52. void T0(void)
  53. {
  54.   LED=1;
  55.   LED=0;
  56.   Delay();
  57.            
  58. }


  59. void T1(void)
  60. {
  61.   LED=1;
  62.   Delay();
  63.   LED=0;

  64. }
  65. void DisP_Color(unsigned long dat)                                 //控制一個燈
  66. {          unsigned int i;
  67.          for(i=0;i<24;i++)
  68.                    {   if(0x800000 == (dat & 0x800000))  T1();
  69.                 else       T0();
  70.                 dat<<=1;                                                        //左移一位
  71.                    }

  72. }

  73. void DisP_ALLColor(unsigned long dat)         //控制所有燈         
  74. {int j;         
  75.    for(j=0;j<LED_N;j++) DisP_Color(dat);
  76.   reset();
  77. }


  78. void DisP_R_G_B(unsigned int j)                    //RGB漸變
  79. {  
  80.     unsigned long i=0;
  81.     while(i<0xffffff)
  82.          {
  83.          if(i<0xff)  DisP_ALLColor(i++);         
  84.                    else if(i<0xffff) {        i=i+0x100;DisP_ALLColor(i);        }
  85.                 else if(i<0xffffff)  {i=i+0x10000;DisP_ALLColor(i);        }
  86.               delay(j);
  87.          }                  
  88.         while(i>0)
  89.          {
  90.          if(i>0xffff00)  DisP_ALLColor(i--);         
  91.                    else if(i>0xff0000) {i=i-0x100;        DisP_ALLColor(i);}
  92.                 else if(i>0)  {i=i-0x10000;DisP_ALLColor(i);}
  93.                 delay(j);
  94.          }        
  95.         reset();
  96. }





  97. unsigned char abs0(int num)
  98. {
  99.         if(num>0) return num;
  100.         
  101.         num = -num;
  102.         return (unsigned char) num;
  103. }
  104.          
  105. unsigned long ColorToColor(unsigned long color0, unsigned long color1)
  106. {
  107.         unsigned char Red0, Green0, Blue0;  // 起始三原色
  108.         unsigned char Red1, Green1, Blue1;  // 結果三原色
  109.         int  RedMinus, GreenMinus, BlueMinus;        // 顏色差(color1 - color0)
  110.         unsigned char NStep;                                                         // 需要幾步
  111.         float    RedStep, GreenStep, BlueStep;                // 各色步進值
  112.         unsigned long color;                                                        // 結果色
  113.         unsigned char i;
  114.         
  115.         // 綠 紅 藍 三原色分解
  116.         Red0   = color0>>8;
  117.         Green0 = color0>>16;
  118.         Blue0  = color0;
  119.         
  120.         Red1   = color1>>8;
  121.         Green1 = color1>>16;
  122.         Blue1  = color1;
  123.         
  124.         // 計算需要多少步(取差值的最大值)
  125.         RedMinus   = Red1 - Red0;
  126.         GreenMinus = Green1 - Green0;
  127.         BlueMinus  = Blue1 - Blue0;
  128.         
  129.         NStep = ( abs0(RedMinus) > abs0(GreenMinus) ) ? abs0(RedMinus):abs0(GreenMinus);
  130.         NStep = ( NStep > abs0(BlueMinus) ) ? NStep:abs0(BlueMinus);
  131.         
  132.         // 計算出各色步進值
  133.         RedStep   = (float)RedMinus   / NStep;
  134.         GreenStep = (float)GreenMinus / NStep;
  135. ……………………

  136. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

原理圖: 無
仿真: 無
代碼: LED漸變.7z (14.87 KB, 下載次數: 394)


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:318462 發表于 2018-5-15 12:29 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:92841 發表于 2018-7-15 00:00 | 只看該作者
很給力,謝謝分享

哪位大俠能發給我一個包,我積分不夠下載的。學習一下
回復

使用道具 舉報

地板
ID:430328 發表于 2018-11-21 08:31 | 只看該作者
看看順便學習下
回復

使用道具 舉報

5#
ID:74143 發表于 2018-11-23 16:16 | 只看該作者
好資料,謝謝分享。
回復

使用道具 舉報

6#
ID:399179 發表于 2018-11-23 20:56 來自觸屏版 | 只看該作者
感謝分享!
回復

使用道具 舉報

7#
ID:259149 發表于 2018-12-1 16:37 | 只看該作者
你好,我想問一下這個單片機里面 24MHZ 晶振下的_nop_移植到stm32應該是多少,或者說這里面的時間是必須精確到_nop_這樣嗎
回復

使用道具 舉報

8#
ID:259149 發表于 2018-12-1 16:40 | 只看該作者
還有T1,T0的作用 能詳細說一下嗎。。
回復

使用道具 舉報

9#
ID:146045 發表于 2019-10-24 21:32 | 只看該作者
資料很好,值得學習
回復

使用道具 舉報

10#
ID:697723 發表于 2020-4-12 00:47 來自觸屏版 | 只看該作者
2811,有點復雜,
回復

使用道具 舉報

11#
ID:116743 發表于 2020-11-22 15:31 | 只看該作者
還有很多功能沒寫進去
回復

使用道具 舉報

12#
ID:413986 發表于 2021-2-4 13:10 | 只看該作者
下載來試試看,我也寫了一個,總有毛病,參考下
回復

使用道具 舉報

13#
ID:79026 發表于 2021-2-21 16:21 | 只看該作者
這個不錯,很多場合需要調色和調亮度的
回復

使用道具 舉報

14#
ID:706963 發表于 2021-5-19 17:46 | 只看該作者
求教才能控制他在其中的某個位置亮起來呢?
回復

使用道具 舉報

15#
ID:706963 發表于 2021-5-19 17:47 | 只看該作者
有沒有硬件線路圖講解呢?
回復

使用道具 舉報

16#
ID:950218 發表于 2021-7-8 08:56 | 只看該作者
謝謝分享資料!
正需要顏色切換的代碼。
回復

使用道具 舉報

17#
ID:519089 發表于 2021-7-14 20:04 | 只看該作者
沒什么用,,灌水
回復

使用道具 舉報

18#
ID:856401 發表于 2021-7-16 21:48 來自觸屏版 | 只看該作者
好代碼
回復

使用道具 舉報

19#
ID:507641 發表于 2021-7-28 22:26 | 只看該作者
可否能做流水燈?
回復

使用道具 舉報

20#
ID:721169 發表于 2021-11-15 19:58 來自觸屏版 | 只看該作者
正需要找參考代碼
回復

使用道具 舉報

21#
ID:99525 發表于 2022-1-7 15:31 | 只看該作者
可以加藍牙芯片直接手機上用七彩圖控制燈帶了!
回復

使用道具 舉報

22#
ID:230500 發表于 2022-1-8 13:06 | 只看該作者
無私分享,值得贊賞,2811和2812 是否可以通用?
回復

使用道具 舉報

23#
ID:60656 發表于 2022-5-20 21:54 | 只看該作者
程序能跑起來嗎
回復

使用道具 舉報

24#
ID:653353 發表于 2024-3-17 15:38 來自觸屏版 | 只看該作者
很好玩的RGB彩燈
回復

使用道具 舉報

25#
ID:1045034 發表于 2024-3-29 09:45 | 只看該作者
兩個問號?NStep = ( abs0(RedMinus) > abs0(GreenMinus) ) ? abs0(RedMinus):abs0(GreenMinus);         NStep = ( NStep > abs0(BlueMinus) ) ? NStep:abs0(BlueMinus);
回復

使用道具 舉報

26#
ID:1045034 發表于 2024-3-29 09:46 | 只看該作者
        NStep = ( abs0(RedMinus) > abs0(GreenMinus) ) ? abs0(RedMinus):abs0(GreenMinus);
        NStep = ( NStep > abs0(BlueMinus) ) ? NStep:abs0(BlueMinus);
       這兩個問號有問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区三区 | 99re热精品视频 | 国产在线观看一区二区三区 | 日韩中文字幕一区 | 一区二区三区视频在线免费观看 | 亚洲一区二区电影网 | 日本不卡在线视频 | 久久人| 一级毛片免费 | av高清| 国产精品久久久久久久久免费丝袜 | 日本黄色免费片 | 久久久久国产视频 | 黄网免费看| 国产乱码精品一区二区三区忘忧草 | 成人午夜影院 | 色婷婷国产精品 | 91社影院在线观看 | 日日骚av| 日韩在线播放一区 | 久久精品com| 亚洲精品一区中文字幕乱码 | 一级a爱片性色毛片免费 | 日韩在线中文字幕 | 日本不卡一区二区三区在线观看 | 午夜影院普通用户体验区 | 亚洲国产欧美91 | 性色的免费视频 | 激情五月婷婷综合 | 亚洲一区二区三区在线视频 | 欧美日韩在线成人 | 久久久久久国产精品免费免费狐狸 | 日韩精品久久久久久 | 免费视频一区二区 | k8久久久一区二区三区 | 欧美xxxx在线 | 亚洲一区二区av在线 | 日日网 | 亚洲 欧美 另类 综合 偷拍 | 色婷婷综合久久久中字幕精品久久 | 成人av一区二区三区 |