EDA365电子论坛网

标题: 关于单片机做画面显示的探讨, 从点灯到点屏 [打印本页]

作者: 岁月如歌21    时间: 2025-11-13 17:04
标题: 关于单片机做画面显示的探讨, 从点灯到点屏
本帖最后由 岁月如歌21 于 2025-11-13 17:08 编辑 * r# m6 O) o" ]# f4 @

* {5 Y8 {/ s0 t3 N/ }  X + \8 F' N, p$ g% Z4 g4 I6 I
最近看到不少的小伙伴在讨论点灯、点屏的问题,随着STC单片机的迅猛发展,2 v/ N; a  M4 s
其实目前能驱动的或者说能实现的点亮方式非常多,像上述的框图中的四种,每一种都有对应的专用MCU9 O: s/ k8 E: A
(1)LED/数码管:STC8H4K64TL系列  $ ?% f. h' e2 E# ]! _
(2)OLED:STC8H,STC32,AI8051系类等所有带IIC/SPI接口的MCU  # o8 E% J7 [. P8 l3 v9 e
(3)TFT:STC8H,STC32,AI8051系类等所有带SPI/LCM接口的MCU   : t; ^/ X2 j6 v
(4)段码屏:STC8H4K64TLCD系列
( R6 @  {; \) r+ @% C/ G* ?( c
当然,上面列举的几种已经是烂大街的几种了,这里来讨论几个冷门赛道的点灯、点屏方式:" U3 L; P8 M  b2 H! G
(1)WS2812的点灯/屏:
& v* f! c7 x% w/ N- O        例如论坛的这个雪花灯      
2 B9 z+ A. I8 O" r) R6 j, ?1 g0 v        又或者这个多花样的0 N0 \9 e# q8 g+ Q% ~& v0 B
类似这样的灯其实可玩性非常高,他的优点就在于只要一个IO就可以控制几百上千个的LED,
) Q) s0 u- P8 Z$ s  |但是缺点也非常明显,就是对时序要求极高,且成本略高。常用于灯条的控制和小彩屏的控制
- x9 W7 }+ C2 X, v/ P0 i3 O

9 e2 ^- [' {4 [" \# Z- N/ c0 C + O2 q4 w6 U) v7 X# I
可以看到他只需要最少一个IO口无限级联就可以实现各种颜色花式的展示,
9 Z& L3 q9 u6 {% u' g4 p但点亮一个灯需要1.25us(±150ns)* 24 的时间,也就是30us左右一个灯,
& r. `6 E+ M& |1 S所以在单IO驱动的时候,灯数越多,刷新的越慢!在STC单片机中,常见的几个点灯方式如下:
5 q# c  p8 L/ r3 i( j1.IO直接模拟时序逻辑(不推荐):因为这种方法太占用资源,通过不断的延时消耗,且容易受中断的干扰,在做低成本,灯珠少,功能少的项目的时候可以采用,比如小台灯等。
* J$ p- N, f" \5 w8 A. V2.SPI接口直驱:可以兼容绝大多数带SPI接口的MCU,优点是可以释放很多的MCU资源,缺点是会额外占用MISO和SCLK的两个引脚。(可以配合DMA,有多大内存就可以完美刷新多少的灯)
3 w! f) j4 e5 W" a! u! a/ q4 U& T    参考:WS2812彩灯@AI8051U,同时驱动2730个,DMA支持USART1-SPI或USART2-SPI或SP
9 ~0 Z! Q1 T  e' N# P/ J3.PWM接口直驱:可以释放很多的MCU资源且只需要占用一个IO即可,缺点是单脉冲PWM模式下会频繁的进中断。(可以配合DMA,有多大内存就可以完美刷新多少的灯)4 s3 X1 Q+ `* W: N, f3 ?" b6 i
    参考:基于PWM的驱动ws2812视频效果实现! g0 T3 m- l# x9 c" \" C+ B
当然其实还有别的方式也可以驱动,但是相对来说在STC的MCU上上面的几种方式相对来说比较好用,当然尤其是最近的PWM+DMA的的方式爆火之后,其实完全可以用它来做64*32的桌面摆件,配和小的0606的灯珠可以做到像素屏的画质,以64*32来计算,需要2048个灯珠,分成4组(也就是四个PWM口驱动)的话每个端口512个LED,只需要512*30us = 15.36ms即可完成一屏幕的刷新,可以得到近乎60HZ的刷新率的小显示屏!做全彩的歌词显示或者胸牌非常合适。
3 d, Y# y# t! U4 C1 }6 X! |, v9 X
" C% X" B  m4 C) y% A) g6 T+ e




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