- 顯示器件應用分析精粹:從芯片架構到驅動程序設計
- 龍虎
- 3714字
- 2024-05-10 13:37:36
第5章 LED數碼管靜態驅動邏輯芯片
討論完圖4.7與圖4.8所示的驅動共陽數碼管電路實例后,有人可能會想:從原理上講,這兩個電路中的三極管與ULN2003A都是一個非邏輯,那我直接使用(手頭恰好僅有的)74LS04(六反相器)代替也應該是可以的呀!真是一個舉一反三的好學生,說做就做,于是馬上搭建相應的仿真電路,如圖5.1所示。

圖5.1 反相器驅動共陽數碼管
仿真電路中的數碼管顯示狀態完全正確,然后興沖沖地著手硬件電路的焊接與調試,發現也能夠使數碼管達到預定的效果。盡管如此,并不建議使用74LS04來驅動數碼管(當然,只是搭建電路玩一玩還是可以的),原因就在其數據手冊給出的推薦工作條件,見表5.1。
表5.1 74LS04推薦工作條件

表5.1中標記低電平輸出電流的推薦最大值只有8mA,如果數碼管需要的驅動電流更大就不太適合(顯示亮度達不到要求)。雖然將限流電阻減小后,輸出電流自然會有所上升,但長時間工作在超出芯片推薦參數的狀態可能會導致無法預知的后果。
有人可能還是會抬杠:那用74HC04總可以吧(見本章末尾注),我看它的輸出額定電流都達到25mA了!然而,仍然不推薦這樣做,答案還是在數據手冊中,見表5.2中的極限工作條件。
表5.2 74HC04極限工作條件

雖然74HC04的輸出驅動電流達到了25mA,但是ICC與IGND最大值僅為50mA,也就是說,74HC04的總供電電流不能超過50mA。如果六個反相器驅動一個數碼管,每個輸出引腳的驅動電流只要超過10mA,就已經超出了總供電電流的極限值,這也是不嚴謹的電路設計。
總之,無論如何都不應該以“想當然(猜)”的態度進行電路設計,電路系統中每一個網絡的電流或電壓設置都應該做到有理有據。
對于實在懶得去分析數碼管各種顯示字符對應字型碼的讀者,也可以使用74系列邏輯芯片中的二—十進制(Binary-Coded Decimal,BCD)碼轉七段(Seven Segment)譯碼器74LS46/47(驅動共陽數碼管)或74LS48(驅動共陰數碼管),這樣只需要輸入0~9對應的二進制電平信號就可以顯示相應的數字了,是不是很方便?以74LS47驅動共陽數碼管為例,相應的Proteus軟件平臺仿真電路如圖5.2所示(數碼管的段引腳從左至右依次分別與74LS47輸出QA、QB、QC、QD、QE、QF、QG連接)。

圖5.2 邏輯芯片74LS47驅動共陽數碼管
74LS46/47的輸出也是OC結構,這意味著它們不具備輸出高電平的能力,如圖5.3所示。

圖5.3 74LS46/47的OC輸出結構
這是一個“或邏輯”電路,當VT1(虛線表示實際可能是二輸入或三輸入或門)、VT2、VT3任意一個基極輸入為高電平時而導通時,VT4的基極則為低電平,這將導致VT4與VT5均處于截止狀態,此時輸出(OUTPUT)處于懸空(OC)狀態。為了輸出高電平,我們必須在VT5的集電極與電源VCC之間連接一個上拉電阻。當想通過給VT1、VT2、VT3的基極輸入低電平而使VT5處于導通狀態時,同樣也需要上拉電阻給VT5集電極提供電壓才能輸出低電平。在驅動共陽數碼管時,限流電阻與其串聯的每個LED發光單元就相當于上拉電阻,而VT5處于截止狀態時輸出將會被拉高(當然,這只是實際元器件的電路行為,仿真電路中可并不一定是這樣)。
OC輸出結構的好處就在于可以方便地實現“線與(Wire-AND)”邏輯,如果要實現多個信號線的“與”邏輯運算,可能會想到使用與邏輯電路芯片,但這毫無疑問會增加成本,使用OC輸出就可以直接把這幾個信號連接在一起即可,如圖5.4所示。

