[51单片机]

请教:一个IO口如何控制切换两个LED灯?

[复制链接]
12273|50
手机看帖
扫描二维码
随时随地手机跟帖
一叶倾城wwq|  楼主 | 2018-9-5 11:31 | 显示全部楼层 |阅读模式
本帖最后由 一叶倾城wwq 于 2018-9-6 10:31 编辑

当前电路如图所示,我试过输出低电平LED2点亮,输出高电平两个都亮,上电高阻状态也是两个都亮,两个同时亮时亮度降低,要如何才能控制两个LED的切换呢?
备注:此IO口有第二功能ADC、SS、ECI、CMP0等第二功能,控制个灯不会要使用这些功能中的某一个吧?

补充说明:用此电路已经实现了,普通IO口不行,是拉电流不够,配置成推挽输出口就行了,拉灌电流都是25mA左右,就能切换LED了,主要是此电路IO口无上拉,感谢各位大大的热心提示,已结案

一个IO口控制两个LED灯.jpg

相关帖子

ningling_21| | 2018-9-5 11:34 | 显示全部楼层
VCC电压多少? P1.2高电平电压多少?

使用特权

评论回复
一叶倾城wwq|  楼主 | 2018-9-5 11:34 | 显示全部楼层
ningling_21 发表于 2018-9-5 11:34
VCC电压多少? P1.2高电平电压多少?

5V供电

使用特权

评论回复
ningling_21| | 2018-9-5 11:36 | 显示全部楼层

P1.2高电平是不是5V?

使用特权

评论回复
mailshichao| | 2018-9-5 11:40 | 显示全部楼层
可以利用io口的三态:强推,拉低,高阻来控制,再加上扫描的方式

使用特权

评论回复
一叶倾城wwq|  楼主 | 2018-9-5 11:40 | 显示全部楼层
ningling_21 发表于 2018-9-5 11:36
P1.2高电平是不是5V?

高电平是5V的,

使用特权

评论回复
fengfeng的恒| | 2018-9-5 11:50 | 显示全部楼层
你根本就无法控制两个LED都灭,除非你不需要这个状态。

使用特权

评论回复
一叶倾城wwq|  楼主 | 2018-9-5 13:33 | 显示全部楼层
mailshichao 发表于 2018-9-5 11:40
可以利用io口的三态:强推,拉低,高阻来控制,再加上扫描的方式

怎么强推呢?我看看手册

使用特权

评论回复
评论
mailshichao 2018-9-5 18:29 回复TA
手册上一般都有说明的 
一叶倾城wwq|  楼主 | 2018-9-5 13:33 | 显示全部楼层
fengfeng的恒 发表于 2018-9-5 11:50
你根本就无法控制两个LED都灭,除非你不需要这个状态。

是的,我只是需要两个切换,不需要都灭这个状态

使用特权

评论回复
fengfeng的恒| | 2018-9-5 13:41 | 显示全部楼层
一叶倾城wwq 发表于 2018-9-5 13:33
是的,我只是需要两个切换,不需要都灭这个状态

那就简单啊,你输出高电平,底下的LED2亮,LED1灭;如果要切换,只需要输出低电平,LED2灭,LED1亮。

使用特权

评论回复
评论
fengfeng的恒 2018-9-5 16:49 回复TA
@一叶倾城wwq :如果你输出低电平的时候呢?要么就是电路图不对,要么就是程序没正常输出高电平。 
一叶倾城wwq 2018-9-5 15:49 回复TA
可问题是我输出高电平时,是两个灯都亮,奇怪。 
小鱼儿1045| | 2018-9-5 13:44 | 显示全部楼层
一个接NPN,一个PNP,哈哈

使用特权

评论回复
评论
一叶倾城wwq 2018-9-5 15:50 回复TA
电路已经是确定的了,我不好做改动,只能 想办法驱动 
ohy3686| | 2018-9-5 15:57 | 显示全部楼层
这个电路实现不了你想要的功能。

使用特权

评论回复
forrest11| | 2018-9-5 16:43 | 显示全部楼层
P1.2输出0时,LED2不可能亮。你的原理图和实际PCB有区别。

使用特权

评论回复
wwkkww1983| | 2018-9-5 17:18 | 显示全部楼层
从电路图上看可以实现两颗灯交替亮灭和扫描全亮的功能,可是全灭的话就不行了,你需要在两颗LED两端并一颗二极管,如4148

使用特权

评论回复
ayb_ice| | 2018-9-5 17:18 | 显示全部楼层
有可能可靠,
输出推挽低电平,上面亮
输出推挽高电平,下面亮
高阻抗输出,都不亮,因为两个LED同时至少需要约5V电压,如果电源为3.3V,会都不亮(可能有微亮)
所以分时控制就可以了

使用特权

评论回复
619888476| | 2018-9-5 19:14 | 显示全部楼层
这电路无法实现

使用特权

评论回复
coody| | 2018-9-5 21:43 | 显示全部楼层
这样连接就可以实现,IO有高阻模式,分两个时隙处理,亮度不会有变化:
1、IO设置高阻。
2、如果上面的LED要点亮,则IO输出高电平,设置为推挽输出。如果不点亮,则保持高阻状态。
3、间隔1ms。
4、IO设置高阻。
5、如果下面的LED要点亮,则IO输出低电平,设置为推挽输出。如果不点亮,则保持高阻状态。
6、间隔1ms。
重复以上1~6.


            VCC
             |
            .-.
            | |
            | |           LED
            '-'      |----|<----|
             |       |          |
             o-------o          o------o IO
            .-.      |    LED   |
            | |      ----->|-----
            | |
            '-'
             |
             |
            ===
            GND

使用特权

评论回复
dog_xin| | 2018-9-6 07:13 | 显示全部楼层
一个口控制两只灯,是可以的,为啥不换一种思路,只控制一个灯,用亮,灭,短闪,长闪等去指示?

使用特权

评论回复
lantian583| | 2018-9-6 08:43 | 显示全部楼层
可以利用io口的三态:强推,拉低,高阻来控制,再加上扫描的方式

使用特权

评论回复
一叶倾城wwq|  楼主 | 2018-9-6 10:13 | 显示全部楼层
ohy3686 发表于 2018-9-5 15:57
这个电路实现不了你想要的功能。

您好,感谢您的回复,我听过您的公开课呢(蓝翔杯),不过电路确实实现了,普通IO口肯定不行,就像我上面说的那样,是拉电流不够,配置成推挽输出口就行了,拉灌电流都是25mA左右,就能切换LED了。

使用特权

评论回复
评论
小小电子爱好者 2018-9-13 14:08 回复TA
蓝桥杯!注意 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

1256

帖子

11

粉丝