0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入學(xué)習(xí)基于FPGA的數(shù)碼管動(dòng)態(tài)掃描驅(qū)動(dòng)設(shè)計(jì)

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

基于 FPGA數(shù)碼管動(dòng)態(tài)掃描驅(qū)動(dòng)設(shè)計(jì)

1. 實(shí)驗(yàn)引言

電子系統(tǒng)中,通常都需要有輸出設(shè)備來輸出或顯示一定的信息,以指示當(dāng)前系統(tǒng)運(yùn)行的狀態(tài)。在以單片機(jī)和 ARM 為主的電子系統(tǒng)中,液晶屏是理想的輸出設(shè)備。而 FPGA 則因?yàn)槠洫?dú)特的硬件結(jié)構(gòu),如果用 RTL 級(jí)電路來驅(qū)動(dòng)彩色液晶屏來顯示一定的數(shù)據(jù),勢必是非常不劃算的選擇,而且驅(qū)動(dòng)也極為復(fù)雜。數(shù)碼管作為一種能夠直觀顯示一定數(shù)據(jù)信息的輸出設(shè)備,具有驅(qū)動(dòng)簡單、顯示直觀的特點(diǎn),尤其適合作為 FPGA 系統(tǒng)的輸出設(shè)備。本節(jié),我們就將和大家一起進(jìn)行數(shù)碼管驅(qū)動(dòng)的開發(fā)。

2. 實(shí)驗(yàn)?zāi)康?/p>

實(shí)現(xiàn) 6 位 7 段數(shù)碼管的驅(qū)動(dòng),待顯示數(shù)據(jù)以 BCD 格式輸入。數(shù)碼管刷新時(shí)鐘為 1KHz。實(shí)驗(yàn)使用了 4 個(gè)獨(dú)立按鍵作為輸入,通過按鍵來改變需要數(shù)碼管顯示的數(shù)據(jù),以驗(yàn)證數(shù)碼管驅(qū)動(dòng)的正確性,同時(shí)也可檢驗(yàn)獨(dú)立按鍵消抖模塊的可靠性。

3. 實(shí)驗(yàn)內(nèi)容

本實(shí)驗(yàn)的內(nèi)容是數(shù)碼管動(dòng)態(tài)掃描驅(qū)動(dòng)的設(shè)計(jì),通過外部四位按鍵的不同操作來驅(qū)動(dòng)數(shù)碼管顯示不同的值。

4. 實(shí)驗(yàn)原理

數(shù)碼管所謂的動(dòng)態(tài)掃描,就是利用人眼的視覺暫留特性,在人眼能分辨的變化速度以外,快速分時(shí)的點(diǎn)亮各個(gè)數(shù)碼管及其對(duì)應(yīng)的段。因?yàn)榉謩e點(diǎn)亮所有數(shù)碼管一次所用時(shí)間小于人眼的視覺暫留,因此,在人們眼里看來,這些數(shù)碼管都是同時(shí)持續(xù)點(diǎn)亮的,并不會(huì)有閃爍的感覺。

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

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

按照以上表格,我們就能知道該如何操作了,只需要在不同的時(shí)間給各個(gè) IO 不同的電平,便能實(shí)現(xiàn)我們想要的亮滅組合。以上我們是以 1 秒為單位進(jìn)行 led 組的切換的,假如我們將切換速度加快,變?yōu)?1 毫秒一切換,會(huì)是什么情況呢?在 1 毫秒一切換的速度下,完成所有操作所需時(shí)間為 3ms,遠(yuǎn)遠(yuǎn)超出了我們?nèi)搜鬯鼙孀R(shí)的變化速度范圍。如果我們讓以上三個(gè)操作永遠(yuǎn)循環(huán)的進(jìn)行下去,那么我們將看見三組 led 燈中,我們點(diǎn)亮的那幾個(gè) led 是同時(shí)且一直處于亮著的狀態(tài)的,這便是動(dòng)態(tài)掃描的原理,假如我們把每個(gè) led做成一個(gè)長條型的,并按照如下形狀擺放,便就是我們常見的數(shù)碼管了。

5. 硬件設(shè)計(jì)

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

6. 系統(tǒng)結(jié)構(gòu)框圖

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

系統(tǒng)端口及其意義如下:

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

內(nèi)部信號(hào)及其意義如下:

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

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

7. 代碼解釋

因?yàn)閿?shù)碼管屬于低速設(shè)備,其正常的掃描頻率為 500~10KHz,掃描頻率太快,會(huì)導(dǎo)致系統(tǒng)功耗增加,顯示效果變暗。掃描頻率太慢,會(huì)有明顯的閃爍感。本實(shí)驗(yàn)通過調(diào)試觀察,選擇以 1KHz 作為掃描頻率,實(shí)際顯示效果非常好。 因此本實(shí)驗(yàn)首先就需要產(chǎn)生一個(gè) 1KHz 的掃描時(shí)鐘,該時(shí)鐘由系統(tǒng)時(shí)鐘分頻得到。產(chǎn)生 1KHz 掃描時(shí)鐘的代碼如下:

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

