|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-11-13 17:08 编辑 , A, `* ?+ E% b) u, s9 U" c
! ^0 c/ [+ L2 V0 k+ W) ]2 t( T/ L
0 R) }; g9 W1 M- V
最近看到不少的小伙伴在讨论点灯、点屏的问题,随着STC单片机的迅猛发展,% s6 W" P, T- r
其实目前能驱动的或者说能实现的点亮方式非常多,像上述的框图中的四种,每一种都有对应的专用mcu
% L8 r$ _0 }0 G7 v$ B0 @(1)LED/数码管:STC8H4K64TL系列
) z3 b0 |8 Q2 W9 V& B2 p6 ^(2)OLED:STC8H,STC32,AI8051系类等所有带IIC/SPI接口的MCU + J& Z& z; S# A3 h# M# H2 e
(3)TFT:STC8H,STC32,AI8051系类等所有带SPI/LCM接口的MCU # r. J$ T3 d0 E4 z' g7 F# R
(4)段码屏:STC8H4K64TLCD系列 $ ~. ?/ ^2 w1 T% f7 g# s( n( i/ n
当然,上面列举的几种已经是烂大街的几种了,这里来讨论几个冷门赛道的点灯、点屏方式:. e& z( A0 ~4 A) d0 \$ I3 K+ {
(1)WS2812的点灯/屏:
! d% Q3 L" i, ~* p a 例如论坛的这个雪花灯
I$ R! I: r8 o! J+ M/ ~ 又或者这个多花样的6 i. B( Z6 U; w; D# s; O8 h
类似这样的灯其实可玩性非常高,他的优点就在于只要一个IO就可以控制几百上千个的LED,
2 X7 T/ K$ b2 A+ n2 p9 ]2 S, R. l6 ?但是缺点也非常明显,就是对时序要求极高,且成本略高。常用于灯条的控制和小彩屏的控制
f7 |& T M& M0 a% @2 |" W3 j7 {
) o9 O" ^; f4 |* [; I, f
0 `4 b# r% v' q- _$ j+ b/ p0 j
可以看到他只需要最少一个IO口无限级联就可以实现各种颜色花式的展示,1 r. J ^/ x% W5 O, a+ |+ ]
但点亮一个灯需要1.25us(±150ns)* 24 的时间,也就是30us左右一个灯,
. b. _9 D/ Z5 t& t" l" `所以在单IO驱动的时候,灯数越多,刷新的越慢!在STC单片机中,常见的几个点灯方式如下:
/ A4 y& k9 t: U y, p1.IO直接模拟时序逻辑(不推荐):因为这种方法太占用资源,通过不断的延时消耗,且容易受中断的干扰,在做低成本,灯珠少,功能少的项目的时候可以采用,比如小台灯等。/ H4 y& v! y, M
2.SPI接口直驱:可以兼容绝大多数带SPI接口的MCU,优点是可以释放很多的MCU资源,缺点是会额外占用MISO和SCLK的两个引脚。(可以配合DMA,有多大内存就可以完美刷新多少的灯)
# I4 H) L) |- M F8 h 参考:WS2812彩灯@AI8051U,同时驱动2730个,DMA支持USART1-SPI或USART2-SPI或SP8 a5 Z8 Y/ Y8 a! [- ?! ]" B* U( u
3.PWM接口直驱:可以释放很多的MCU资源且只需要占用一个IO即可,缺点是单脉冲PWM模式下会频繁的进中断。(可以配合DMA,有多大内存就可以完美刷新多少的灯)2 B7 a+ v4 w- O. ?
参考:基于PWM的驱动ws2812视频效果实现+ ^$ u) |$ p1 ]# B! t# D: O# t( e: J
当然其实还有别的方式也可以驱动,但是相对来说在STC的MCU上上面的几种方式相对来说比较好用,当然尤其是最近的PWM+DMA的的方式爆火之后,其实完全可以用它来做64*32的桌面摆件,配和小的0606的灯珠可以做到像素屏的画质,以64*32来计算,需要2048个灯珠,分成4组(也就是四个PWM口驱动)的话每个端口512个LED,只需要512*30us = 15.36ms即可完成一屏幕的刷新,可以得到近乎60HZ的刷新率的小显示屏!做全彩的歌词显示或者胸牌非常合适。
5 h1 G! q. A% p
% C0 y& j+ C0 W, \% U7 y7 d |
|