最近公司立项了一个小项目,通过RFID控制NXP非接触式卡片上的多颗LED。选用的单片机必须低功耗,还能控制16路RGB灯光,IO口有限,于是乎硬件设计上,阳极使用16个IO 另加3个控制RGB管脚,复用连接到每可LED的阴极。软件设计思路如下:
-
人眼对于每11毫秒闪烁一次约83Hz基本感觉不到。例如采用100Hz,那么10ms内轮流点亮16个灯可以达到要求。每个灯需要获得一定的时间片,才能保持住IO的电压,达到点亮的目的;
-
代码框架上选用timer来刷新灯光组。伪码如下:
void Timer() { i%=16; led_set(i, led[i]