这么简单的数码管,直接用带LED串行点阵的单片机就可以驱动了,最多9个IO驱动64个LED,而且还能调亮度,不仅能调16级亮度,还可以让同时亮的LED显示两种不同的亮度。
![]() ![]() |
P3M1/P3M0是STC单片机的P3口配置寄存器,拿来设置I/O口工作模式的 |
关于188数码管,经过研究与实践,几点总结: 1.单片机IO口要有推挽输出和高阻输入模式,我用的是STC32G单片机,在实践中采用推挽输出和高阻输入两种模式配合驱动。(使用准双向和高阻模式时,亮度暗,不推荐)。 2.先测试各引脚的电平与字段的对应关系,得出引脚驱动电平关系表(红色为高电平、蓝色为低电平)。 ![]() 3.根据驱动电平关系表配置IO口。 下图为IO配置代码表,本案例使用P1.3-P1.7驱动。 ![]() 4.逐段驱动(总20段),动态扫描。 以第三位为例,扫描程序如下: ![]() 每扫描完成一个字段,都需要消隐,不然会出现鬼影。 显示效果如下图: ![]() |
问下P3M1/P3M0分别指代什么?是分别指代共阳端和负极吗? |
我是CSDN的原创作者,评论区各位都是在瞎扯淡,这个代码已经是用在量产产品了,根本没有你们所说的问题,肯定是楼主单片机的寄存器没有配置好, |
蚂蚁科技 发表于 2023-7-22 20:03 楼主文中有链接。 ![]() |
这个数组是怎么得来的?怎么取模的? |
你这代码就是查理复用。沙发的一次只点亮一个灯,亮度为你现在驱动的1/4,还没你现在驱动好。 消隐后要先准备数据,再拉低相应脚,使需要亮的LED同时亮。 你代码框架不好,整理了一下。
|
能不能分享完整的源代码,我想学习一下,谢谢! |
哎呀!我也遇到这样的问题了 |
wulin 发表于 2022-2-12 21:10 ![]() |
先显示再消影,你先消影再显示就相当于程序跑了一圈,然后你开头灭一下 大部分时间都是亮的 |
采用查理复用IO驱动方式,扫描周期小于1.25ms,每次只需点亮一个笔段,分16次完成一轮,不必消隐。
![]() |