找回密码
 立即注册

QQ登录

只需一步,快速开始

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

WS2812的极简驱动程序,控制芯片为STC15 1T系列单片机

  [复制链接]
跳转到指定楼层
楼主
ID:311310 发表于 2019-10-6 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前网上找的WS2812驱动很少并且代码很混乱。国庆闲来无事,自己写了一下WS2812的驱动程序,不多说什么,反正好用;我这总共驱动的是两条一米60灯再加1个环形8灯共128灯完全没毛病,速度还是非常快的,下图为证。单片机是STC15的,试了很多型号都没毛病,1T的单片机似乎都可以,其实个人认为WS2812的时序并没有手册上说的那么严格,实际使用时也很轻松就实现了!分享给有需要的朋友,只是简单的驱动测试,喜欢什么花样还请自由发挥,哈哈!

制作出来的实物图如下:


/***WS2812驱动程序***/
/*作者:YUAN HUA FEI*/
#include<STC15.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define  num 128//灯泡个数

sbit DO=P3^2;//数据输出口口

void delay1us()
{
    unsigned char a;
    for(a=3;a>0;a--);
}

void delays(uint m)
{
uchar i,j;
while(--m)
{
         for(i=6;i>0;i--)
         for(j=250;j>0;j--);
}
}

/**目前测试STC15系列9~30MHz整得成**/
/**适当调整_NOP_(),最低8MHz也整得成***/
/*调整Re、Gr、Bl的比例可搭配出各种颜色*/
/********0~255,共256级亮度 *********/
/*****调整数字大小可调整色调及亮度*****/
//括号内分别代表(红、绿、蓝)数据
void WS2812WR(uchar Re,uchar Gr,uchar Bl)
{
        uchar color=3,dat,i=8;
        DO=0;
        //依次输出24bit GRB数据
        while(color--)
        {
          if(color==2)dat=Gr;
          if(color==1)dat=Re;
          if(color==0)dat=Bl;
                while(i--)
                {
                        if(dat & 0X80)//写1
                        {
                                DO=1;delay1us();
                                DO=0;_nop_();
                        }
                        else          //写0
                        {
                                DO=1;_nop_();
                                DO=0;delay1us();
                        }
                          dat <<= 1;
                }
        i=8;
  }
}
余下可下载附件查看。。。


全部资料51hei下载地址:
WS2812.zip (32.67 KB, 下载次数: 1084)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:67356 发表于 2019-10-8 07:20 | 只看该作者
谢谢。程序很好!51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:46999 发表于 2019-10-8 11:43 | 只看该作者
谢谢。正好想用WS2812干点什么呢。
回复

使用道具 举报

地板
ID:428114 发表于 2019-10-8 15:44 | 只看该作者
不错!
回复

使用道具 举报

5#
ID:146045 发表于 2019-10-10 23:09 来自手机 | 只看该作者
资料不错,值得学习
回复

使用道具 举报

6#
ID:385637 发表于 2019-10-11 11:42 | 只看该作者
好资料,简单明了,学习
回复

使用道具 举报

7#
ID:284598 发表于 2019-10-12 07:20 来自手机 | 只看该作者
此程序用在24灯的灯环上怎么只能点亮8个?
回复

使用道具 举报

8#
ID:311310 发表于 2019-10-15 21:27 | 只看该作者
whdiy751124 发表于 2019-10-12 07:20
此程序用在24灯的灯环上怎么只能点亮8个?

1t的单片机吗,这个要注意调整时序,适当调整_nop_()和延时;还有灯的数量有改了吗,我这个是128颗的
回复

使用道具 举报

9#
ID:58591 发表于 2019-12-31 08:57 | 只看该作者
感谢分享,楼主很帅!
回复

使用道具 举报

10#
ID:419909 发表于 2020-1-3 16:22 | 只看该作者
感谢分享,正需要用来做一个东西.开源区需要像你们这样的人.我的东西做好.到时也会开源.
回复

使用道具 举报

11#
ID:66872 发表于 2020-3-31 16:59 来自手机 | 只看该作者
正在学习STC15单片机,感谢楼主分享。
回复

使用道具 举报

12#
ID:909887 发表于 2021-4-21 20:19 | 只看该作者
Mark 插个眼 回头好好研究下
回复

使用道具 举报

13#
ID:156220 发表于 2021-4-23 11:09 | 只看该作者
好资料,谢谢楼主的分享
回复

使用道具 举报

14#
ID:4240 发表于 2021-4-23 14:20 | 只看该作者
昨天买了个25个的WS2812,没驱动起来,看看你的;
回复

使用道具 举报