其中,定義了一個(gè)全局參數(shù) system_clk,該參數(shù)為 Clk 的頻率,不同的時(shí)鐘頻率,只需要更改該參數(shù),就可改變分頻計(jì)數(shù)器的最大計(jì)數(shù)值,以保證 1KHz分頻的精準(zhǔn)性。 在驅(qū)動(dòng)中,數(shù)碼管的位選以掃描時(shí)鐘的速率進(jìn)行切換,因?yàn)橹挥?6 位數(shù)碼管,因此當(dāng)位選計(jì)數(shù)到 6-1 后必須清零從頭開始計(jì)數(shù)。相關(guān)代碼如下:

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

每個(gè)數(shù)碼管需要顯示的內(nèi)容都不相同,由 Data 中相應(yīng)的位指定,Data中各位與數(shù)碼管的位對(duì)應(yīng)關(guān)系如下:

因此需要從 Data 中將每個(gè)數(shù)碼管被選中時(shí)需要顯示的數(shù)據(jù)提取出來,提取數(shù)據(jù)的代碼如下所示:

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

因?yàn)樘崛〕鰜淼臄?shù)據(jù)還是 BCD 碼的形式,還需要將 BCD 碼對(duì)應(yīng)的數(shù)據(jù)翻譯成為數(shù)碼管顯示對(duì)應(yīng)字符時(shí)應(yīng)該點(diǎn)亮或熄滅的對(duì)應(yīng)的 LED 的控制信號(hào),因此必須還有一個(gè) BCD 碼譯碼的過程,該過程代碼如下所示:

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

控制部分相對(duì)簡單,只需要根據(jù)對(duì)應(yīng)的 按鍵信息,給待顯示的數(shù)據(jù)加上一個(gè)對(duì)應(yīng)的值,該部分代碼如下所示:

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

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

8. 程序清單

(1)工程頂層模塊(文件名 top.v) 該模塊為工程頂層模塊,負(fù)責(zé)將按鍵檢測模塊(normal_keys_detect.v)、顯示控制模塊(ctrl.v)、數(shù)碼管驅(qū)動(dòng)模塊(DIG_LED_DRIVE.v)按照邏輯關(guān)系級(jí)聯(lián)。

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

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

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

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) 該模塊為數(shù)碼管顯示控制模塊,通過檢測到的鍵值驅(qū)動(dòng)數(shù)碼管顯示出不同的值。

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

(4) 數(shù)碼管顯示驅(qū)動(dòng)模塊(文件名 DIG_LED_DRIVE.v) 該模塊為數(shù)碼管顯示驅(qū)動(dòng)模塊,負(fù)責(zé)將輸入的數(shù)據(jù)正確顯示到數(shù)碼管對(duì)應(yīng)位。

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) 該模塊為數(shù)碼管顯示驅(qū)動(dòng)測試模塊,用于仿真查看數(shù)碼管驅(qū)動(dòng)邏輯是否正確。

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

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

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21575

    瀏覽量

    600759
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6027

    文章

    44459

    瀏覽量

    631254
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9013

    瀏覽量

    366167
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1873

    瀏覽量

    90767

