在我們設計單片機電路的時候,單片機的io口數量是有限的,有時并滿足不了我們的設計需求,比如我們的stc89c52rc一共是32個io口,但是我們?yōu)榱丝刂聘嗟钠骷?,就要使用一些外圍的數字芯片,這種數字芯片由簡單的輸入邏輯來控制輸出邏輯,比如74hc138這個三八譯碼器,圖1是74hc138在我們原理圖上的一個應用。
圖174hc138應用原理圖
從這個名字來分析,三八譯碼器,就是把3種輸入狀態(tài)翻譯成8種輸出狀態(tài)。從圖1所看出來的,74hc138一共有1~6一共是6個輸入引腳,但是其中4、5、6這三個引腳是使能引腳。使能引腳和我們前邊講74hc245的oe引腳是一樣的,這三個引腳如果不符合規(guī)定的輸入要求,y0到y(tǒng)7不管你輸入的1、2、3引腳是什么電平狀態(tài),總是高電平。所以我們要想這個74hc138正常工作,enled那個輸入位置必須輸入低電平,addr3位置必須輸入高電平,這兩個位置都是使能控制端口。不知道大家是否記得我們第二課的程序有這么兩句enled=0;addr3=1;就是控制使這個74hc138使能的。
這類邏輯芯片,大多都是有使能引腳的,使能符合要求了,那下面就要研究邏輯控制了。對于數字器件的引腳,如果一個引腳輸入的時候,有0和1兩種狀態(tài);對于兩個引腳輸入的時候,就會有00,01,10,11這四種狀態(tài)了,那么對于3個輸入的時候,就會出現(xiàn)8種狀態(tài)了,大家可以看下邊的這個真值表——圖,其中輸入是a2,a1,a0的順序,輸出是從y0,y1....y7的順序。
圖274hc148真值表
從圖2可以看出,任一輸入狀態(tài)下,只有一個輸出引腳是低電平,其他的引腳都是高電平。我們清楚的知道,8個led小燈的總開關三極管q16基極的控制端是leds6,也就是y6輸出一個低電平的時候,可以開通三極管q16,從右側的希望輸出的結果,我們可以推導出我們的a2,a1,a0的輸入狀態(tài)應該是110,那我們再來看下原理圖3。
圖3點亮led小燈整體示意圖
那么我們在整體捋一遍點亮led小燈的過程,首先看74hc138,我們要讓leds6為低電平才能導通三極管q16,所以enled=0;addr3=1;保證74hc138使能。然后addr2=1;addr1=1;addr0=0;這樣保證了三極管q16這個開關開通,5v電源加到led上。
而74hc245左側是通過p0口控制,我們讓p0.0引腳等于0,就是db_0等于0,而右側db0等于db_0的狀態(tài),也是0,那么這樣在這一排共8個led小燈當中,只有最右側的小燈和5v之間有壓差,有壓差就會有電流通過,有電流通過我們的led2就會發(fā)光。
74hc245左側我們可以看出來,是直接接到p0口上的,而74hc138的addr0~addr3接在何處呢?
圖4跳線帽接口部分
跳線帽是大家以后要常用的一個器件,他的作用就是起到導線的作用,我們可以通過跳線帽來實現(xiàn)連接線的切換。
圖5跳線實物圖
大家看,跳線帽本身可以占2個針的位置,現(xiàn)在是把右側和中間的針插到了一起,這樣實現(xiàn)的就是圖4中的p1.0和addr0連接到一起,p1.1和addr1接一起,p1.2和addr2接一起,p1.3和addr3接一起。