(這篇文章不是為了科普,而是為了記住我在複習數邏實驗時的一些以前沒有的發現或者猜想。作為一位小白,裡面難免會有錯誤和不成熟的想法。)
通過複雜的邏輯分析和卡諾圖化簡,不難得出七段數碼管每個管的邏輯等式。
輸入d0——d3控制表達的數,4位,可以表示0~f(16進製制),point控制小數點,le控制使能。
整個邏輯圖如上圖所示,通過an0~an3控制四個七段數碼管的亮滅,mymc14495負責將輸入的二進位制數轉化為可以顯示在數碼管上的訊號。
這裡有點特別的地方。動態掃瞄顯示,也叫時分復用顯示,利用人眼視覺殘留,乙個7段碼解碼電路分時為每個7段碼提供解碼。
肉眼觀察,只是感覺當撥動某個an所分配的開關後數碼管會亮或者滅,但實際上是通過分時掃瞄顯示來實現。
在這個實驗中,僅僅要求顯示數字,四個數碼管顯示的是同乙個數字,(四組七段數碼管同一位置的數碼管所分配的引腳應該是相同的)所以不需要考慮通過分時利用乙個七段解碼電路,而在接下來的實驗裡,會通過乙個控制訊號來實現an的時分復用顯示控制方法。
首先的乙個4位四選一擴充套件mux4to1b4開始讓我迷惑了好久,後來仔細想想,其實是這樣:
給定的i0,i1,i2,i3是四個要顯示的數,每個數都是4位,這樣假設選擇訊號是00,會選擇那四組與門中每組的最上面乙個值,這樣就把i0給選出來了,至於為什麼要從四個中選擇乙個呢?其實是這樣:不是隨便的4個數中選乙個,而是這四個數都要顯示,但是只有乙個七段解碼電路(節省),所以一次只能挑選乙個來顯示,就通過scan訊號,也就是選擇訊號來進行選擇!
這樣,通過這個選擇器選擇出來要輸出的數,在輸入到上面的那個實驗的電路中就可以顯示出來了。至於防止四個七段數碼管都輸出同乙個數字,就是通過scan訊號控制an不斷變化,每次保證只顯示乙個。當然也可以非同步控制an使某乙個數碼管不顯示。用scan訊號控制an的方式有兩種,在下面用圖示給出。
控制an的兩種方式:
就寫到這吧,理解很多,只寫了一些點。果然還是自己仔細研究某件東西才能搞明白。
七段數碼管顯示實驗
連線模組埠的中間變數使用wire型別,而不應該是reg型別 不能再always裡呼叫模組 在verilog中,所有的埠隱含地宣告wire型別 如果輸出型別的埠需要儲存數值,則必須將其顯式地宣告為reg資料型別。不能將input和inout型別的埠宣告為reg資料型別,因為reg型別的變數是用於儲存數...
繪製七段數碼管
seven digits draw v1.0 第一,繪製線 第二,繪製七段數碼管組成的數字 第三,繪製優化數碼管間距 第四,繪製多組數字 第五,獲取系統時間 第六,主函式執行程式。如下 import turtle as t import time def drawline draw drawgap ...
七段數碼管繪製
步驟1 繪製單個數字對應的數碼管 步驟2 獲得一串數字,繪製對應的數碼管 步驟2 獲得當前系統時間,繪製對應的數碼管 步驟1 繪製單個數字對應的數碼管 基本問題是繪製一條線,可將其定義為乙個基本函式 def drawline draw turtle.pendown if draw else turt...