找回密码
 请使用中文注册
查看: 38|回复: 1

带有2个LED灯和一个开关的GPIO

[复制链接]
阅读字号:
  • 大
  • 中
  • 小

413

主题

63

回帖

9474

积分

小编

积分
9474
发表于 11 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?请使用中文注册

×
使用PIC制作一个控制器(带按钮),通过同步串行通信作为客户端接口。在设计GPIO引脚的指示灯时遇到了困难。
由于PIC CPU大部分时间都处于空闲状态,计划是使用中断来处理新按钮的按下,而不是轮询。一旦按钮被注册为按下状态,PIC就可以按照与串行主机轮询速率一致的速率对其进行轮询。
手柄有三种操作模式,每个按钮可以单独分配。每个按钮只能有1个GPIO引脚。每个按钮需要两个LED灯。

f74aaa76a8bae6779488da68147375ce.png
如上所述,不需要按钮直接控制LED灯。按钮只需告诉PIC它被按下了,按下后不干扰LED灯。
可以使用一种称为查理复用的方法。 但确实需要持续刷新,才能营造出六个LED独立控制的错觉。

573ebadb5128a2c3ac9e6be00747c6f2.png 模拟该电路——使用 CircuitLab 创建的示意图
每个GPIO引脚可以处于四种状态之一:高阻段、拉高(MCU内部上拉约25 kΩ或更高)、高驱动、低驱动。
这样总共得到4个3 = 64个状态,其中大多数都有实际作用:
  • 所有高阻数电路均处于空闲状态
  • 一个拉高,另一个高Z:测试开关是开还是闭
  • 一个高驱动,其他的则是高阻区驱动或低驱动:点亮一两个LED灯
注意通过LED存在开关间的串扰问题。例如,如果你拉高GPIO0来测试SW1,但SW2闭合,D1会有电流。LED的正向压降足以区分这些状态,但也可能不行。 需要一些测试。
省略了二极管,并更换了一些电阻。

78724f7fcaafe116a571ff56659d8862.png 模拟该电路——使用 CircuitLab 创建的示意图
要读取按钮,将GPIO调到弱上拉模式,电压会降到大约3.8V,这应该足以被视为高电压,或者按钮按压低于1V时,这才是有效的低电压。
LED灯在切换GPIO模式后会发光,所以读取速度会比较快。

评分

参与人数 1贡献 +50 收起 理由
扒衣广场 + 50 向你学习!

查看全部评分

35

主题

56

回帖

1781

积分

初级维修师

积分
1781
发表于 10 小时前 | 显示全部楼层
楼主的知识面太广了,绝对要向你学习。看帖回帖是美德。
您需要登录后才可以回帖 登录 | 请使用中文注册

本版积分规则

QQ|手机版|家电维修论坛 ( 蜀ICP备19011473号 川公网安备51102502000164号 )|网站地图|网站地图

GMT+8, 2026-10-2 22:38 , Processed in 0.105762 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表