15#
ID:88256 发表于 2021-9-4 00:21 | 只看该作者
下载一个看看,谢谢了!
回复

使用道具 举报

16#
ID:721169 发表于 2021-9-6 19:27 来自手机 | 只看该作者
刚好有个小灯串,可以试验一下
回复

使用道具 举报

17#
ID:411116 发表于 2021-9-21 21:00 | 只看该作者
WS2812的极简驱动程序,控制芯片为STC15 1T系列单片机
回复

使用道具 举报

18#
ID:399179 发表于 2021-12-14 21:44 来自手机 | 只看该作者
这个程序怎么指定哪一个灯亮?亮什么颜色?谢谢!
回复

使用道具 举报

19#
ID:541089 发表于 2021-12-17 14:25 | 只看该作者
楼主我想画个板子,想问一下您这用的哪个型号额
回复

使用道具 举报

20#
ID:399179 发表于 2021-12-27 21:24 来自手机 | 只看该作者
qiaomuyouzhi 发表于 2021-12-17 14:25
楼主我想画个板子,想问一下您这用的哪个型号额

这程序我用的stc15f104,可以正常运行,输出口不要用3.3
回复

使用道具 举报

21#
ID:977831 发表于 2022-3-24 17:46 | 只看该作者
点不亮
回复

使用道具 举报

22#
ID:1019511 发表于 2022-4-20 19:33 | 只看该作者
你这个有配套的模拟吗?
回复

使用道具 举报

23#
ID:783755 发表于 2022-5-16 02:13 | 只看该作者

资料不错,值得学习
回复

使用道具 举报

24#
ID:311310 发表于 2022-5-19 17:31 | 只看该作者
张家四少 发表于 2022-4-20 19:33
你这个有配套的模拟吗?

51单片机全彩光立方制作

这个是我利用WS2812制作的一个例子,也许可以帮到你。
回复

使用道具 举报

25#
ID:1030451 发表于 2022-5-28 16:28 | 只看该作者
看看楼主怎么实现的,我的时序一直调不对
回复

使用道具 举报

26#
ID:748788 发表于 2022-5-31 09:51 来自手机 | 只看该作者
张家四少 发表于 2022-4-20 19:33
你这个有配套的模拟吗?

模拟的并不好玩,真机的动感效果是模拟不出来的
回复

使用道具 举报

27#
ID:297903 发表于 2022-7-19 21:38 | 只看该作者
程序简单有效,我移植到PIC16F690上,小小调试后成功点亮ws2812,谢谢!!
回复

使用道具 举报

28#
ID:825397 发表于 2022-7-29 15:25 | 只看该作者
程序有效。在stc12c5a60上通过,应该是1T芯片都行,感谢分享!
回复

使用道具 举报

29#
ID:531090 发表于 2022-8-2 13:46 | 只看该作者
楼主这种控制RGB灯带的级联芯片NOP是怎么调的
回复

使用道具 举报

30#
ID:466997 发表于 2022-8-3 11:15 | 只看该作者
很好,这正是我想要的
回复

使用道具 举报

31#
ID:504289 发表于 2022-8-26 09:31 | 只看该作者
这个好啊 万分感谢大神分享的代码 帮到大忙了
回复

使用道具 举报

32#
ID:1043068 发表于 2022-8-27 13:48 | 只看该作者
学习, 感谢版主分享
回复

使用道具 举报

33#
ID:1043068 发表于 2022-8-27 13:49 | 只看该作者
学习了,感谢版主分享,好好看看
回复

使用道具 举报

34#
ID:613016 发表于 2022-9-30 10:28 | 只看该作者
正好非常需要,非常感谢楼主的资料,省了我不少时间
回复

使用道具 举报

35#
ID:958310 发表于 2022-11-8 10:45 | 只看该作者
下个项目准备玩一下。
回复

使用道具 举报

36#
ID:1038987 发表于 2023-4-21 23:00 | 只看该作者
这个好,这个上来也没点亮,把线接返了。现在接对了。调试成功。stc15w204s  12MHZ 三线 数据口 P3^7
回复

使用道具 举报

37#
ID:933601 发表于 2023-4-22 13:53 | 只看该作者
WS2812驱动不错
回复

使用道具 举报

38#
ID:369177 发表于 2023-7-31 15:17 | 只看该作者
就是不知道怎么写变化
回复

使用道具 举报

39#
ID:740741 发表于 2023-8-1 09:24 | 只看该作者
怎么控制特定的灯亮
回复

使用道具 举报

40#
ID:48241 发表于 2023-8-5 14:40 | 只看该作者
开发板正好要用,感谢分享。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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