原文標(biāo)題:至芯入門實(shí)驗(yàn)| 基于 FPGA 的數(shù)碼管動(dòng)態(tài)掃描驅(qū)動(dòng)設(shè)計(jì)

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于FPGA實(shí)現(xiàn)數(shù)碼管顯示

    本文介紹數(shù)碼管顯示譯碼基本工作原理及Verilog HDL驅(qū)動(dòng)代碼編寫,進(jìn)一步熟練掌握FPGA入門基礎(chǔ)知識(shí)。
    的頭像 發(fā)表于 10-24 14:44 ?133次閱讀
    基于<b class='flag-5'>FPGA</b>實(shí)現(xiàn)<b class='flag-5'>數(shù)碼管</b>顯示

    數(shù)碼管顯示屏的靜態(tài)顯示編程是什么

    ,要么全部熄滅不顯示任何內(nèi)容,而不涉及到動(dòng)態(tài)掃描或快速切換來模擬多個(gè)數(shù)碼管同時(shí)顯示的效果。 在靜態(tài)顯示中,每個(gè)數(shù)碼管都需要一個(gè)獨(dú)立的驅(qū)動(dòng)電路
    的頭像 發(fā)表于 08-28 17:14 ?355次閱讀

    驅(qū)動(dòng)數(shù)碼管顯示不良原因

    驅(qū)動(dòng)數(shù)碼管顯示不良的原因可能有很多,涉及到硬件、軟件、環(huán)境等多個(gè)方面。 一、引言 驅(qū)動(dòng)數(shù)碼管是一種廣泛應(yīng)用于工業(yè)自動(dòng)化、電子設(shè)備等領(lǐng)域的顯示設(shè)備。它具有顯示清晰、亮度高、壽命長等優(yōu)
    的頭像 發(fā)表于 08-28 16:38 ?408次閱讀

    數(shù)碼管驅(qū)動(dòng)芯片引腳功能

    數(shù)碼管驅(qū)動(dòng)芯片是一種用于驅(qū)動(dòng)數(shù)碼管顯示數(shù)字或字符的集成電路。數(shù)碼管驅(qū)動(dòng)芯片的引腳功能是實(shí)現(xiàn)
    的頭像 發(fā)表于 08-28 16:08 ?527次閱讀

    數(shù)碼管驅(qū)動(dòng)芯片原理是什么

    數(shù)碼管驅(qū)動(dòng)芯片是一種廣泛應(yīng)用于數(shù)字顯示領(lǐng)域的電子元件,它能夠?qū)?shù)字信號(hào)轉(zhuǎn)換為可視的數(shù)字顯示。 一、數(shù)碼管驅(qū)動(dòng)芯片概述 1.1 數(shù)碼管
    的頭像 發(fā)表于 08-28 16:07 ?486次閱讀

    數(shù)碼管驅(qū)動(dòng)芯片有哪幾種

    數(shù)碼管驅(qū)動(dòng)芯片是用于驅(qū)動(dòng)數(shù)碼管顯示數(shù)字和字符的電子元件。數(shù)碼管是一種常見的顯示設(shè)備,廣泛應(yīng)用于各種電子產(chǎn)品中,如電子鐘、計(jì)算器、電子秤等。
    的頭像 發(fā)表于 08-28 15:59 ?557次閱讀

    數(shù)碼管驅(qū)動(dòng)芯片好壞判斷方法

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

    【每周一練】盤古1K開發(fā)板 練習(xí)三:動(dòng)態(tài)數(shù)碼管顯示

    ,按一下數(shù)字加 1,顯示從 0 到 9, 類似的,按鍵 K3 控制第三個(gè)數(shù)碼管,按鍵 K4 控制第四個(gè)數(shù)碼管 學(xué)習(xí)心得 學(xué)習(xí)數(shù)碼管
    發(fā)表于 12-10 16:45

    數(shù)碼管驅(qū)動(dòng)芯片的使用方法

    數(shù)碼管驅(qū)動(dòng)芯片(也稱為LED驅(qū)動(dòng)芯片)是一種用于控制數(shù)碼管顯示的集成電路。它可以將微控制器產(chǎn)生的數(shù)字信號(hào)轉(zhuǎn)換為適合數(shù)碼管顯示的電流和電壓。本
    的頭像 發(fā)表于 12-08 16:24 ?9227次閱讀

    動(dòng)態(tài)數(shù)碼管顯示原理詳解

    動(dòng)態(tài)顯示的特點(diǎn)是將所有數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動(dòng)態(tài)掃描
    的頭像 發(fā)表于 11-10 11:38 ?4361次閱讀
    <b class='flag-5'>動(dòng)態(tài)</b><b class='flag-5'>數(shù)碼管</b>顯示原理詳解

    單片機(jī)數(shù)碼管驅(qū)動(dòng)學(xué)習(xí)筆記

    51單片機(jī)數(shù)碼管驅(qū)動(dòng)筆記
    發(fā)表于 11-06 17:23 ?1次下載

    數(shù)碼管筆記

    1.共陰極/共陽極數(shù)碼管的內(nèi)部組成結(jié)構(gòu)2..共陰極/共陽極數(shù)碼管驅(qū)動(dòng)電路3.數(shù)碼管顯示的字符/段選/位選
    發(fā)表于 11-06 17:18 ?3次下載

    數(shù)碼管驅(qū)動(dòng)學(xué)習(xí)筆記

    電子發(fā)燒友網(wǎng)站提供《數(shù)碼管驅(qū)動(dòng)學(xué)習(xí)筆記.pdf》資料免費(fèi)下載
    發(fā)表于 11-05 17:28 ?0次下載

    數(shù)碼管驅(qū)動(dòng)電路講解

    根據(jù)項(xiàng)目需求可以用I/O外部上拉,用來驅(qū)動(dòng)數(shù)碼管;也可以74HC138(38譯碼器)+74HC245(8路信號(hào)收發(fā)器)驅(qū)動(dòng)數(shù)碼管。本文會(huì)以后者為數(shù)碼
    的頭像 發(fā)表于 11-01 17:34 ?3075次閱讀
    <b class='flag-5'>數(shù)碼管</b><b class='flag-5'>驅(qū)動(dòng)</b>電路講解

    基于單片機(jī)的數(shù)碼管靜態(tài)及動(dòng)態(tài)顯示

    上圖是獨(dú)立共陽數(shù)碼管,用于演示數(shù)碼管顯示原理
    的頭像 發(fā)表于 10-31 15:51 ?1613次閱讀
    基于單片機(jī)的<b class='flag-5'>數(shù)碼管</b>靜態(tài)及<b class='flag-5'>動(dòng)態(tài)</b>顯示