xxkj2010 发表于 2023-11-30 11:11:01

空某人 发表于 2023-10-9 20:49
灯的亮度是如何改变的?比如一个红色是11111111,如果发送11111110是不是就要暗一些 ...

发送0x000000不发光,发送0x010101(白色)亮度最低,发送0xffffff(白色)亮度最高。

xxkj2010 发表于 2023-12-1 08:46:12

我用STC8H8K64U-TSSOP20,内部IRC 主时钟 24000000L。
用楼主的void WS2812_bit(bit data_bit),
时序好像不太准确,因为测试的结果与楼主的不一样。
不知道为什么,我有空再用逻辑分析仪测一下脉冲宽度。

//====================================================================
//发送 0,1码时序,此时序由逻辑分析仪拉波形得出,时间上准确无误
//复位 300ns以上
//1码 高电平750ns-1.6us 低电平220ns-420ns (0.85us,0.4us)
//0码 高电平220ns-420ns 低电平750ns-1.6us (0.4us,0.85us)
//====================================================================
void WS2812_bit(bit data_bit)
{
        if(data_bit)//0.85,0.4us
        {
                ws2812b_IO=1;
                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                ws2812b_IO=0;       
        }
        else//0.4,0.85
        {
                ws2812b_IO=1;
                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
                ws2812b_IO=0;
                _nop_();_nop_();_nop_();_nop_();
        }
}



lijinlei 发表于 2023-12-3 18:17:30

老哥,我买的32MHz晶振已经到货了,刚装到STC89C52上尝试了一下,可以驱动,这是我发的帖子,STC89C52RC驱动WS2812灯带,但是不知道怎么制作呼吸灯,求指导~

lijinlei 发表于 2023-12-3 21:05:44

亲测代码有效,改了一下呼吸时间,效果很不错~

xxkj2010 发表于 2023-12-4 18:39:01

可以用了,就是直接使用楼主的代码,原来我的项目是启用USB的,我只是把楼主的代码添加到项目中。
感谢楼主的分享!

xxkj2010 发表于 2023-12-4 18:46:53

请问楼主,如果项目中有开启某些中断,在驱动WS2812时,是不是需要暂时关闭全部中断,以免影响时序?

小帝 发表于 2023-12-6 00:06:38

硬件是怎么样的呀{:4_190:}

神农鼎 发表于 2024-1-9 08:47:04

SPI方案:
只用到MOSI驱动WS2812,但由于SPI的3个信号是捆绑在一起的,MISO、SCLK不能做它用。本例使用P1.3-MOSI输出驱动信号,用户可以切换到别的脚。
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是 MISO 读到的状态, 0 ,这 STC-R&D 留了这么个绝活支持 WS2812B !!!

晓飛飛 发表于 2024-3-11 16:12:39

实测没毛病,一次点亮{:victory:}

摇滚一族 发表于 2024-3-30 22:47:29

void WS2812_rand_color(u8 R,u8 G,u8 B)
{
        SendData(G);
        SendData(R);
        SendData(B);
}

void DisP_Color(u32 dat)
{
    WS2812_rand_color(dat>>8,dat,dat>>16);   
}
这里RGB三色我测试了是错乱的,不知楼主有没有注意
页: 1 2 [3] 4 5
查看完整版本: 代码人生 之 01点灯程序(WS2812B,64灯板,呼吸灯)