|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-11-13 17:08 编辑
+ M* A* @9 Z4 b J. L0 T# U' t/ b/ v, }* C, x7 q9 K
5 `0 C- r2 Q* i! o5 ~7 X' t6 W( P最近看到不少的小伙伴在讨论点灯、点屏的问题,随着STC单片机的迅猛发展,
# ]8 Z, r$ t* t. X+ D# i其实目前能驱动的或者说能实现的点亮方式非常多,像上述的框图中的四种,每一种都有对应的专用mcu
! z. w$ S+ b# } I6 S+ V, _5 w(1)LED/数码管:STC8H4K64TL系列 , w! }* S6 v; Y/ w7 {
(2)OLED:STC8H,STC32,AI8051系类等所有带IIC/SPI接口的MCU
0 ~) b: o! m7 ?' t0 }, z(3)TFT:STC8H,STC32,AI8051系类等所有带SPI/LCM接口的MCU
8 u4 g9 V- E0 B/ }% H% o v(4)段码屏:STC8H4K64TLCD系列
% B S8 _& k+ v8 v3 h( h当然,上面列举的几种已经是烂大街的几种了,这里来讨论几个冷门赛道的点灯、点屏方式:9 s% ?. L' P& H! A
(1)WS2812的点灯/屏:
, ?& D S6 E! u/ q 例如论坛的这个雪花灯 7 C* k% v+ x+ O4 Z5 P
又或者这个多花样的
{( [' K; H* @, A9 Z# H" C类似这样的灯其实可玩性非常高,他的优点就在于只要一个IO就可以控制几百上千个的LED,2 \" N0 {9 @# V! z% _( P! K* u$ p1 j+ b
但是缺点也非常明显,就是对时序要求极高,且成本略高。常用于灯条的控制和小彩屏的控制
% C, d: Y) U& k% o8 v
: g' h; W3 _2 C! Y J1 l
8 J: r P7 f# u, V8 C3 D% J
可以看到他只需要最少一个IO口无限级联就可以实现各种颜色花式的展示,5 h3 H5 T1 d3 c g
但点亮一个灯需要1.25us(±150ns)* 24 的时间,也就是30us左右一个灯,1 y. ~( K3 O3 v# ]) p3 d" g6 ]4 x
所以在单IO驱动的时候,灯数越多,刷新的越慢!在STC单片机中,常见的几个点灯方式如下:6 }$ e& D9 O! {/ {- Q
1.IO直接模拟时序逻辑(不推荐):因为这种方法太占用资源,通过不断的延时消耗,且容易受中断的干扰,在做低成本,灯珠少,功能少的项目的时候可以采用,比如小台灯等。
) @9 A" |1 |0 I9 d5 `1 A, k0 p% i* t2.SPI接口直驱:可以兼容绝大多数带SPI接口的MCU,优点是可以释放很多的MCU资源,缺点是会额外占用MISO和SCLK的两个引脚。(可以配合DMA,有多大内存就可以完美刷新多少的灯)% u5 p& _+ l2 i* P w
参考:WS2812彩灯@AI8051U,同时驱动2730个,DMA支持USART1-SPI或USART2-SPI或SP
( k) b T( s- `9 `6 u7 z$ A3.PWM接口直驱:可以释放很多的MCU资源且只需要占用一个IO即可,缺点是单脉冲PWM模式下会频繁的进中断。(可以配合DMA,有多大内存就可以完美刷新多少的灯)
; h8 x }5 R" [# C 参考:基于PWM的驱动ws2812视频效果实现
, z# q; E8 k9 j# F* A当然其实还有别的方式也可以驱动,但是相对来说在STC的MCU上上面的几种方式相对来说比较好用,当然尤其是最近的PWM+DMA的的方式爆火之后,其实完全可以用它来做64*32的桌面摆件,配和小的0606的灯珠可以做到像素屏的画质,以64*32来计算,需要2048个灯珠,分成4组(也就是四个PWM口驱动)的话每个端口512个LED,只需要512*30us = 15.36ms即可完成一屏幕的刷新,可以得到近乎60HZ的刷新率的小显示屏!做全彩的歌词显示或者胸牌非常合适。
; {+ }' D! D9 k0 y0 d) P/ ?, }
: Y1 Y9 Z4 h' t/ l+ K" t# | |
|