|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
WS2812是一个通信速度比较快的芯片,而89单片机是比较慢的单片机。
3 V- D1 C4 f: F8 t3 i* b89单片机使用32M晶振、12T模式,用IO口直接驱动WS2812灯珠。
3 X; S2 `% a$ g+ D! [9 Z! i' r. ]* \6 H以下视频是驱动WS2812的效果
, s4 c4 @* d: s7 {部分源代码:0 h* T+ |# s9 r( m G
#ifndef WS2812B_Drive //如果没有找到这个标签 c* p g' u0 D
#define WS2812B_Drive //那么就打一个这个标签
* S# @' t2 A- j3 t: w/ ^* msbit WS2812_GPIO=P2^0;
" [) s. T/ R- v1 v* du8 data WS2812_Write_Buffer[25];( v3 S2 }( Z6 J3 r& }* v
void WS2812_Write_Data(u8 *Point,u8 len); [8 x' K9 Y: V5 L4 R, M: l; d! s+ O
{) j. J! k+ p) ? T6 Y
u8 data i,j,k;' _2 x$ t4 X: j9 |- q j
u8 bdata Value;
6 G+ C) } ]' m6 _" N0 Y/ m. O+ D for(i=0;i<len;i++)
- U7 `1 [* r* x {6 @" Q$ q: N0 B4 W
for(j=0;j<3;j++)* o2 `4 ~( F! _' T9 t7 m
{
X4 e* I* i: X switch(j)* f3 b! T7 `% e
{- v3 Q& b6 h; ~3 O% K
case 0:Value=*(Point+1);break;
3 C; `+ x4 m. v ^2 J case 1:Value=*(Point);break;9 W. S+ R6 p0 K- T+ d- v7 }
case 2:Value=*(Point+2);break;
0 Y+ V% k4 F b y }
1 U( X) A/ k+ \' E2 D" I, ]# J' } k=0x80;
- J$ T3 q3 \1 C' s while(k)
; @; q/ q' u" |6 g {
6 W8 O! m9 Y/ d" c9 A8 j9 I6 s if(Value&k)* A& Z3 n* T% W; J/ L
{
" l3 \. [8 R6 Y$ f7 E G WS2812_GPIO=1;
4 H9 e6 h, r h8 D4 G3 q }) E8 J# X" @% l' q; s0 S
WS2812_GPIO=1;
- o g9 J; F- ^+ P WS2812_GPIO=0;) A7 E3 y5 ^8 J! k: c! k# j
k>>=1;0 f! W: y. b* `& @- i
}; ?; @1 {0 {. o6 {) M* Z' W
}. [$ R6 t5 ]0 z
Point+=3;
@( @ G7 g$ x- K! \- A" g" \ e5 J }. f1 I- [4 X7 g/ c2 \
}0 w+ w2 \3 s* R9 D( T+ Y$ T
void WS2812_Display_Ser()) Z' C2 T0 z# [ l j3 V4 o; ^
{: D# U- w' |1 f& w4 y* K, f
static xdata u8 count=0;
" U3 h/ m, }" ~4 k8 p0 [2 O if(count<100)5 d7 s- V) t2 w/ O; ]
{ h- ?9 |& Q) h! O
WS2812_GPIO=0;2 O% L3 [- @& O# W3 [; u
count++;
' Z3 y1 v# X2 _ }8 q! I: c, B4 M0 l. E
else
! }3 |0 |2 `& z( g% M) X2 m {; d% Z# ^+ e, I# X& d! R; w6 R
EA=0;6 M. B1 m( `; k- S6 u1 ]$ M/ U6 Q9 s( N
WS2812_Write_Data(WS2812_Write_Buffer+1,8); z! y/ e/ H8 l& o4 r6 D
EA=1;
3 L6 F7 t' E0 k* w, u* H count=0;
# |! M5 T6 {+ F' |. B4 m5 G }3 _8 z; b# ?% }# r
}
) N6 k, w- B( R8 l1 C( j* E& e#endif! J. l% G5 O7 W- t- s; T5 P! K
* C+ L2 ?! u% `) c8 j/ J
" Q* y3 M. Z# P/ e% r |
|