找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10971|回复: 17
打印 上一主题 下一主题
收起左侧

51单片机控制RGB5050全彩LED灯

  [复制链接]
跳转到指定楼层
楼主
ID:162229 发表于 2017-1-24 19:37 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
自己在淘宝买了个全彩LED,但是却不知道怎么用。有没有大神给知道一下怎么接线,怎么用单片机控制啊?

IMG_20170124_193207.jpg (89.75 KB, 下载次数: 110)

IMG_20170124_193207.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2017-1-24 21:11 | 只看该作者
WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。
数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。
LED具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。将控制电路集成于LED上面,电路变得更加简单,体积小,安装更加简便。

仅以此贴献给刚刚学会流水灯的孩子,学会这个就可以搞任意颜色搭配的流水灯了,而且根本不用考虑引脚个数(碎碎念:只用一个引脚就可以控制几百个以上的灯珠,每个灯珠颜色是255*255*255种)

  1. /********************************************************/
  2. /*程序功能:用51单片机控制ws2812 RGB输出,显示全色彩
  3. /*备 注:51单片机晶振24M
  4. /********************************************************/

  5. #include<reg52.h>
  6. #include<intrins.h>
  7. #define uchar unsigned char

  8. sbit Send_Dat=P1^0;     //数据输出,接IN脚
  9. sbit Key=P1^1;          //按键等待
  10. sbit Send_Dat1=P1^2;   //中断状态灯
  11. uchar RGB_BUF[24];
  12. void delay();
  13. void delays();
  14. void init();

  15. uchar Led_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};        
  16. //存储一个转化后的RGB2进制数  共24bits
  17. struct My_24bits                  //结构体
  18. {
  19.         uchar G_VAL;                 //绿色  0-255
  20.         uchar R_VAL;                  //红色 0-255
  21.         uchar B_VAL;                  //蓝色0-255
  22. };


  23. /*写入数据时序*/
  24. void Send_A_bit(uchar VAL)
  25. {
  26.         //     Send_Dat=0;
  27.         if (VAL==1)
  28.         {
  29.                 //     Send_Dat=0;
  30.                 Send_Dat=1;
  31.                 _nop_();
  32.                 //_nop_();
  33.                 Send_Dat=0;     //2.17us
  34.                 //_nop_();
  35.                 //     Send_Dat=1;    //2.17us
  36.         }
  37.         else
  38.         {
  39.                 // Send_Dat=0;
  40.                 Send_Dat=1;
  41.                 //_nop_();
  42.                 //_nop_();
  43.                 Send_Dat=0;           
  44.                 _nop_();
  45.                 // Send_Dat=1;
  46.         }           
  47.        
  48. }


  49. /*发送24位字符(包含RGB信息各8位)*/
  50. void Send_24bits(struct My_24bits RGB_VAL )                     
  51. {
  52.         uchar i;
  53.         for   (i=0;i<8;i++)
  54.         {
  55.                 RGB_BUF[i]=RGB_VAL.R_VAL>>i&0x01;      //转化R_VAL
  56.         }
  57.         for   (i=8;i<16;i++)
  58.         {
  59.                 RGB_BUF[i]=RGB_VAL.G_VAL>>(i-8)&0x01;  //转化G_VAL
  60.         }
  61.         for   (i=16;i<24;i++)                     //转化B_VAL
  62.         {
  63.                 RGB_BUF[i]=RGB_VAL.B_VAL>>(i-16)&0x01;     
  64.         }
  65.         for (i=0;i<24;i++)
  66.         {
  67.                 Send_A_bit(RGB_BUF[i]);
  68.         }
  69.        
  70. }

  71. /*主函数*/
  72. void main()
  73. {

  74.         struct My_24bits a,b,c,d,e,f,g;
  75.         a.R_VAL=0xff;
  76.         a.G_VAL=0x00;                      //1        颜色顺序,下同
  77.         a.B_VAL=0x00;

  78.         b.R_VAL=0x00;
  79.         b.G_VAL=0xff;                       //2
  80.         b.B_VAL=0x00;

  81.         c.R_VAL=0x00;
  82.         c.G_VAL=0x00;                      //3
  83.         c.B_VAL=0xff;

  84.         d.R_VAL=0xff;                       //4
  85.         d.G_VAL=0xff;
  86.         d.B_VAL=0x00;

  87.         e.R_VAL=0xff;
  88.         e.G_VAL=0x00;                       //5
  89.         e.B_VAL=0xff;

  90.         f.R_VAL=0x00;
  91.         f.G_VAL=0xff;                       //6
  92.         f.B_VAL=0xff;

  93.         g.R_VAL=0xff;                       //7
  94.         g.G_VAL=0xff;
  95.         g.B_VAL=0xff;
  96.         init();
  97.         while(1)
  98.         {
  99.                 Send_Dat=0;
  100.                 Send_24bits(a);
  101.                 Send_Dat=0;   P0=0xF9;
  102.                 delays();
  103.                 while(Key==1);                                        //按键等待,当Key=1时停止,等于0时七种颜色流水灯循环,下同(主要方便观察颜色)

  104.                 Send_24bits(b);
  105.                 Send_Dat=0;    P0=0xa4;      //共阴极数码管显示颜色顺序,下同
  106.                 delays();
  107.                 while(Key==1);

  108.                 Send_24bits(c);
  109.                 Send_Dat=0;   P0=0xb0;
  110.                 delays();
  111.                 while(Key==1);

  112.                 Send_24bits(d);
  113.                 Send_Dat=0;   P0=Led_Tab[4];
  114.                 delays();
  115.                 while(Key==1);

  116.                 Send_24bits(e);
  117.                 Send_Dat=0;   P0=Led_Tab[5];
  118.                 delays();
  119.                 while(Key==1);

  120.                 Send_24bits(f);
  121.                 Send_Dat=0;   P0=Led_Tab[6];
  122.                 delays();
  123.                 while(Key==1);

  124.                 Send_24bits(g);
  125.                 Send_Dat=0;   P0=Led_Tab[7];
  126.                 delays();
  127.                 while(Key==1);
  128.                 //     PCON|=0x01;      //空闲模式
  129.                
  130.         }
  131. }



  132. /*中断唤醒测试函数*/
  133. void INT1_ISR(void) interrupt 2
  134. {
  135.         P2=1;
  136. }


  137. /*小延时函数*/
  138. /*大概1S吧,随便写的*/
  139. void delay()
  140. {
  141.         uchar i,j;
  142.         for (i=0;i<250;i++)
  143.         {
  144.                 for (j=0;j<250;j++);
  145.         }
  146. }


  147. /*大延时函数*/
  148. /*十几秒*/
  149. void delays()
  150. {
  151.         delay();
  152.         delay();
  153.         delay();
  154.         delay();
  155.         delay();
  156.         delay();
  157.         delay();
  158.         delay();
  159.         delay();  
  160.         delay();
  161.         delay();
  162.         delay();
  163. }



  164. /*系统初始化*/
  165. void init()
  166. {
  167.         P0=0x00;
  168.         P1=0x00;
  169.         P2=0x00;
  170.         P3=0x00;

  171.         TCON=0x05;
  172.         TMOD=0x00;
  173.         TH0=0x00;
  174.         TL0=0x00;
  175.         TH1=0x00;
  176.         TL1=0x00;

  177.         T2CON=0x00;
  178.         RCAP2H=0x00;
  179.         RCAP2L=0x00;

  180.         IP=0x00;
  181.         IE=0x85;
  182.         PCON=0x00;
  183.         SCON=0x00;
  184. }

