熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2022-11-13 13:54
正文摘要:請(qǐng)問消隱延時(shí)多少時(shí)間合適? 數(shù)碼管直接連的P0口,顯示沒有頻閃但亮度不夠。 單片機(jī)源程序如下: |
| 這樣做,消陷(切換)不要再做任何DELAY。亮度達(dá)到極至! |
|
掃屏顯示的切換應(yīng)當(dāng)用最少的指令完成,在不多于8個(gè)LED的情況下:三條指令即可完成,對(duì)于STC的單片機(jī),10us不到就完成了,例:8個(gè)LED哪個(gè)亮(位選)受P1控制,顯示什么內(nèi)容(段碼)由P0決定。 要點(diǎn):技巧如下!!! 先將哪個(gè)LED需要亮的參數(shù)事先準(zhǔn)備好,放在:P1_OUT變量中,同樣將這個(gè)LED需要顯示的段碼放在P0_OUT中。【這個(gè)做法最關(guān)鍵,不要直接切換操作P0、P1口,而是通過這兩個(gè)變量來操作。原因是,無論你用多長時(shí)間對(duì)P1_OUT、P0_OUT進(jìn)行操作,操作期間,顯示不受影響。】 切換: 第一條指令:關(guān)斷所有顯示:P1=FFH ;關(guān)閉所有顯示 第二條指令:切換LED段碼:P0=P0_OUT ;這時(shí)顯示已關(guān),切換不會(huì)有殘留,重影,閃爍了。 第三條指令:更新顯示的LED管:P1=P1_OUT ;點(diǎn)亮需要顯示的LED,例如:11101111B 【這個(gè)做法是最優(yōu)秀的掃描顯示切換方法,用時(shí)最短,最合理,沒有之二!!!】 重復(fù)一下關(guān)鍵點(diǎn):事先處理準(zhǔn)備好變量P1_OUT、P0_OUT的值。 |
|
本帖最后由 名字不是重點(diǎn) 于 2022-11-14 11:31 編輯 為什么不用驅(qū)動(dòng)IC?4位管的驅(qū)動(dòng)很多。軟硬件的開銷并不會(huì)增加太多。比如TM1650等等。 因?yàn)轵?qū)動(dòng)自帶刷屏所以使用更方便、亮度更均勻。而且MCU只在需要更新顯示時(shí)才送數(shù)據(jù),其它時(shí)間閑得一弊。。 我之前用8個(gè)74HC595驅(qū)動(dòng)4塊8*8,亮度與頻閃總是不能平衡,后來直接用2個(gè)1629來驅(qū)動(dòng),爽歪歪了。唯一遺憾1629是不能級(jí)聯(lián),只能通過片選來復(fù)用SDA/SCK來省IO了。 |
lkc8210 發(fā)表于 2022-11-13 22:28 正解!!!!!!!!! |
雖說延時(shí)越長越亮 但全管的更新時(shí)間不能大于20ms 如你用四位管 20ms/4=5ms 即單管的延時(shí)不能大于5ms |
Powered by 單片機(jī)教程網(wǎng)