Seven Segment Display

Zeddy
9 min readApr 2, 2020

keyword: Logic design, Karnaugh Map, LabView

今天來跟大家介紹七段顯示器(Seven-segment display),這是一個生活中十分在熟悉不過的東西了。舉凡是手上的電子錶、各式各樣家電所使用的液晶顯示器、或者是在馬路上的紅綠燈倒數秒數顯示器,都是利用七個顯示位元來排列顯示羅馬數字0~9。

藉由分別控制七個顯示位元的明暗,我們就可以排列出不同的數字了,而不需要個別設計不同數字的燈號! 看似如此生活化且簡單的顯示器,但你可曾想過是透過什麼辦法才能達成這樣的控制呢?

因此現在的問題可以這樣描述:

在輸入一個數字後,如何”分別”且”自動”的控制七個燈分別的明暗呢?

最簡單的想法,我們可以利用記憶體,每次輸入一個數字後,呼叫其對應燈號開關的資料進行控制;然而在記憶體發展成熟前,這樣的方法可能過於複雜而難以實現。

為了解決這個問題,聰明的工程師們便利用邏輯閘的方式來控制這七個燈的開關與否。

邏輯閘

在電路學當中,訊號的儲存和傳遞只有分成兩種訊號,分別是高電位、以及低電位,就是常見的0或是1,二進位的概念。

而邏輯閘的功能就是輸入兩個訊號以後,經過計算(判斷)輸出一個新的訊號。常見的邏輯閘有「與」(And),「或」閘(Or),「非」閘(Not / Inventer),「互斥或」閘(也稱:互斥或)等等

邏輯閘與對應的真值表 Reference : Wikipidea

舉例來說,當A與B兩個訊號進入AND gate,只有在兩個訊號同時都是1時才會輸出1其餘都是0;當A與B兩個訊號進入OR gate,只要其中一個訊號是1時就會輸出1了。

相同的邏輯,搭配上反向器(Not / Inventer),我們可以得到類似這樣的真值表(Truth table),而這些邏輯閘可以透過多個場效電晶體(Field-Effect transistor or Bipolar junction transistor, FET, BJT)去實現這樣的邏輯判斷效果。(之後在寫篇文章介紹20世紀改變世界的發明,電晶體)

談了這麼多有關邏輯閘的事情,讀者一定會更困惑,為何我們談七個燈的控制怎麼又扯到邏輯閘呢?

首先,我們已經了解了燈的明暗其實就是電壓的開和關,這是輸出的部分;至於輸入的部分就是欲顯示的數字0~9等。而我們都知道所使用的十進位數字,其實可以轉換成二進位;因此只需要使用四個位元(每個位元可以示0或1)就可以表達數字0到9

而在七段顯示器當中,我們可以定義每個不同位置的燈號有各的編號分別從a~g。因此欲顯示不的數字就是開啟不同燈號。例如開啟燈號 a,b,g,e,d就可以得到 2。以下是簡單的表格,表示在不同時刻數字與對應明暗的燈號

因此我們現在的問題的就變成:

如何用二進位當中的四個訊號輸入( input),去控制7種燈號(a~g)的明暗(output)?

在這裡我們所使用的,二進位的01在布林代數( Boolean Algebra)當中分別代表的就是真或後( Truth or false) ,因此我們可以用來設計邏輯閘來滿足我們的輸入和輸出結果。

舉例來說,我們以二進位的加法器為例子,首先我們觀察二進位的加法有以下的結果。( 在這裡,左邊的 input 分別有兩個,暫定為 A 和 B,而輸出的有第一位數、第二位數)

若是仔細觀察 input 兩者的關係,和每個位數 output 的關係,可以發現到對於二進位的個位數時,若是兩個 input 皆相同時(0,0 / 1,1)則個位數為0;若是兩者不相同時則個位數為1。而第二位數只有在 input 皆為1(1,1)時,才會輸出1;其餘為0。 以上的敘述為邏輯閘的二進位加法概念,因此我們可以設計邏輯閘來完成這樣的判斷(加法器)。

因此此邏輯電路可以這樣表達,對於個位數我們用互斥或閘( XOR gate)來判斷,而十位數就用及閘( AND gate)來判斷,如圖。

所以我們現在已經了解,利用邏輯閘可以幫我們建構出特定的 input 和output的關係,現在我們回到我們的七段顯示器問題。

如何用二進位當中的四個訊號輸入( input),去控制7種燈號( a~g )的明暗(output)? 這個問題聽起來複雜了點,因為 input從兩個變成四個,output的量也變得更多了;但其實原理是相同的! 現在就來試試看吧!

在處理這種比較複雜的邏輯系統,我們可能無法像上個加法器的問題用”看的”就知道每個的邏輯閘該如何設計,因此我們比需引入一個表格幫助我們去建構邏輯閘系統,我們稱之為卡諾圖( Karnaugh Map)