复制代码
回复

使用道具 举报

板凳
ID:162841 发表于 2017-1-24 22:48 来自手机 | 只看该作者
这个可以找店家要资料阿,他卖这个东西肯定有阿
回复

使用道具 举报

地板
ID:162229 发表于 2017-1-25 14:10 | 只看该作者
angmall 发表于 2017-1-24 21:11
WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为 ...

好厉害,谢谢,正在研究中
回复

使用道具 举报

5#
ID:162229 发表于 2017-1-25 14:11 | 只看该作者
199419zzq 发表于 2017-1-24 22:48
这个可以找店家要资料阿,他卖这个东西肯定有阿

恩恩,不过他那个店里提供的都是一些简单的资料,没有技术支持的
回复

使用道具 举报

6#
ID:162841 发表于 2017-1-25 20:49 来自手机 | 只看该作者
你问店家要资料啊
回复

使用道具 举报

7#
ID:185907 发表于 2017-8-23 21:46 | 只看该作者
angmall 发表于 2017-1-24 21:11
WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为 ...

一楼的大佬  看到255还以为是PWM调制彩灯  请问有不是7色 是256*256*256色的彩灯程序吗 想参考下 谢谢
回复

使用道具 举报

8#
ID:229170 发表于 2017-8-24 16:59 | 只看该作者
有没有资料分享下
回复

使用道具 举报

9#
ID:227956 发表于 2017-8-24 21:25 | 只看该作者
谢谢,正在研究中
回复

使用道具 举报

10#
ID:65882 发表于 2018-6-21 13:52 | 只看该作者
angmall 发表于 2017-1-24 21:11
WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为 ...

这个是直接单片机 IO 就可以控制室吧, 不需要外加三极管什么的
回复

使用道具 举报

11#
ID:356094 发表于 2018-6-21 15:39 | 只看该作者
学习了
回复

使用道具 举报

12#
ID:173054 发表于 2018-6-21 17:53 | 只看该作者
LED好接,主要是单片机要编程,这个要看资料啊
回复

使用道具 举报

13#
ID:356372 发表于 2018-6-21 20:39 | 只看该作者
正在研究中....
回复

使用道具 举报

14#
ID:571570 发表于 2019-6-27 08:38 来自手机 | 只看该作者
请问一下有没有原理图,和仿真图
回复

使用道具 举报

15#
ID:586048 发表于 2020-8-7 20:23 | 只看该作者
angmall 发表于 2017-1-24 21:11
WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为 ...

回复

使用道具 举报

16#
ID:106821 发表于 2020-9-16 11:50 | 只看该作者
应该是被编码了的,需要知道编码规则
回复

使用道具 举报

17#
ID:941748 发表于 2021-6-21 17:14 | 只看该作者
51单片机要买啥样的?
回复

使用道具 举报

18#
ID:941748 发表于 2021-6-21 17:15 | 只看该作者
51单片机要买什么配置的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表