1基礎理論部分 led數位管是由多個發光二極體封裝在一起組合的“8”字型的器件,引線內部已經完成,如下圖10.1所示,圖10.2為實物圖。圖10.1 數位管內部結構 那麼我們想要控制數位管的亮滅,其實也就是控制發光二極體的亮滅,分別用高低電平去控制。對於數位管來說,讀者若是學過單片機及其他MCU的話...
1基礎理論部分
led數位管是由多個發光二極體封裝在一起組合的“8”字型的器件,引線內部已經完成,如下圖10.1所示,圖10.2為實物圖。
圖10.1 數位管內部結構
那麼我們想要控制數位管的亮滅,其實也就是控制發光二極體的亮滅,分別用高低電平去控制。對於數位管來說,讀者若是學過單片機及其他MCU的話,其實都知道數位管的控制有兩個信號是比較重要的,一個是段選信號,一個是位選信號,位選信號是針對有多個數位管時,需要控制哪一個數位管發亮,段選就是控制數位管顯示什麼數字。
那麼在購買數位管的時候,往往買回來時上面沒有標註各引腳信息。這時不要慌,首先你購買時要分清共陽極還是共陰極數位管,共陽極和共陰極數位管電路示意圖如圖10.2所示。然後可以利用萬用表打到“二極體”檔位,然後萬用表正極接觸數位管一個引腳,負極去挨個觸碰其他引腳,直到數位管發亮時,可以記錄對應的引腳信息即可。
圖10.2 數位管共陽和共陰極電路圖
1.1 靜態顯示
靜態驅動也稱直流驅動。靜態驅動是指每個數位管的每一個段碼都由一個I/O埠進行驅動,或者使用如BCD碼二-十進位解碼器解碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用I/O埠多,如驅動5個數位管靜態顯示則需要5×8=40根I/O埠來驅動。
1.2 動態顯示
動態驅動是將所有數位管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數位管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制。
2 Verilog代碼實現部分
現在要實現數位管的靜態顯示功能,從0加到f,時間間隔為1s。封裝介面為
2.1 smg_control模塊
上述是整個模塊的聲明,並且調用了smg_param.v的文件,用於數位管解碼參數的設置,關於include的用法可以參考其他語法書籍。
兩個計數器,一個用於實現時鐘計數1s,一個用於數位管編解碼計數控制。
上述是實現數位管解碼部分,註意smg_param.v中參數調用的方法。
2.2 smg_param模塊
3 Modelsim模擬部分
模擬程式很簡單,只需添加時鐘和複位信號即可。測試的腳本文件如圖10.3所示,因測試時將計數改到50,所以周期是1000ns。
圖 10.3 測試腳本文件