衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入學習基于FPGA的數碼管動態掃描驅動設計

電子工程師 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2021-03-14 09:45 ? 次閱讀

基于 FPGA數碼管動態掃描驅動設計

1. 實驗引言

電子系統中,通常都需要有輸出設備來輸出或顯示一定的信息,以指示當前系統運行的狀態。在以單片機和 ARM 為主的電子系統中,液晶屏是理想的輸出設備。而 FPGA 則因為其獨特的硬件結構,如果用 RTL 級電路來驅動彩色液晶屏來顯示一定的數據,勢必是非常不劃算的選擇,而且驅動也極為復雜。數碼管作為一種能夠直觀顯示一定數據信息的輸出設備,具有驅動簡單、顯示直觀的特點,尤其適合作為 FPGA 系統的輸出設備。本節,我們就將和大家一起進行數碼管驅動的開發。

2. 實驗目的

實現 6 位 7 段數碼管的驅動,待顯示數據以 BCD 格式輸入。數碼管刷新時鐘為 1KHz。實驗使用了 4 個獨立按鍵作為輸入,通過按鍵來改變需要數碼管顯示的數據,以驗證數碼管驅動的正確性,同時也可檢驗獨立按鍵消抖模塊的可靠性。

3. 實驗內容

本實驗的內容是數碼管動態掃描驅動的設計,通過外部四位按鍵的不同操作來驅動數碼管顯示不同的值。

4. 實驗原理

數碼管所謂的動態掃描,就是利用人眼的視覺暫留特性,在人眼能分辨的變化速度以外,快速分時的點亮各個數碼管及其對應的段。因為分別點亮所有數碼管一次所用時間小于人眼的視覺暫留,因此,在人們眼里看來,這些數碼管都是同時持續點亮的,并不會有閃爍的感覺。

圖 1 為 3 位 7 段數碼管的等效電路圖,在這個圖中,可以明顯的看到 24個發光二極管被分為了三組,每一組的 8 個發光二極管正極被接在了一起,通過一個三極管與 VCC 相連。三極管的基極連接到了 FPGA 的 IO 上,因此,只需要 FPGA 對應的 IO 上給出低電平,三極管便會導通。而三組 LED 中所有的相同編號的 LED 的負極被連接在了一起,并接到了 FPGA 的 IO 上。如果我們希望將最左邊一組的 led0、led5、led7 三個編號的 led 燈點亮,其它 led 不亮,則只需要給 Q0 的基極(sel0)連接上低電平,并將 led0、led5、led7 的負極(a、f、h)連接上低電平,其它所有端口都輸出高電平,則最左邊一組的對應的三個 led 燈就會被點亮,而其它 led 則會處于熄滅狀態。 假如我們需要在三秒時間內,完成以下三次操作:第一次操作,點亮最左邊一組 led 燈的 led0、led5、led7;第二次操作,點亮中間一組 led 燈的 led1、led2、led3;第三次操作,點亮最右邊一組 led 燈的 led2、led4、led6;那么我們只需要按照如下表格中列出的真值表操作即可:

ee02c720-8433-11eb-8b86-12bb97331649.png

按照以上表格,我們就能知道該如何操作了,只需要在不同的時間給各個 IO 不同的電平,便能實現我們想要的亮滅組合。以上我們是以 1 秒為單位進行 led 組的切換的,假如我們將切換速度加快,變為 1 毫秒一切換,會是什么情況呢?在 1 毫秒一切換的速度下,完成所有操作所需時間為 3ms,遠遠超出了我們人眼所能辨識的變化速度范圍。如果我們讓以上三個操作永遠循環的進行下去,那么我們將看見三組 led 燈中,我們點亮的那幾個 led 是同時且一直處于亮著的狀態的,這便是動態掃描的原理,假如我們把每個 led做成一個長條型的,并按照如下形狀擺放,便就是我們常見的數碼管了。

5. 硬件設計

