您现在的位置是:首页 > 源码 > stc15f204s ws2812b
推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

stc15f204s ws2812b

更新时间:2019-12-15 00:05:35 大小:34K 上传用户:Halloword查看TA发布的资源 标签:stc15f204sws2812b 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

capture_20191215000300685.bmp

程序如下:

#include<stc15.h>
#include"intrins.h"

sbit WS2812 = P1^0;
#define numLEDs 36  //灯的个数
unsigned char buf_R[numLEDs] = {0};//颜色缓存
unsigned char buf_G[numLEDs] = {0};
unsigned char buf_B[numLEDs] = {0};

void RGB_Set_Up();  //送0码
void RGB_Set_Down(); //送1码

void HAL_Delay(unsigned long t)
{
    unsigned int x,y;
    for(x=114;x>0;x--)
   for(y=t;y>0;y--);
}

   //复位延时
void Delay50us()  //@22.1184MHz
{
 unsigned char i, j;
 
 _nop_();
 _nop_();
 i = 2;
 j = 15;
 do
 {
  while (--j);
 } while (--i);
}
//1码,高电平850ns 低电平400ns 误差正负150ns
void RGB_Set_Up()
{
  WS2812 = 1;
   //经过逻辑分析仪调试的的延时
  _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
   _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
  WS2812 = 0;
}
//1码,高电平400ns 低电平850ns 误差正负150ns
void RGB_Set_Down()
{
   WS2812 = 1;
   //经过逻辑分析仪调试的的延时
  _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
  WS2812 = 0;
}

//发送24位数据
void Send_2812_24bits(unsigned char G8,unsigned char R8,unsigned char B8)
{
     unsigned int n = 0;
     //发送G8位
    for(n=0;n<8;n++)
    {
        G8<<=n;
     if(G8&0x80 == 0x80)
     {
        RGB_Set_Up();
     }
     else
     {
       RGB_Set_Down();
     }
    }
    //发送R8位
    for(n=0;n<8;n++)
    {
        R8<<=n;
     if(R8&0x80 == 0x80)
     {
        RGB_Set_Up();
     }
     else
     {
       RGB_Set_Down();
     }
    }
   //发送B8位
      for(n=0;n<8;n++)
    {
        B8<<=n;
     if(B8&0x80 == 0x80)
     {
        RGB_Set_Up();
     }
     else
     {
       RGB_Set_Down();
      }
    }
}  
 //复位码
 void RGB_Rst()
 {
     WS2812 = 0;
   Delay50us();
 }
 
//颜色交换24位不拆分发

void SetPixelColor(unsigned char num,unsigned long c)
{
    unsigned char i;
       for(i=0;i<numLEDs;i++)
    {
       buf_R[num] = (unsigned char)(c>>16);
     buf_G[num] = (unsigned char)(c>>8);
     buf_B[num] = (unsigned char)(c);
    }

   for(i=0;i<numLEDs;i++)
  {
   Send_2812_24bits(buf_G[i],buf_R[i],buf_B[i]);
  }

}

//复位
void PixelUpdate()
{
 RGB_Rst();
}


 // Fill the dots one after the other with a color
//用一种颜色填充这些圆点
void colorWipe(unsigned long c, unsigned int wait)
{
  unsigned char i=0;
  for( i=0; i<numLEDs; i++)
 {
    SetPixelColor(i, c);
    PixelUpdate();
    HAL_Delay(wait*5);
  }

}
void Watercolor(unsigned long c, unsigned int wait)
{
  unsigned char i=0;
  for( i=0; i<numLEDs; i++)
 {
    SetPixelColor(i, c);
  PixelUpdate();
    HAL_Delay(wait*5);
 SetPixelColor(i, 0);
   PixelUpdate();
    HAL_Delay(wait);
  }

}
 


void main()

请下载获取main函数里的程序

部分文件列表

文件名文件大小修改时间
fenweideng/fengweideng14KB2019-01-05 14:07:08
fenweideng/fengweideng.c5KB2019-01-05 14:07:04
fenweideng/fengweideng.hex4KB2019-01-05 14:07:10
fenweideng/fengweideng.lnp1KB2019-01-05 14:07:06
fenweideng/fengweideng.LST12KB2019-01-05 14:07:06
fenweideng/fengweideng.M5116KB2019-01-05 14:07:08
fenweideng/fengweideng.OBJ16KB2019-01-05 14:07:06
fenweideng/fengweideng.plg5KB2019-01-05 13:31:56
fenweideng/fengweideng.uvopt72KB2019-01-05 13:31:34
fenweideng/fengweideng.uvproj1KB2019-01-05 13:31:34
fenweideng/fengweideng_uvopt.bak71KB2019-01-05 13:29:38
...

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载