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