5个IO控制20个LED?查理复用实战拆解

前言

上期我们留了一个问题:

5个IO,真的能控制20个LED吗?

有些不做消费级遥控器的朋友,可能不太理解其中的成本压力。

但如果你做过大批量、微利的产品就会知道------

用最少的成本,实现最多的功能,才是真正的工程能力。

本期,我们就来拆解这个操作过程。


一、原理:与按键T型扫描相似,但有本质不同

这种方法,和按键的T型扫描非常接近。

但因为:

按键 → 无方向(按下即导通)

LED → 有方向(必须正向偏置才亮)

所以计算方式不同:

按键扫描数量 = 组合计算方法

LED扫描数量 = 排列计算

结论:

同样n个IO,可控制的LED数量 = 可扫描按键数量的2倍

5个IO →

按键:5×4/2=105×4/2=10 个

LED:5×4=205×4=20 个 ✅


二、电路图(核心)

(上图为:LED电路)

乍一看,和T型按键扫描电路结构一模一样。

唯一的区别是:

每个"按键位置"被替换为正反并联的两个LED。

正向 → 亮其中一个LED

反向 → 亮另一个LED

(对比图)


三、操作过程(完整时序)

我们以 5个IO(IO1--IO5) 为例,逐步说明。

第一步:IO1 = 低电平,准备点亮正向LED组

IO1 输出 低电平

IO2--IO5 设置为 输入(不加上下拉)

此时所有LED熄灭

依次判断并点亮:

|---------|----------|----------------|--------|----------|
| LED | 条件判断 | 操作 | 等待 | 恢复 |
| LED1 | 需要点亮 | IO2 = 输出 + 高电平 | 50μs | IO2恢复为输入 |
| LED2 | 需要点亮 | IO3 = 输出 + 高电平 | 50μs | IO3恢复为输入 |
| LED3 | 需要点亮 | IO4 = 输出 + 高电平 | 50μs | IO4恢复为输入 |
| LED4 | 需要点亮 | IO5 = 输出 + 高电平 | 50μs | IO5恢复为输入 |

✅ 此时完成 LED1--LED4 的控制。


第二步:IO1 = 高电平,准备点亮反向LED组

IO1 改为 输出高电平

依次操作 LED5--LED8

|---------|----------|----------------|--------|----------|
| LED | 条件判断 | 操作 | 等待 | 恢复 |
| LED5 | 需要点亮 | IO2 = 输出 + 低电平 | 50μs | IO2恢复为输入 |
| LED6 | 需要点亮 | IO3 = 输出 + 低电平 | 50μs | IO3恢复为输入 |
| LED7 | 需要点亮 | IO4 = 输出 + 低电平 | 50μs | IO4恢复为输入 |
| LED8 | 需要点亮 | IO5 = 输出 + 低电平 | 50μs | IO5恢复为输入 |

✅ 此时完成 LED5--LED8 的控制。


第三步:切换公共端,继续点亮其他方向组合

把 IO1 恢复为输入

把 IO2 设为输出低电平(作为新的公共阴极)

依次操作 LED9--LED11(以及后续组合)

按此逻辑循环扫描所有 5×4=205×4=20 种IO对组合。


四、时间参数与视觉连续性

每个LED点亮/熄灭切换时间 = 50μs

20个LED完整一轮 = 20×50μs=1ms

扫描频率 = 1kHz

人眼的视觉暂留极限约 24Hz

1kHz 远高于此 → 人眼看不出LED在快速切换

只会"看到"所有需要的LED同时持续点亮


五、总结一句话

不是用更多IO,而是用"方向 + 时间"换数量。

这种方法在消费电子、遥控器、键盘背光、小家电面板中非常实用。

既省IO,又省MCU成本,还能保持用户体验。

关注我,带你掌握更多射频遥控与嵌入式底层的控制逻辑。


深圳市振浩微电子有限公司成立于2015年,是一家致力于芯片研发以及成果转化的国家高新技术企业 ,10多年都在深耕SUB1G,各类产品规格,适合不同大小、距离、部署、预算等项目要求的落地方案有很多,公里级稳定传输也不是问题。如果你想将芯片拿回去自主开发掌握终端产品核心技术,我们自研的高集成芯片,简化产品电路设计,会让您的二次开发更省心,欢迎私信,免费拿样测试

相关推荐
MetrixAeroCore1 小时前
乌拉圭农业拖拉机远程诊断物联网卡:本土农村4G覆盖与流量包选型
物联网
可爱系程序猿1 小时前
网络打印机地址正常却无法出纸:从 TCP/IP 端口到 Print Spooler 的排错步骤
网络·网络协议·tcp/ip
paopaokaka_luck2 小时前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
minglie12 小时前
zynq高频小数据量PS闭环 抖动时间的测量
学习
long3162 小时前
MySQL 学习练习(配套 01 入门资料)
数据库·学习·mysql
Dontla2 小时前
预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
服务器·网络·ssh
梦雨生生3 小时前
java开发工具(学习第一天)
java·开发语言·学习
lhbweilai5 小时前
STM32 ADC模拟数字转换(hal库)
stm32·单片机·嵌入式硬件
坏柠5 小时前
通信协议入门:单片机怎样把一个数字发送出去?
单片机·嵌入式硬件
liulilittle6 小时前
UCP 控制协议 [简述]
网络·网络协议·计算机网络·udp·ip·通信