[DemoCode下载] 51系列驱动WS2812

[复制链接]
1127|0
 楼主| loutin 发表于 2025-1-10 00:08 | 显示全部楼层 |阅读模式


于WS2812的时序解析


由此可以看的出来WS2812对时序还是要求比较严格的,需要到ns级别,我们也可以看到发0码的时序和发1码的时序是刚好相反的。

发送数据格式解析



  1. void WS2812_bit(bit data_bit)
  2. {
  3.         if(data_bit)
  4.         {
  5.                 LED=1;
  6.                 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  7.                 _nop_();_nop_();_nop_();_nop_();_nop_();
  8.                 LED=0;       
  9.         }
  10.         else
  11.         {
  12.                 LED=1;
  13.                 _nop_();_nop_();_nop_();_nop_();
  14.                 LED=0;
  15.                 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  16.                 _nop_();_nop_();
  17.         }
  18. }


  1. void WS2812_rand_color(unsigned char R,unsigned char G,unsigned char B)
  2. {
  3.         WS2812_bit(G&0X80);WS2812_bit(G&0X40);WS2812_bit(G&0X20);WS2812_bit(G&0X10);
  4.         WS2812_bit(G&0X08);WS2812_bit(G&0X04);WS2812_bit(G&0X02);WS2812_bit(G&0X01);
  5.        
  6.         WS2812_bit(R&0X80);WS2812_bit(R&0X40);WS2812_bit(R&0X20);WS2812_bit(R&0X10);
  7.         WS2812_bit(R&0X08);WS2812_bit(R&0X04);WS2812_bit(R&0X02);WS2812_bit(R&0X01);
  8.        
  9.         WS2812_bit(B&0X80);WS2812_bit(B&0X40);WS2812_bit(B&0X20);WS2812_bit(B&0X10);
  10.         WS2812_bit(B&0X08);WS2812_bit(B&0X04);WS2812_bit(B&0X02);WS2812_bit(B&0X01);
  11. }


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

本版积分规则

87

主题

1659

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部