找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1507|回复: 5
收起左侧

单片机驱动动态扫描数码管消隐delay延时时间的设定

[复制链接]
ID:891876 发表于 2022-11-13 13:54 | 显示全部楼层 |阅读模式
请问消隐延时多少时间合适? 数码管直接连的P0口,显示没有频闪但亮度不够。

单片机源程序如下:
xs.JPG


回复

使用道具 举报

ID:161164 发表于 2022-11-13 22:28 | 显示全部楼层
2022-11-13_222407.png
虽说延时越长越亮
但全管的更新时间不能大于20ms
如你用四位管
20ms/4=5ms
即单管的延时不能大于5ms

回复

使用道具 举报

ID:77589 发表于 2022-11-14 10:53 | 显示全部楼层
lkc8210 发表于 2022-11-13 22:28
虽说延时越长越亮
但全管的更新时间不能大于20ms
如你用四位管

正解!!!!!!!!!
回复

使用道具 举报

ID:824490 发表于 2022-11-14 11:12 | 显示全部楼层
本帖最后由 名字不是重点 于 2022-11-14 11:31 编辑

为什么不用驱动IC?4位管的驱动很多。软硬件的开销并不会增加太多。比如TM1650等等。
因为驱动自带刷屏所以使用更方便、亮度更均匀。而且MCU只在需要更新显示时才送数据,其它时间闲得一弊。。

我之前用8个74HC595驱动4块8*8,亮度与频闪总是不能平衡,后来直接用2个1629来驱动,爽歪歪了。唯一遗憾1629是不能级联,只能通过片选来复用SDA/SCK来省IO了。
回复

使用道具 举报

ID:123289 发表于 2022-11-14 15:14 | 显示全部楼层
扫屏显示的切换应当用最少的指令完成,在不多于8个LED的情况下:三条指令即可完成,对于STC的单片机,10us不到就完成了,例:8个LED哪个亮(位选)受P1控制,显示什么内容(段码)由P0决定。
要点:技巧如下!!!
先将哪个LED需要亮的参数事先准备好,放在:P1_OUT变量中,同样将这个LED需要显示的段码放在P0_OUT中。【这个做法最关键,不要直接切换操作P0、P1口,而是通过这两个变量来操作。原因是,无论你用多长时间对P1_OUT、P0_OUT进行操作,操作期间,显示不受影响。】
切换:
第一条指令:关断所有显示:P1=FFH              ;关闭所有显示
第二条指令:切换LED段码:P0=P0_OUT         ;这时显示已关,切换不会有残留,重影,闪烁了。
第三条指令:更新显示的LED管:P1=P1_OUT  ;点亮需要显示的LED,例如:11101111B
【这个做法是最优秀的扫描显示切换方法,用时最短,最合理,没有之二!!!】
重复一下关键点:事先处理准备好变量P1_OUT、P0_OUT的值。
回复

使用道具 举报

ID:123289 发表于 2022-11-14 15:16 | 显示全部楼层
这样做,消陷(切换)不要再做任何DELAY。亮度达到极至!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表