![]() |
這樣做,消陷(切換)不要再做任何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 |