我們可以通過單片機(jī)控制三極管的基極來間接控制后邊的小燈的亮滅,,用法大家基本熟悉了。還有一個控制就是進(jìn)行不同電壓之間的轉(zhuǎn)換控制,,比如我們的單片機(jī)的IO口是5V系統(tǒng),,如果直接接12V系統(tǒng)會燒壞單片機(jī),所以我們加一個三極管,,三極管的工作電壓高于單片機(jī)的IO口電壓,,用5V的IO口來控制12V的電路,如圖1所示,。
圖1 三極管控制電路圖
圖1里所示,,當(dāng)IO口輸出高電平5V時,三極管導(dǎo)通,,OUT輸出低電平0V,,當(dāng)IO口輸出低電平時,三極管截止,,OUT則由于上拉電阻R2的作用而輸出12V的高電平,,這樣就實現(xiàn)了低電壓控制高電壓的工作原理。
所謂的驅(qū)動,,主要是指電流輸出能力,。我們再來看這兩個圖之間的對比
圖2 LED小燈對比示意圖
圖2中上邊的LED燈,和我們第二課講過的LED燈是一樣的,,當(dāng)IO口是高電平時,,小燈熄滅,,當(dāng)IO口是低電平時,,小燈點(diǎn)亮,。
下邊那個圖呢,按照這種推理,,IO口是高電平的時候,,應(yīng)該有電流流過并且點(diǎn)亮小燈,但是實際并非如此,。
單片機(jī)主要是個控制器件,,具備四兩撥千斤的特點(diǎn)。就如同杠桿必須有一個支點(diǎn)一樣,,想要撐起整個地球必須有力量承受的支點(diǎn),。單片機(jī)的IO口可以輸出一個高電平,但是他的輸出電流很有限,,普通IO口輸出高電平的時候,,大概只有幾十到幾百uA的電流,達(dá)不到1mA,,也就點(diǎn)不亮這個LED小燈或者亮度很低,,這個時候如果我們想高電平點(diǎn)亮LED,用上三極管就可以這樣來處理,,我們板上的這種型號,,可以通過500mA的電流,有的三極管通過的電流還更大一些,,如圖3所示,。
圖3 三極管驅(qū)動LED小燈
圖3中,當(dāng)IO口是高電平,,三極管導(dǎo)通,,因為三極管的電流放大作用,c極電流就可以達(dá)到mA以上了,,就可以成功點(diǎn)亮LED小燈,。
雖然我們用了IO口的低電平可以直接點(diǎn)亮LED,但是單片機(jī)的IO口作為低電平,,輸入電流就可以很大嗎,?這個我想大家都能猜出來,當(dāng)然不可以,。單片機(jī)的IO口電流承受能力,,不同型號不完全一樣,就STC89C52來說,,官方手冊的81頁有對電氣特性的介紹,,整個單片機(jī)的工作電流,,不要超過50mA,單個IO口總電流不要超過6mA,。即使一些增強(qiáng)型51的IO口承受電流大一點(diǎn),,可以到25mA,但是還要受到總電流50mA的限制,。那我們來看電路圖的8個LED小燈的這個部分電路,,如圖4所示。
圖4 LED電路圖(一)
4圖示這里我們要學(xué)會看電路圖的一個知識點(diǎn),,大家注意看,,電路圖右側(cè)所有的LED下側(cè)的線最終都連到一根黑色的粗線上去了,大家注意,,這個地方不是實際的完全連到一起,,而是一種總線的畫法,畫了這種線以后,,表示這是個總線結(jié)構(gòu),,所有的名字一樣的是一一對應(yīng)的連接到一起,其他名字不一樣的,,是不連到一起的,。比如左側(cè)的DB0和右側(cè)的最左邊的LED2小燈下邊的DB0是連在一起的,而和DB1等其他線不是連在一起的,。
那么我們把4電路圖里的我們現(xiàn)在需要講的這部分再摘出來看,。
圖5 LED電路圖(二)
大家通過5的電路圖來計算一下,5V的電壓減去LED本身的壓降,,減掉三極管e和c之間的壓降,,限流電阻用的是330歐,那么每條支路的電流大概是8mA,,那么8路LED如果全部同時點(diǎn)亮的話電流總和就是64mA,。這樣如果直接接到單片機(jī)的IO口,那單片機(jī)肯定是承受受不住的,,即使短時間可以承受,,長時間工作就會不穩(wěn)定,甚至導(dǎo)致單片機(jī)燒毀,。
有的同學(xué)會提出來可以加大限流電阻的方式來降低這個電流,。比如改到1K,那么電流不到3mA,,8路總的電流就是20mA左右,。首先,降低電流會導(dǎo)致LED小燈亮度變?nèi)?,小燈的亮度可能關(guān)系不大,,因為我們同樣的電路接了數(shù)碼管,,后邊我們要講數(shù)碼管還要動態(tài)顯示,如果數(shù)碼管亮度不夠的話,,那視覺效果就會很差,,所以降低電流的方法并不可取,;其次,,對于單片機(jī)來說,,他主要是起到控制作用,,電流輸入和輸出的能力相對較弱,P0的8個口總電流也有一定限制,,所以如果接一兩個LED小燈觀察,,可以勉強(qiáng)直接用單片機(jī)的IO口來接,但是接多個小燈,,從實際工程的角度去考慮,,就不推薦直接接IO口了。那么我們?nèi)绻脝纹瑱C(jī)控制多個LED小燈該怎么辦呢,?
除了三極管之外,,其實還有一些驅(qū)動IC,這些驅(qū)動IC可以作為單片機(jī)的緩沖器,,僅僅是電流驅(qū)動緩沖,,不起到任何邏輯控制的效果,比如我們板子上用的74HC245D這個芯片,,這個芯片在邏輯上起不到什么別的作用,,就是當(dāng)做電流緩沖器的,我們通過查看其數(shù)據(jù)手冊,,74HC245穩(wěn)定工作在70mA電流是沒有問題的,,比單片機(jī)的8個IO口大多了,所以我們可以把他接在小燈和IO口之間做緩沖,,如圖6所示
圖6 74HC245功能圖
從圖6我們來分析,,其中VCC和GND就不用多說了,細(xì)心的同學(xué)會發(fā)現(xiàn)這里有個0.1uF的去耦電容噢,。
74HC245是個雙向緩沖器,,1引腳DIR是方向引腳,當(dāng)這個引腳接高電平的時候,,右側(cè)所有的B編號的電壓都等于左側(cè)A編號對應(yīng)的電壓,。比如A0是高電平,那么B0就是高電平,,A1是低電平,,B1就是低電平等等,。如果DIR引腳接低電平,得到的效果是左側(cè)A編號的電壓都會等于右側(cè)B編號對應(yīng)的電壓,。因為我們這個地方控制端是左側(cè)接的是P0口,,所以我們要求B等于A的狀態(tài),所以1腳我們直接接的高電平,。圖6中還有一排電阻R10到R17是上拉電阻,,這個電阻的用法我們在后邊介紹。
還有最后一個使能引腳19腳OE,,這個引腳上邊有一橫,,表明是低電平有效,當(dāng)接了低電平后,,74HC245就會按照剛才上邊說的起到雙向緩沖器的作用,,如果OE接了高電平,那么無論DIR怎么接,,A和B的引腳是沒有關(guān)系的,,也就是74HC245功能不能實現(xiàn)出來。
從我們的電路圖7可以看出來,,我們的P0口和74HC245的A端是直接接起來的,。這個地方,有個別同學(xué)有一個疑問,,就是我們明明在電源VCC那地方加了一個三極管驅(qū)動了,,為何還要再加245驅(qū)動芯片呢。這里大家要理解一個道理,,電路上從正極經(jīng)過器件到地,,首先必須有電流才能正常工作,電路中任何一個位置斷開,,都不會有電流,,器件也就不會參與工作了。其次,,和水流一個道理,,從電源正極到負(fù)極的電流水管的粗細(xì)都要滿足要求,任何一個位置的管子過細(xì),,都會出現(xiàn)瓶頸效應(yīng),,電流在整個通路中細(xì)管處會受到限制而降低,所以在電路通路的每個位置上,,都要保證足夠通道足夠暢通,,這個245的作用就是消除單片機(jī)IO這一環(huán)節(jié)的瓶頸。
圖7 單片機(jī)和74HC245接口
|