3 5 74HC138三八解碼器的應用

2021-07-14 09:53:54 字數 1979 閱讀 1259

在我們設計微控制器電路的時候,微控制器的 io 口數量是有限的,有時並滿足不了我們的設計需求,比如我們的 stc89c52 一共有 32 個 io 口,但是我們為了控制更多的器件,就要使用一些外圍的數字晶元,這種數字晶元由簡單的輸入邏輯來控制輸出邏輯,比如 74hc138這個三八解碼器,圖 3-15 是 74hc138 在我們原理圖上的乙個應用。

圖 3-15  74hc138 應用原理圖

從這個名字來分析,三八解碼器,就是把 3 種輸入狀態翻譯成 8 種輸出狀態。從圖 3-15所能看出來的,74hc138 有 1~6 一共是 6 個輸入引腳,但是其中 4、5、6 這三個引腳是使能引腳。使能引腳和我們前邊講 74hc245 的 oe 引腳是一樣的,這三個引腳如果不符合規定的輸入要求,y0 到 y7 不管你輸入的 1、2、3 引腳是什麼電平狀態,總是高電平。所以我們要想讓這個 74hc138 正常工作,enled 那個輸入位置必須輸入低電平,addr3 位置必須輸入高電平,這兩個位置都是使能控制埠。不知道大家是否記得我們第二課的程式有這麼兩句 enled = 0;addr3 = 1;就是控制使這個 74hc138 使能的。

這類邏輯晶元,大多都是有使能引腳的,使能符合要求了,那下面就要研究控制邏輯了。對於數字器件的引腳,如果乙個引腳輸入的時候,有 0 和 1 兩種狀態;對於兩個引腳輸入的時候,就會有 00、01、10、11 這四種狀態了,那麼對於 3 個輸入的時候,就會出現 8 種狀態了,大家可以看下邊的這個真值表——圖 3-16,其中輸入是 a2、a1、a0 的順序,輸出是從y0、y1......y7 的順序。

圖 3-16  74hc138 真值表

從圖 3-16 可以看出,任一輸入狀態下,只有乙個輸出引腳是低電平,其他的引腳都是高電平。在前面的電路中我們已經看到,8 個 led 小燈的總開關三極體 q16 基極的控制端是leds6,也就是 y6 輸出乙個低電平的時候,可以開通三極體 q16,從右側的希望輸出的結果,我們可以推導出我們的 a2、a1、a0 的輸入狀態應該是 110,如圖 3-17。

圖 3-17  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 的狀態,也是 0,那麼這樣在這一排共 8 個 led 小燈當中,只有最右側的小燈和 5v 之間有壓差,有壓差就會有電流通過,有電流通過我們的 led2 就會發光了。

74hc245 左側我們可以看出來,是直接接到 p0 口上的,而 74hc138 的 addr0 ~ addr3接在何處呢?來看圖 3-18。

圖 3-18  顯示解碼與步進電機的選擇跳線

跳線是大家以後經常會接觸到的乙個器件,它就是 2 根或者 3 根靠在一起的排針,然後可以用乙個叫作跳線帽的東西連線其相鄰的 2 根針。它的作用就是起到導線的作用,我們可以通過跳線帽來實現連線線的切換。如圖 3-19。

圖3-19  跳線實物圖

從圖中可以看出,跳線帽本身可以佔 2 個針的位置,現在是把右側和中間的針連到了一起,這樣實現的就是圖 3-18 中的 p1.0 和 addr0 連線到一起、p1.1 和 addr1 接一起、p1.2和 addr2 接一起、p1.3 和 addr3 接一起。這樣就可以透徹理解我們第二課的程式了。

好了,大家認真再回顧一下我們第二課的那個程式,再領悟一下這幾個數字器件的用法。

金沙灘51微控制器74HC138 三八解碼器的應用

在我們設計微控制器電路的時候,微控制器的 io 口數量是有限的,有時並滿足不了我們的設計需求,比如我們的 stc89c52 一共有 32 個 io 口,但是我們為了控制更多的器件,就要使用一些外圍的數字晶元,這種數字晶元由簡單的輸入邏輯來控制輸出邏輯,比如 74hc138這個三八解碼器,圖 3 15...

Verilog實現三八解碼器轉四 十六解碼器

用verilog實現三八解碼器 module decoder data out,en,data in input 2 0 data in input en output reg 7 0 data out always en or data in begin if en 1 case data in ...

解碼器的bug筆記2

1.解決了大量codedex靜態工具,和核心攻擊測試攻擊,導致出來的掛死 記憶體洩漏的問題。2.h265碼流proc異常的問題.導致阻塞卡住.通過釋放掉,非參考幀,如果是參考幀要是超過協議規定的最 幀數目也丟掉 3.乙個多通道建立銷毀的問題,踩別人記憶體的問題,乙個全域性變數,位址賦給函式裡面的區域...