|
|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自制的板子单片机用STC8H8K64U-SOP16,WS2812b接的是P10(PWM1P),系统频率为24MHz。
PWM初始化:
- void PWMA_config(void)//PWM模式初始化
- {
- P_SW2 |= 0x80;
- PWMA_PSCR = 0;
- PWMA_CCMR1 = 0x70;
- PWMA_CCER1 = 0x05;
- PWMA_ENO |= 0x01;
- PWMA_PS |= 0x00; // 0:选择P1.0 P1.1, 1:选择P2.0 P2.1, 2:选择P6.0 P6.1,
- PWMA_ARR = 30;
- PWMA_CCR1 = 8;
- PWMA_BKR = 0x80;
- PWMA_CR1 = 0x88;
- }
复制代码 发送八位数据:
- void SendData(u8 dat)
- {
- u8 i;
- for(i=0;i<8;i++)
- {
- if(dat & 0x80)
- PWMA_CCR1 = 7;
- else
- PWMA_CCR1 = 23;
- PWMA_CR1 |= 0x01;
- dat = dat<<1;
- while(PWMA_CR1 &0x01);
- }
- }
复制代码
发送24位数据:
- void WS2812_rand_color(u8 R,u8 G,u8 B)
- {
- SendData(G);
- SendData(R);
- SendData(B);
- }
复制代码 延时函数:
- void delay_ms(unsigned int ms) //@24.000MHz
- {
- unsigned int i;
- do
- {
- i=24000000/10000; //STC8
- while(--i) ;
- }
- while(--ms);
-
- }
复制代码 主函数:
- void main(void)
- {
- PWMA_config(); // 初始化
- while(1)
- {
- WS2812_rand_color(1,0,0);
- delay_ms(500);
- WS2812_rand_color(0,1,0);
- delay_ms(500);
- WS2812_rand_color(0,0,1);
- delay_ms(500);
- }
- }
复制代码 欢迎各位大神赐教,谢谢!
2026.7.17
|
|