在這個圖中,共有 6 位數碼管,每個數碼管的正極被接在一個驅動三極管上,三極管的基極連接到三八譯碼器的 Y 端,則 FPGA 只需要三個引腳就可最多控制 8 個數碼管的位選。數碼管的段選在串接了 470 歐姆的電阻后與FPGA 的 IO 相連。這里 470 歐姆的電阻主要起到限流的作用,保證流過數碼管的電流在正常范圍內。

6. 系統結構框圖

eecb25d0-8433-11eb-8b86-12bb97331649.png

系統端口及其意義如下:

ef097f2e-8433-11eb-8b86-12bb97331649.png

內部信號及其意義如下:

ef429d86-8433-11eb-8b86-12bb97331649.png

ef83c644-8433-11eb-8b86-12bb97331649.png

7. 代碼解釋

因為數碼管屬于低速設備,其正常的掃描頻率為 500~10KHz,掃描頻率太快,會導致系統功耗增加,顯示效果變暗。掃描頻率太慢,會有明顯的閃爍感。本實驗通過調試觀察,選擇以 1KHz 作為掃描頻率,實際顯示效果非常好。 因此本實驗首先就需要產生一個 1KHz 的掃描時鐘,該時鐘由系統時鐘分頻得到。產生 1KHz 掃描時鐘的代碼如下:

efc0cd78-8433-11eb-8b86-12bb97331649.png

其中,定義了一個全局參數 system_clk,該參數為 Clk 的頻率,不同的時鐘頻率,只需要更改該參數,就可改變分頻計數器的最大計數值,以保證 1KHz分頻的精準性。 在驅動中,數碼管的位選以掃描時鐘的速率進行切換,因為只有 6 位數碼管,因此當位選計數到 6-1 后必須清零從頭開始計數。相關代碼如下:

f029c9c2-8433-11eb-8b86-12bb97331649.png

每個數碼管需要顯示的內容都不相同,由 Data 中相應的位指定,Data中各位與數碼管的位對應關系如下:

因此需要從 Data 中將每個數碼管被選中時需要顯示的數據提取出來,提取數據的代碼如下所示:

f09ceccc-8433-11eb-8b86-12bb97331649.png

因為提取出來的數據還是 BCD 碼的形式,還需要將 BCD 碼對應的數據翻譯成為數碼管顯示對應字符時應該點亮或熄滅的對應的 LED 的控制信號,因此必須還有一個 BCD 碼譯碼的過程,該過程代碼如下所示:

f0c01058-8433-11eb-8b86-12bb97331649.png

控制部分相對簡單,只需要根據對應的 按鍵信息,給待顯示的數據加上一個對應的值,該部分代碼如下所示:

f0f95624-8433-11eb-8b86-12bb97331649.png

f1399c48-8433-11eb-8b86-12bb97331649.png

8. 程序清單

(1)工程頂層模塊(文件名 top.v) 該模塊為工程頂層模塊,負責將按鍵檢測模塊(normal_keys_detect.v)、顯示控制模塊(ctrl.v)、數碼管驅動模塊(DIG_LED_DRIVE.v)按照邏輯關系級聯。

f1848014-8433-11eb-8b86-12bb97331649.png

f1cacaba-8433-11eb-8b86-12bb97331649.png

(2) 按鍵檢測模塊(文件名 normal_keys_detect.v) 該模塊為按鍵檢測模塊,負責檢測外部按鍵值,并完成按鍵消抖,輸出按鍵檢測標志。

f1fd9990-8433-11eb-8b86-12bb97331649.png

f2388dac-8433-11eb-8b86-12bb97331649.png

f2b533f2-8433-11eb-8b86-12bb97331649.png

f2fdbc08-8433-11eb-8b86-12bb97331649.png

(3) 控制模塊(文件名 ctrl.v) 該模塊為數碼管顯示控制模塊,通過檢測到的鍵值驅動數碼管顯示出不同的值。

f34f9578-8433-11eb-8b86-12bb97331649.png

