标题: 请问使用4个IO引脚这种配置,如何实现上面三个不同类型的灯可以同时亮 [打印本页]

作者: Bikho    时间: 2023-11-6 16:01
标题: 请问使用4个IO引脚这种配置,如何实现上面三个不同类型的灯可以同时亮
请问使用4个IO引脚这种配置,如何实现上面三个不同类型的灯可以同时亮

1111.PNG (25.64 KB, 下载次数: 60)

1111.PNG

作者: tyrl800    时间: 2023-11-7 09:15
分时扫描就可以了
作者: TTL.    时间: 2023-11-7 09:17
你这少了个灯吧,应该是连到LED1 LED4,看样子你是三个一组进行分类分了四组,如果想要不同组之间同时显示,我建议利用数码管的那种动态扫描方式点亮,如果你是同一组的三个同时点亮,就直接阳极引脚拉高其余引脚拉低就行了。
作者: lkc8210    时间: 2023-11-7 09:39
线路不正确,如LD1和LD4必定同时亮
LD4需掉换一下方向
可以看一下查理复用
引脚必须具备推挽和高阻能力
作者: 炸掉的电容    时间: 2023-11-7 09:59
你这个灯怎么这样接法,io口又当正极又当负极吗?还要全部同时亮,应该是不现实,改一下布线吧
作者: 哦豁~    时间: 2023-11-7 10:37
用扫描的方式就可以实现。一瞬间让某个灯亮起:12  -> 13 -> 21 -> 23 -> 24 -> 31 -> 32 -> 34 -> 41 -> 42 -> 43,只要扫描够快,就看起来所有灯都亮起来了。线路是正确的,楼上说法有误。
作者: Bikho    时间: 2023-11-7 10:43
lkc8210 发表于 2023-11-7 09:39
线路不正确,如LD1和LD4必定同时亮
LD4需掉换一下方向
可以看一下查理复用

LD1和LD4方向不同啊,应该不会同时亮的吧
作者: Bikho    时间: 2023-11-7 10:45
哦豁~ 发表于 2023-11-7 10:37
用扫描的方式就可以实现。一瞬间让某个灯亮起:12  -> 13 -> 21 -> 23 -> 24 -> 31 -> 32 -> 34 -> 41 -> 4 ...

如何才算是扫描过快,我现在后面六个灯用按键控制的,然后当有个亮的时候第一或第二个灯会亮,但是会暗些
作者: Bikho    时间: 2023-11-7 10:51
哦豁~ 发表于 2023-11-7 10:37
用扫描的方式就可以实现。一瞬间让某个灯亮起:12  -> 13 -> 21 -> 23 -> 24 -> 31 -> 32 -> 34 -> 41 -> 4 ...

我前两个灯以及后面六个灯用按键来控制的,第一二个灯按键长按切换,后六个按键短按实现一个灯亮到六个灯全亮,现在的现象是后面的灯有时会影响到前两个灯亮,扫描的方式怎么样才能更好的消除这二者的影响,方便写一下吗,谢谢。
作者: 人中狼    时间: 2023-11-7 11:01
板凳说的是对的,不过线路是没错的
作者: 哦豁~    时间: 2023-11-7 11:13
Bikho 发表于 2023-11-7 10:45
如何才算是扫描过快,我现在后面六个灯用按键控制的,然后当有个亮的时候第一或第二个灯会亮,但是会暗些

程序上确保这3点:
1. 调用扫描LED程序的时间,间隔是稳定的,这个可以用定时器中断来做,因为扫描程序本身不会占用多少时间。比如每100uS调用它一次,不要这会100uS等下变成200uS;
2. 通常我是100uS刷一次。CPU主频更快程序进程少的话,也就是条件允许,可以刷得更快;
3. 刷某一个灯时,这个灯对应的2个管脚是输出脚,其余脚设置成高组态;

代码我不会帮你写,平台不一样。且我认为提供解决思路与办法,永远比直接给代码更加负责。根据别人的思路或自己想出来思路,然后自己用代码实现出来,自己才会得到提升。
作者: lkc8210    时间: 2023-11-7 21:14
Bikho 发表于 2023-11-7 10:43
LD1和LD4方向不同啊,应该不会同时亮的吧

你说的对,我看错了
作者: asmmcu    时间: 2023-11-7 21:55
先LED1为1,其它LED2~4 轮流持续1毫秒为0再拉高,同样,再到LED2为1,重复前面方法,不断循环即可全亮。
作者: chenmingwu    时间: 2023-11-7 22:54
矩阵正反扫,不亮的IO要高阻态才行
作者: 大漠落日    时间: 2023-11-8 08:16
采用双向扫描法,平时我们用的LED都是单向扫描,电流方向不会变,你如果减少口线数量,就采用双向扫描,电路要改改,
作者: 圣博朗西斯    时间: 2023-11-13 15:17
分时扫描
作者: 984905742    时间: 2023-11-28 14:01
减少口线数量,就采用双向扫描,电路要改改,
作者: hhh402    时间: 2023-11-29 23:30
这种接法IO口必须有推挽模式和高阻模式,89C52不可以,每次只点亮一个LED,一个IO推挽输出1,另一个IO输出0,其它2个IO必须为高阻。通过动态扫描方式可以实现全部LED点亮,类似数码管的点亮方式,n个IO最多可以控制n*(n-1)个LED,楼主4个IO最多控制4*3=12个LED。
作者: shenqiwei    时间: 2023-11-30 03:49
你可以用中断优先级,让不同的灯,一起亮




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1