带有2个LED灯和一个开关的GPIO
出处:网络整理 发布于:2026-10-08 17:19:04 | 28 次阅读
由于PIC CPU大部分时间都处于空闲状态,计划是使用中断来处理新按钮的按下,而不是轮询。一旦按钮被注册为按下状态,PIC就可以按照与串行主机轮询速率一致的速率对其进行轮询。
手柄有三种操作模式,每个按钮可以单独分配。每个按钮只能有1个GPIO引脚。每个按钮需要两个LED灯。
在模式1中,按下按钮时LED必须亮起。
在模式2中,模式1的LED必须通过PIC切换。它可以切换为高电平或低电平(即按键电流为2毫安,开关可以使LED电流为0毫安或20毫安)。关键是控制器需要在按下按钮时显示自己正在做某件事。)
第二个LED用于模式3,必须仅通过PIC切换。当模式3 LED亮起时,模式1的LED必须关闭。如果模式3能完全关闭模式1的LED灯,那将是理想的(也就是说,模式3按下的按钮理想情况下点亮0个LED,但这里可以妥协)。
以下表格总结如下:
switch openswitch closed
Mode 1XLED 1
Mode 2XLED 1 and X (or LED 1')
Mode 3LED 2LED 2 and X (or LED 1 or LED 1')
PIC是16F18145。
LED灯是ZMYKVG45WT-9。
值得注意的是,PIC 16F18145允许读取引脚状态,无论其为输入还是输出。推拉、开放排水和弱引体向上可以分配给单个瓶子。
每个按钮大约是10mA。理想情况下,这应该用来点亮LED灯。
给几个无源电路(除了LED外)做过电磁化,要么工作不完全,要么电流过大。下面是能想到的最接近的描述。右侧的接地和5伏开关代表PIC。
如上所述,不需要按钮直接控制LED灯。按钮只需告诉PIC它被按下了,按下后不干扰LED灯。可以使用一种称为查理复用的方法。 但确实需要持续刷新,才能营造出六个LED独立控制的错觉。
示意图
模拟该电路——使用 CircuitLab 创建的示意图

这样总共得到4个3 = 64个状态,其中大多数都有实际作用:
所有高阻数电路均处于空闲状态
一个拉高,另一个高Z:测试开关是开还是闭
一个高驱动,其他的则是高阻区驱动或低驱动:点亮一两个LED灯
注意通过LED存在开关间的串扰问题。例如,如果你拉高GPIO0来测试SW1,但SW2闭合,D1会有电流。LED的正向压降足以区分这些状态,但也可能不行。 需要一些测试。
省略了二极管,并更换了一些电阻。
模拟该电路——使用 CircuitLab 创建的示意图要读取按钮,将GPIO调到弱上拉模式,电压会降到大约3.8V,这应该足以被视为高电压,或者按钮按压低于1V时,这才是有效的低电压。
LED灯在切换GPIO模式后会发光,所以读取速度会比较快。
上一篇:自制一款感应式应急 LED 灯
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。