(4) 數碼管顯示驅動模塊(文件名 DIG_LED_DRIVE.v) 該模塊為數碼管顯示驅動模塊,負責將輸入的數據正確顯示到數碼管對應位。

f39bed7e-8433-11eb-8b86-12bb97331649.png

f3d76e76-8433-11eb-8b86-12bb97331649.png

f429022c-8433-11eb-8b86-12bb97331649.png

f45c50d2-8433-11eb-8b86-12bb97331649.png

f4ace6dc-8433-11eb-8b86-12bb97331649.png

f4e2cd74-8433-11eb-8b86-12bb97331649.png

(5) 測試仿真模塊(文件名 DIG_LED_DRIVE_tb.v) 該模塊為數碼管顯示驅動測試模塊,用于仿真查看數碼管驅動邏輯是否正確。

f51d2988-8433-11eb-8b86-12bb97331649.png

f5721bf0-8433-11eb-8b86-12bb97331649.png

責任編輯:lq6

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21798

    瀏覽量

    606065
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638628
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9169

    瀏覽量

    369250
  • 數碼管
    +關注

    關注

    32

    文章

    1887

    瀏覽量

    91410

原文標題:至芯入門實驗| 基于 FPGA 的數碼管動態掃描驅動設計

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    數碼管的結構與原理

    數碼管,也被稱作輝光或LED數碼管,是一種能夠顯示數字、字母、符號等信息的電子設備。它廣泛應用于各種電子設備中,如計算器、電子鐘表、電子秤、數碼相機、通信設備、車載收音機、導航儀、儀
    的頭像 發表于 02-05 17:32 ?124次閱讀

    基于FPGA實現數碼管顯示

    本文介紹數碼管顯示譯碼基本工作原理及Verilog HDL驅動代碼編寫,進一步熟練掌握FPGA入門基礎知識。
    的頭像 發表于 10-24 14:44 ?1117次閱讀
    基于<b class='flag-5'>FPGA</b>實現<b class='flag-5'>數碼管</b>顯示

    共陽極數碼管的結構和功能

    共陽極數碼管是一種廣泛應用的顯示器件,主要用于顯示數字和字母。以下是對共陽極數碼管的結構和功能的詳細解析,旨在滿足對深入了解該器件的需求。
    的頭像 發表于 08-29 18:18 ?2190次閱讀

    簡述led數碼管的類型和顯示原理

    LED數碼管是一種常見的顯示設備,廣泛應用于各種電子設備和系統中。本文將介紹LED數碼管的類型和顯示原理,以幫助讀者更好地了解這種設備。 LED數碼管的類型 LED數碼管主要分為以下幾
    的頭像 發表于 08-29 09:11 ?1382次閱讀

    數碼管顯示屏的靜態顯示編程是什么

    ,要么全部熄滅不顯示任何內容,而不涉及到動態掃描或快速切換來模擬多個數碼管同時顯示的效果。 在靜態顯示中,每個數碼管都需要一個獨立的驅動電路
    的頭像 發表于 08-28 17:14 ?681次閱讀

    驅動數碼管顯示不良原因

    驅動數碼管顯示不良的原因可能有很多,涉及到硬件、軟件、環境等多個方面。 一、引言 驅動數碼管是一種廣泛應用于工業自動化、電子設備等領域的顯示設備。它具有顯示清晰、亮度高、壽命長等優
    的頭像 發表于 08-28 16:38 ?1064次閱讀

    數碼管驅動芯片引腳功能

    數碼管驅動芯片是一種用于驅動數碼管顯示數字或字符的集成電路。數碼管驅動芯片的引腳功能是實現
    的頭像 發表于 08-28 16:08 ?1119次閱讀

    數碼管驅動芯片原理是什么

    數碼管驅動芯片是一種廣泛應用于數字顯示領域的電子元件,它能夠將數字信號轉換為可視的數字顯示。 一、數碼管驅動芯片概述 1.1 數碼管
    的頭像 發表于 08-28 16:07 ?1088次閱讀

    數碼管驅動芯片有哪幾種

    數碼管驅動芯片是用于驅動數碼管顯示數字和字符的電子元件。數碼管是一種常見的顯示設備,廣泛應用于各種電子產品中,如電子鐘、計算器、電子秤等。
    的頭像 發表于 08-28 15:59 ?1482次閱讀

    數碼管驅動芯片好壞判斷方法

    數碼管驅動芯片是數字顯示設備中的核心部件,其性能好壞直接影響到數碼管的顯示效果和使用壽命。 一、數碼管驅動芯片的工作原理
    的頭像 發表于 08-28 15:57 ?1096次閱讀

    CW32數字電壓電流表軟件教程-實驗四:數碼管動態顯示

    5.1.數碼管動態顯示原理 所謂動態掃描顯示即輪流向各位數碼管送出段碼和位碼,利用發光的余輝和
    的頭像 發表于 05-31 15:23 ?605次閱讀
    CW32數字電壓電流表軟件教程-實驗四:<b class='flag-5'>數碼管</b><b class='flag-5'>動態</b>顯示

    LED數碼管的顯示方式和驅動方式

    LED數碼管,作為現代電子顯示技術中的重要組成部分,以其高亮度、長壽命和低功耗等特點,廣泛應用于各種數字顯示設備中。本文將詳細闡述LED數碼管的顯示原理,包括其構造、工作原理、顯示方式以及驅動方式等方面,以期為讀者提供全面而
    的頭像 發表于 05-30 17:37 ?3185次閱讀

    如何配置定時器中斷并執行數碼管刷新函數?

    所謂動態掃描顯示即輪流向各位數碼管送出段碼和位碼,利用發光的余輝和人眼視覺暫留作用,使人眼的感覺好像各位數碼管同時都在顯示。
    的頭像 發表于 05-14 14:22 ?3w次閱讀
    如何配置定時器中斷并執行<b class='flag-5'>數碼管</b>刷新函數?

    TM1617能驅動共陽數碼管嗎?

    需要驅動一個 七段三位的共陽數碼管。TM1617很合適。但是它的datasheet里面的電路和數碼管都是共陰的。請問這個芯片可以驅動共陽的數碼管
    發表于 05-11 07:18

    51單片機數碼管靜態顯示

    ? 數碼管靜態顯示其實在實際應用中很少,除非項目中就只用到了一位數碼管顯示,否則的話靜態顯示非常占用IO口。但是,靜態顯示又是動態顯示的基礎,所以,在這里我打算跟大家分享一下,數碼管
    的頭像 發表于 02-26 11:05 ?2231次閱讀
    51單片機<b class='flag-5'>數碼管</b>靜態顯示
    骰子百家乐官网的玩法技巧和规则| 百家乐园首选| 24山方位| 八运24山下卦局| 做生意风水问题| 百家乐投注技巧公式| 皇马百家乐官网的玩法技巧和规则| 闻喜县| 金赞百家乐官网现金网| 百家乐官网注册| 澳门百家乐官网游戏说明| 至尊百家乐官网娱乐平台| 百家乐官网游戏真钱游戏| 百家乐官网技巧头头娱乐| 百家乐官网赌场牌路分析| 百家乐官网娱乐平台代理佣金| 百家乐官网大小点桌子| 百家乐官网网上投注文章| 百家乐官网de概率| 免费下百家乐赌博软件| 百家乐官网赌博策略论坛| 真人百家乐官网最高赌注| 华侨人百家乐官网的玩法技巧和规则| 百家乐官网单跳投注法| 金百家乐官网网站| 真人百家乐官网| 百家乐龙虎台布价格| 水果机| 石屏县| 百家乐官网打劫法| 钱隆百家乐官网大师| 百家乐博彩金| 大发888手机登录平台| 大发888在线登陆| 博彩评级| 百家乐官网平点| 百家乐推饼| 大发888游戏平台dafa888 gw | 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 百家乐官网赌博游戏平台| 百家乐视频地主|