lclbf
发表于 2023-11-29 10:52:34
rengran 发表于 2023-11-28 16:53
没有公共端啊?这样的话只能使用pin脚单独控制了,或者使用锁存器来减少单片机端口输出 ...
看见别人用普通的单片机,直接5个IO口驱动,不自动程序是如何实现的。
rengran
发表于 2023-11-29 11:08:07
lclbf 发表于 2023-11-29 10:52
看见别人用普通的单片机,直接5个IO口驱动,不自动程序是如何实现的。
IO口复用了?那样的话可能是利用数码管动态扫描的原理,程序的话就得设计的很巧妙了,而且刷新时间要求也挺高的
angmall
发表于 2023-11-29 21:26:18
本帖最后由 angmall 于 2023-11-29 21:28 编辑
使用Charlieplexing查理复用技术使用5个io口控制16个LED的51单片机程序
基于Charlieplexing(查理复用算法)实现5个GPIO控制16个LED灯
5个IO口最多可以控制20个LED,现成的程序不太好找。这有个实例,STC8G1K08A就6个IO口,能用的就只剩3个,无奈才写了3个IO口控制4个LED的程序。由于LED数量太少,就没有费神精炼代码,只把4个LED驱动封装成函数调用。权当抛砖引玉。
void LED1()
{
P3M0=0x03;//P3.0推、3.1推、3.2高0000 0011
P3M1=0x04;//P3.0推、3.1推、3.2高0000 0100
P30=0;P31=1;P32=1;
}
void LED2()
{
P3M0=0x03;//P3.0推、3.1推、3.2高0000 0011
P3M1=0x04;//P3.0推、3.1推、3.2高0000 0100
P30=1;P31=0;P32=1;
}
void LED3()
{
P3M0=0x06;//P3.0高、3.1推、3.2推0000 0110
P3M1=0x01;//P3.0高、3.1推、3.2推0000 0001
P30=1;P31=0;P32=1;
}
void LED4()
{
P3M0=0x06;//P3.0高、3.1推、3.2推0000 0110
P3M1=0x01;//P3.0高、3.1推、3.2推0000 0001
P30=1;P31=1;P32=0;
}
attach://28311.docx
查理复用IO驱动数码管.docx
lclbf
发表于 2023-11-30 07:54:55
angmall 发表于 2023-11-29 21:26
使用Charlieplexing查理复用技术使用5个io口控制16个LED的51单片机程序
基于Charlieplexing(查理复用算法 ...
谢谢你的代码!
lclbf
发表于 2023-12-1 08:10:32
angmall 发表于 2023-11-29 21:26
使用Charlieplexing查理复用技术使用5个io口控制16个LED的51单片机程序
基于Charlieplexing(查理复用算法 ...
按照你的方法,用STC15W61S4点亮数码管188.
stb988
发表于 2023-12-3 10:11:13
4位数码管最少可以用多少个IO口驱动呢?
angmall
发表于 2023-12-3 16:09:09
stb988 发表于 2023-12-3 10:11
4位数码管最少可以用多少个IO口驱动呢?
基于Charlieplexing(查理复用算法)实现 7个IO口可以驱动42LED
这个小数码管很有意思,只有7个pin脚
lclbf
发表于 2023-12-4 08:00:03
angmall 发表于 2023-12-3 16:09
基于Charlieplexing(查理复用算法)实现 7个IO口可以驱动42LED
把你写的程序发出来学习一下。
stb988
发表于 2023-12-4 08:41:30
angmall 发表于 2023-12-3 16:09
基于Charlieplexing(查理复用算法)实现 7个IO口可以驱动42LED
这个牛啊,这么小的Io口可以驱动这个数码管
jackfangxq
发表于 2023-12-4 21:38:30
👍