圖5.4 多個OC輸出形成的線與邏輯
只要連接一個共用的上拉電阻,就可以實現多個信號的與邏輯,而且它帶來的另一個好處是:通過給上拉電阻連接不同的電源,就可以方便地實現電平轉換,以達到匹配后級接收電路的目的。
有些讀者可能想問:按照表4.1所示電平狀態,圖5.2所示數碼管的段a不是也應該處于點亮狀態嗎?另外,為什么要通過一個電阻將引腳上拉到高電平呢?為了找到答案,下面來看一下74LS47的功能真值表,見表5.3。
這里提醒一下:引腳名上面加一橫線表示低有效(不同廠家也會有其他不同的表達方式,例如,在引腳名后面加符號“#”或小寫字母“n”,讀者了解一下即可)。通俗地說,當我們把低有效的引腳拉低時,它所代表的功能才會起到作用。例如,AT89C1051的復位引腳名為RST,表示復位引腳是高有效的,當我們把RST引腳設置為高電平時,單片機將處于復位狀態,有些單片機的復位引腳名為,這就表示必須把它設置為低電平才能將單片機復位。
表5.3 74LS47功能真值表

可以看到,當輸入BCD碼為6時,段a與b為高電平,而表4.1中卻只有段b為高電平(共陽驅動電平取反),這只是芯片的譯碼規則不同而已。另外,在輸入0~15共16個BCD碼時,必須將設置為高電平才能夠使段輸出有效,下面結合芯片內部功能框圖詳細討論一下該控制引腳的具體含義,如圖5.5所示。

圖5.5 74LS47邏輯框圖
當(Lamp Test Input,試燈輸入)為低電平時,無論輸入的BCD碼為多少,所有段輸出均為低電平(共陽數碼管顯示數字“8”),這可以用來測試數碼管各段是否能夠正常發光。
低電平的控制路徑有三條,其一經過緩沖器(邏輯門輸入或輸出的圓圈代表非邏輯,線路上兩個圓圈相當于兩次非邏輯,所以邏輯并沒有發生變化,它起到緩沖輸入電平的作用,這樣可以提升帶負載能力。如果沒有進行電平緩沖,就相當于外部給
引腳施加的信號會直接驅動芯片內部多個邏輯門,這將會加重電路設計者的負擔,因為我們得提供輸出電阻足夠小的信號,以避免出現驅動能力不足的現象)后與A、B、C進行與非邏輯運算,相當于輸入BCD碼的低3位都是0,而輸入D并沒有被
直接控制,所以輸入的四位有效BCD碼只能是0b0000(0,沒有加前后綴表示十進制)或0b1000(8)。
再回看表5.3。當輸入BCD碼分別為0或8時,除段g外其他都是0,所以當務之急是把段g也拉低。為此低電平另一方面使四輸入與門(左下方)輸出低電平,然后與旁邊的三輸入與門的輸出同時連接到兩輸入或非門(與門輸入有兩個圓圈,表達的邏輯為
,轉換一下則有
)。
也就是說,為了最終成功將段g拉低,我們還必須將三輸入與門的所有輸入都設置為低電平,這涉及的第三個路徑,即
低電平經緩沖器后使六輸入與非門輸出高電平,經過緩沖器后(電平不改變)使能四個與非門(灰色填充的,最左側那個此時沒有使用到)。由于
為低電平,而三個與非門的另一個輸入也都為高電平,這樣輸出都為低電平,它們連接到三輸入與門而使其輸出高電平,最后通過非門拉低段g的引腳電平,第一個回合打完收工。
在正常工作時,如果輸入BCD碼為全0,譯碼器輸出本應該驅動數碼管顯示數字0,然而一旦(Ripple Blanking Input,行波滅零輸入,顧名思義,就是“消滅”數字0顯示,至于行波是什么意思呢?很快我們就會知道)為低電平,則譯碼器輸出為全1,數碼管將沒有點亮的段,也就達到了“消滅”數字0顯示的目的。從圖5.5可以看到,
為低電平(經過非門后為高電平)時并不影響六輸入與非門的狀態,但此時其他五個輸入引腳都為高電平(其中四個來自全0的輸入BCD碼經非邏輯所得,另一個為高電平狀態的
),由此獲得的輸出低電平經緩沖器后使四個與非門輸出為高電平,它們將使所有段輸出都拉高。
(Blanking Input,滅燈輸入)可以控制多位數碼管的滅燈狀態,當其為低電平時,無論其他輸入引腳處于什么狀態,譯碼器輸出均為高電平,這樣共陽數碼管將全部熄滅。從圖5.5可以看到,它把六輸入與非門的輸出強行設置為低電平,這樣輸入BCD的狀態不再影響該低電平,也就可以將前述滅燈狀態一直保持。簡單地說,我們不但可以在譯碼輸出為0時滅燈,其他譯碼輸出也可以進行滅燈。
有人可能會問:當六輸入與非門的任意一個輸入為低電平時,它的輸出不就被上拉為高電平了嗎?滅燈輸入不就無效了?問得好!我們來看看這塊電路的結構,如圖5.6所示。
從圖中可以看到,左側(六輸入與非門)是連接有上拉電阻的OC結構輸出,所以它具備“線與”邏輯功能,而右側是一個標準TTL(Transistor-Transistor Logic,三極管—三極管邏輯)電路輸入。當引腳從外部被拉低之后,即使六輸入與非門的輸入狀態試圖使輸出為高電平,也不會影響已有的低電平狀態(“線與”邏輯)。在正常顯示時,
引腳可以懸空,圖5.2就是這樣做的。

圖5.6 BI引腳結構
有時候可能會有這種需求:如果顯示的數字以“0”開頭就不顯示那些無意義的“0”,例如,數字“0098”就僅顯示“98”,“0”對應的數碼管則完全熄滅,該怎么辦呢?這涉及與復用的一個引腳
(Ripple Blanking Output,行波滅零輸出),它可以控制多位數碼顯示的滅燈狀態,這是什么意思呢?也就是說,可以把這個引腳與其他74LS46/47芯片的
連接,從而獲得多位數碼管同時滅零的功能。
有人可能會問:功能有什么用?我直接把所有
連接在一起控制滅零不是一樣嗎?這似乎很有道理,但是如果有100個甚至更多數碼管需要滅零該怎么辦?使用一個單片機引腳同時驅動這么多并聯的
(相當于驅動多個邏輯門)可并不現實,很有可能會出現前述驅動能力不足的現象,因為一個引腳的扇出系數(驅動同類邏輯門的個數)總是有限的。更何況,也不能把所有的零都滅掉呀,假設現在要顯示數字“9800”,這里面的兩個“0”可是有實際意義的。
如果把第一片74LS47的與第二片74LS47的
連接,第二片的74LS47的
與第三片
連接,其他依此類推,滅零控制信號將逐級像水波紋一樣擴散到達所有需要滅零的芯片,這就是行波的意思。如果某一級輸出顯示數字不為零,就不會對剩下串聯的74LS47發出滅零控制信號,如圖5.7所示。

圖5.7 行波滅零
注:“LS”系列芯片基于TTL工藝,表示“Low Power Schottky Logic(低功耗肖特基邏輯)”,內部電路是由雙極型晶體管(三極管)制作而成,而“HC”系列芯片基于CMOS(Complementary Metal Oxide Semiconductor,互補金屬氧化物半導體)工藝,表示“High Speed CMOS Logic(高速CMOS邏輯)”,芯片內部電路由互補場效應管制作而成,后續還會進一步討論。