| 这样做,消陷(切换)不要再做任何DELAY。亮度达到极至! |
|
扫屏显示的切换应当用最少的指令完成,在不多于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的值。 |
|
本帖最后由 名字不是重点 于 2022-11-14 11:31 编辑 为什么不用驱动IC?4位管的驱动很多。软硬件的开销并不会增加太多。比如TM1650等等。 因为驱动自带刷屏所以使用更方便、亮度更均匀。而且MCU只在需要更新显示时才送数据,其它时间闲得一弊。。 我之前用8个74HC595驱动4块8*8,亮度与频闪总是不能平衡,后来直接用2个1629来驱动,爽歪歪了。唯一遗憾1629是不能级联,只能通过片选来复用SDA/SCK来省IO了。 |
lkc8210 发表于 2022-11-13 22:28 正解!!!!!!!!! |
虽说延时越长越亮 但全管的更新时间不能大于20ms 如你用四位管 20ms/4=5ms 即单管的延时不能大于5ms |