《WS2812B灯带STC驱动.doc》由会员分享,可在线阅读,更多相关《WS2812B灯带STC驱动.doc(8页珍藏版)》请在三一文库上搜索。
1、.关于WS2812B我就不多说了,规格说明书讲的很详细。目前网上分享的2812驱动比较少,而且说明不详,使用起来不是很方便,本着共同进步的精神在这里和大家分享一下我的调试经验。MCU:STC12C5A08S2晶振:24M/经验:2812时序要求还是比较严,对传统51来说实现真的有难度,之前网上共享的STC89C52的驱动,即使真的点亮了灯带,估计也达不到我们的控制要求。因为1T的51加上24M的晶振,我在调试时也有点勉强,一次IO的翻转就要300ns。下面是灯带的驱动程序,可直接用:sbit Din = P32;uint8 bdata LED_DAT;/可位操作的数据发送暂存变量声明sbit
2、bit0 = LED_DAT0; /被发送的数据各位定义sbit bit1 = LED_DAT1;sbit bit2 = LED_DAT2;sbit bit3 = LED_DAT3;sbit bit4 = LED_DAT4;sbit bit5 = LED_DAT5;sbit bit6 = LED_DAT6;sbit bit7 = LED_DAT7;/复位码:低电平50us精品.void Reset()uint8 i;Din = 0;for(i = 0; i BSRR = 0x00000040)#define LED_OFF (GPIOA-BSRR = 0x00400000)void LED_G
3、PIO_Init() RCC-AHBENR |= 0x00020000 ; /enable the clock of PORTA GPIOA-MODER |= 0x00001000 ; / PA6 out GPIOA-OTYPER &= 0x00000000 ; /pull out GPIOA-OSPEEDR |= 0x00003000 ; / high speed 50MHZ GPIOA-PUPDR |= 0x00002000 ; / PUPD = DOWN GPIOA-BSRR |= 0x00400000 ; / reset PA5 void Send_8bits(uint8_t dat)
4、 uint8_t a;精品. for(a=0;a8;a+) LED_ON; if(dat & 0x80) asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);
5、asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); dat=dat1; LED_OFF; asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); else asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); dat=dat1; LED_OFF; asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);
6、asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);精品. asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop); void Send_2811_24bits(uint8_t dat1,uint8_t dat2,uint8_t dat3) Send_8bits(dat1); Send_8bits(dat2); Send_8bits(dat3);void rst() uint16_t i; LED_OFF; for(i=0;i100;i+);如有侵权请联系告知删除,感谢你们的配合!精品