數(shù)碼管的靜態(tài)顯示與動(dòng)態(tài)顯示介紹
數(shù)碼管是單片機(jī)系統(tǒng)中經(jīng)常用到的顯示器件, 從內(nèi)部結(jié)構(gòu)上可以分為共陰極和共陽(yáng)極數(shù)碼管。對(duì)不同的數(shù)碼管,電路的接法也不一樣。圖1A為數(shù)碼管的結(jié)構(gòu)圖。以共陽(yáng)極數(shù)碼管為例, 要想點(diǎn)亮某段, 只需要在相應(yīng)的段上給低電平即可。圖1B為共陽(yáng)極數(shù)碼管段碼分布, 以及一個(gè)顯示的實(shí)例。
圖1 數(shù)碼管段碼分布及顯示示例
按照工作方式, 數(shù)碼管驅(qū)動(dòng)可以分為和動(dòng)態(tài)掃描。所謂靜態(tài)顯示, 就是每一個(gè)數(shù)碼管的段碼都要獨(dú)占具有鎖存功能的輸出口, CPU把要顯示的字碼送到輸出口上,就可以使數(shù)碼管顯示對(duì)應(yīng)的字符, 直到下一次送出另外一個(gè)字碼之前, 顯示的內(nèi)容一直不會(huì)消失;動(dòng)態(tài)掃描是把所有顯示器的8個(gè)段碼中的A-dp的各個(gè)相同段連接在一起, 接到一個(gè)公共的輸出口上,而數(shù)碼管的位端分別接在另外的輸出口上,通過(guò)這兩個(gè)輸出口的兩組信號(hào)相互作用來(lái)產(chǎn)生顯示效果。即讓各位數(shù)碼管按照一定順序輪流顯示, 只要掃描頻率足夠高, 由于人眼的“ 視覺(jué)暫留”現(xiàn)象,就能連續(xù)穩(wěn)定的顯示。靜態(tài)顯示法的優(yōu)點(diǎn)是顯示穩(wěn)定、亮度大, 節(jié)約CPU時(shí)間, 但占有I/O口線較多, 硬件成本高。動(dòng)態(tài)掃描其特點(diǎn)在于能顯著降低顯示部分成本,大大減少顯示接口的連線結(jié)構(gòu)。舉例, 靜態(tài)驅(qū)動(dòng)4位數(shù)碼管, 需要4×8=32個(gè)I/O口, 而動(dòng)態(tài)的驅(qū)動(dòng)位數(shù)碼管只需要4+8=12個(gè)I/O口。
電路圖詳解
單片機(jī)的I/O資源是有限的, 因此如何節(jié)省I/O口線而又不影響系統(tǒng)的功能是單片機(jī)工程師面臨的實(shí)際問(wèn)題。圖2采用是串行轉(zhuǎn)并行芯片74HC595和三線一八線譯碼器實(shí)現(xiàn)8位數(shù)碼管的驅(qū)動(dòng), 好處是可以節(jié)省更多的I/O口線作其他用途。正常驅(qū)動(dòng)8個(gè)數(shù)碼管需要8+8=16根口線, 采用595+138的方式只需要3+3=6根。
圖2 數(shù)碼管顯示電路連接圖
為了更好地理解電路, 這里簡(jiǎn)單介紹一下74HC595和74LS138兩個(gè)芯片的作用。74HC595是一款串行移位輸入、8位并行輸出的芯片, 內(nèi)帶數(shù)據(jù)移位寄存器和三態(tài)輸出鎖存器;SER為串行數(shù)據(jù)輸入;SRCLK為移位時(shí)鐘輸入;RCLK為鎖存控制輸入;QA-QH為數(shù)據(jù)輸出, QH’為向下一片(位)的串行數(shù)據(jù)輸出。74LS138是一個(gè)3線一8線的譯碼器, 低電平有效輸出, 因此每個(gè)時(shí)刻輸出端口只有一個(gè)是低電平, 其余都是高電平輸出, 因此可以驅(qū)動(dòng)共陰極數(shù)碼管。如果驅(qū)動(dòng)共陽(yáng)極的數(shù)碼管還需要做一個(gè)非門的轉(zhuǎn)換。最后, 為了增加單片機(jī)I/O的輸出能力, 在74HC595與數(shù)碼管之間串接了一個(gè)74HC245并行驅(qū)動(dòng)芯片。
從電路圖中可以看到, 每個(gè)芯片的電源和地附近都接了一個(gè)104電容, 這個(gè)高頻濾波電容, 可以減小電源對(duì)IC的影響。注意高頻電容的布線, 連線應(yīng)靠近電源端并盡量粗短, 否則, 等于增大了電容的等效串聯(lián)電阻, 會(huì)影響濾波效果。其實(shí), 不加這個(gè)電容也可以, 但萬(wàn)一因?yàn)楦蓴_出了問(wèn)題, 就會(huì)很難查找根源, 實(shí)際調(diào)試電路板的時(shí)候就會(huì)發(fā)現(xiàn)電容的作用非常大的, 而這些恰恰是初學(xué)者容易忽略的地方。
關(guān)健程序分析
動(dòng)態(tài)掃描需要注意的一個(gè)問(wèn)題, 由于所有數(shù)碼管的段碼接到一個(gè)公用的I/O上, 在每個(gè)瞬間, 各個(gè)位數(shù)碼管上的段碼都是一樣的, 要想在不同的位顯示不同的信息, 必須用掃描顯示的方式, 在一段時(shí)間內(nèi), 只點(diǎn)亮一個(gè)數(shù)碼管, 其余的都處于關(guān)閉狀態(tài);下一個(gè)時(shí)間段內(nèi)點(diǎn)亮下一個(gè)數(shù)碼管, 其余的都處于關(guān)閉狀態(tài)。如此循環(huán), 造成一個(gè)視覺(jué)暫留的效果, 當(dāng)閃爍的頻率大于50Hz的時(shí)候, 人眼就分辨不出來(lái)了, 即各個(gè)位上顯示的信息就“ 區(qū)分”開(kāi)了。掃描頻率過(guò)高, 每個(gè)位顯示的時(shí)間太短, 數(shù)碼管的亮度不夠;掃描頻率過(guò)低, 會(huì)有明顯的閃爍感。這個(gè)時(shí)間需要根據(jù)不同的硬件電路, 做不同的調(diào)整, 而且跟數(shù)碼管的個(gè)數(shù)有關(guān), 一般的經(jīng)驗(yàn)值延時(shí)10ms左右。
圖3 數(shù)碼管流程圖
總結(jié)
動(dòng)態(tài)掃描過(guò)程中, LED顯示的亮度同驅(qū)動(dòng)電流、點(diǎn)亮?xí)r間和關(guān)斷時(shí)間有關(guān), 調(diào)整驅(qū)動(dòng)電流大小和掃描頻率, 可以控制LED顯示的亮度, 同時(shí)穩(wěn)定顯示。這需要在實(shí)際的調(diào)試過(guò)程中不斷的嘗試, 找到一個(gè)最佳臨界點(diǎn)!對(duì)于尺寸比較大的數(shù)碼管, 可以在74HC245與數(shù)碼管之間再串接一個(gè)ULN2003(7段)或者ULN2803(8段)達(dá)林頓管增加驅(qū)動(dòng)能力。