卡諾圖 Karnaugh Map

由貝爾實驗室的電信工程師,莫里斯·卡諾(Maurice Karnaugh)在1953年發明的,用來建構真值表當中的邏輯閘。

不同 input 數量建構出不同大小的卡諾圖,可以是2x2、2x4、4x4等等,以十位數的加法器來說:

從這個圖表可以明顯看到十位數的 output出現1的時候只有在兩個 input同時皆為1的時候才會輸出1 ,因此十位是的 output就可以用 AND gate去表示。簡單來說,就是把輸入的訊號和所對應的結果放在這樣的棋盤格上,再去找交集的部分就可以得到所對應的邏輯閘!

如果了解卡諾圖的概念以後,我們現在就來解決我們的七段顯示器問題吧!首先我們在看一次我們的 input 和所對應的 output,下圖的左邊是所 input的四個位元,中間為對應的數字以及顯示的狀況,最右邊則是 output所要控制的七個燈號分別的狀態。(ex 0的狀態時,a~f的燈亮)

現在我們來看每個燈號所對應的卡諾圖,以燈號 a 為例子,卡諾圖的橫軸分別代表的是 AB、AB’、A’B’、A’B,以及縱軸的 CD、CD’、C’D’、C’D;接者在將 a 燈號所對應的狀況填到棋盤方格中,就可以得到類似下面的這張表格,至於空白的部份是我們這裡沒用到的訊號組合,可以暫且不管他的狀態。

在前面卡諾圖的範例中,我們知道卡諾圖就是在尋找交集的部分,在2x2的卡諾圖用一個交集就可以圈出結果,但是在4x4的卡諾圖,我們則需要的多個交集才能圈出所有 Truth (打勾)的狀態。而圈交集的方式就使以2x4、2x2、1x4的區塊去圈,聽到這裡讀者可能困惑是什麼意思,但只要仔細觀察下面同個色塊,你很快就會發現他們是代表特定的邏輯,舉例來說藍色的色塊代表的就是 A 的訊號( A’ 就沒有圈到了),綠色的色塊代表的是C的訊號、黃色的區塊代表的是 AD’ ( A 和 D’ 的交集),而紅色區塊代表的是 B 和 D的交集(BD)。因此最後的結果就是這幾個色塊所有的聯集(OR gate)

這裡我們用邏輯訊號的語法來寫

也就是說,我們利用 Truth Table 並利用卡諾圖來展現後,圈出我們的交集圈,最後再用聯集將所有的可能囊括起來,因此只要用 A+C+AD’+BD,就可以控制 a 燈號在不同訊號下的明暗了。

用相同的邏輯我們可以分別完成 b~g 剩下的六個燈號的邏輯閘

LabView 模擬

終於辛辛苦苦的完成我們每個燈號與四個訊號之間的邏輯關係了,現在我們就把所有的邏輯閘和訊號組裝起來,看看是不是真的能成功控制燈號呢?

這裡我們用 LabView 來實現我們的邏輯閘系統吧!

可以檢查右邊燈號所連結的訊號是否與上面推導的邏輯閘系統相符

以上邏輯閘僅使用 AND gate 以及 OR gate,並將前面利用卡諾圖建構的邏輯閘系統以 LabView內建邏輯網狀圖繪出,最後在利用開關去演示控制的結果,以下影片是利用 LabView 模擬邏輯閘運算的結果,搭配七段顯示器的開關

由於七段顯示器在生活中十分常使用,為了方便使用這些邏輯閘系統們,工程師便透過 IC 設計各個 nMOS、 pMOS 的線路連接整合成一個簡單的晶片,方便工程師們使用在各式各樣的電器上了(就不用在重新組裝這些邏輯閘了!)

後記

二十世紀影響人類文明最偉大的科技發明無非就是電晶體了。電晶體的出現以及演進,除了製造出各式各樣的生活用品豐富人類的生活以外,電腦的出現也加速了各式基礎科學的發展,例如數學、物理化學、生物科學等等;當然也創造無數個工作機會能養活竹科的工程師們和無數個家庭。近期,崛起的量子運算(Quantum Computing),使用了顛覆二進位的概念,更有望成為21世紀中人類科技跨向新紀元的一步。

看完這七段顯示器的電路設計原理以後,我們可以基礎的了解邏輯電路的概念,下次當你使用你的智慧型手機、電腦、甚至是超便宜的計算機、或是廚房中微波爐上的顯示器,請 ,以崇敬的眼神,敬佩聰明的工程師們,以及感謝二十世紀改變世界的發明,電晶體。

Reference

Class note and great picture from Wikipedia

--

--

Zeddy

A boy with enthusiasm for discovering science and interesting thing. Contact: kevinwang0723@gmail.com