EDA365电子论坛网

标题: WS2812B RGB 彩灯 51单片机 STC15W 驱动代码 [打印本页]

作者: 风吹过后    时间: 2022-12-1 09:59
标题: WS2812B RGB 彩灯 51单片机 STC15W 驱动代码
WS2812B RGB 彩灯 51单片机 STC15W 驱动代码; _4 C; y+ P5 }- [1 \4 Y

4 s! \8 p2 W* E$ S+ G, _$ ^5 u' n# a
- I1 M% R' n4 w. P9 ?

WS2812B RGB 彩灯 51单片机 STC15W 驱动代码.zip

912.78 KB, 下载次数: 2, 下载积分: 威望 -5


作者: Crash    时间: 2022-12-1 10:53
调用被测函数的代码。 在单元测试过程中,驱动模块通常包括调用被测函数前的数据准备、调用被测函数以及验证相关结果三个步骤。驱动代码的结构,通常由单元测试的框架决定。
作者: VIC56    时间: 2022-12-1 13:59
AVR的RGB彩灯控制芯片WS2801的控制程序( R0 d* n8 u. ~2 f
$ `6 C" A0 u+ M% {
#include"color.h"
# C! P" U" Y( n& K5 s; x, o#include"delay.h"
$ a6 h7 t/ J1 ^' Q3 n6 H7 ~  A/ o: z// 0.18084us
- ~4 T1 z0 p' G3 \/ R2 Hvoid Sbi_SDI()) {" w# F# L4 T6 O! ?! p/ a
{
* u1 i4 A- b7 L. m3 F+ Csbi(PORTC,1);* M7 o1 n0 C8 B, a8 @6 I9 D# X/ b
}
( ?2 @  p* \7 Z/ i% w" r4 ~void Cbi_SDI()+ M, Y' T4 F2 e+ O/ x
{, G+ P6 S- {* E+ \  D5 v
cbi(PORTC,1);( h- }; L( D, A- z# n' o0 t% U
}2 Q# e+ \# b( x5 T* |
void Sbi_CKI()
0 ]$ d& t- i. I. o{
- V( V, L0 T+ X, M5 Rsbi(PORTC,0);
( O! {8 O& W; d  z/ D2 n( S0 D7 v}
9 Y, k* q, [0 r( I+ V0 `+ ivoid Cbi_CKI()
, J$ x) G, t1 l: V6 I{: ~4 }+ r) u1 \9 ?& J/ d
cbi(PORTC,0);
0 I' V. K* h. M/ _! q4 Q}* P9 r4 q- n! ?% Y
void Send_CKI()  //WS2801 上升沿% i/ Z- B0 Z. \# E
{
3 h" x8 \( F5 D. Q& \Cbi_CKI();      // 时钟 拉低: N8 {, ]% N2 h( Q4 \
_delay_us(6);1 `* e& g9 T* ]; h; \( h
Sbi_CKI();      // 时钟 拉高3 ]( ]5 P6 o8 v, |  G
_delay_us(6);
  }( A* i" @* R# N6 S2 fCbi_CKI();      // 时钟 拉低2 i* F% |! H$ i- a3 r1 h0 i) e' K
}
5 r' z1 G  E2 v  d5 r5 uvoid Write_WS2801_Data(unsigned char _data)  //WS2801
9 b2 p6 A5 B7 @/ @  B' u, c1 |{8 g" ]5 V. ~0 B( O0 Q
unsigned char dai;
! b1 [7 d9 Y6 a  I: A9 I# Dunsigned char cache;  ~. B" h6 g; S+ ?8 }7 w; R
for(dai=0;dai<8;dai++)
8 k1 d8 o3 e& H  p- f& I' Z{
' Y- U6 Y' K" T0 Xcache = (_data & 0x80)>>7;3 P, V9 `4 R* }3 o  @
if(cache)
& }1 ~, Q; }8 T+ k6 F. w, ^- ASbi_SDI();
* `5 [% \. I$ s4 B6 J8 h: qelse
9 l! s5 W; u6 M  b& a" SCbi_SDI();, V" c' X6 y$ y. r) T! {! \. t
Send_CKI();; J1 [1 a, L/ w
_data <<= 1;
5 b; b: g% F4 O}/ A* z  I! q1 A2 V
}
% O4 M* |' x5 X5 C4 ovoid Write_WS2801_ColorData(unsigned char *pd)/ U8 O, Z# q( ~( K" R0 W
{# L( _  h' Z/ W! Z) \
unsigned char LEDMax = 0; // LED 最大数量. E0 I; S4 i7 u" n
Cbi_CKI();
- \: j* M& D( y) j! @0 k+ ]. ECbi_SDI();/ R7 X/ E/ p/ Y/ t
_delay_us(250);! y8 d7 q, S& h5 W
_delay_us(250);4 l. @9 \9 O) Q7 ]8 e% G
for(LEDMax = 0;LEDMax<27;LEDMax++)
2 M6 P% R4 G( Q. H4 K9 K{
6 n8 V5 n  j8 x4 m8 k' r$ T//Write_WS2801_Data(Red);
; E+ d8 ?2 V- c# U1 E, O//Write_WS2801_Data(Green);
) E. z' b& N# K+ K9 d( \//Write_WS2801_Data(Blue);* ?' k" _- ]7 a" u. d0 g) T
Write_WS2801_Data(*pd);4 w7 |1 t- O  Y+ J! y9 U5 l/ b
pd++;
1 G9 E3 G' S, m; q. V4 N}
8 z& P9 S- d3 t( i' O. E& _: s}




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2