99在线精品免费视频九九视-99在线精品视频-99在线精品视频免费观里-99在线精品视频在线观看-99在线免费播放

【案例】7段數(shù)碼管顯示

  發(fā)布時間:2023-10-18  |    作者:管理員  |  瀏覽量:941

本文為明德?lián)P原創(chuàng)及錄用文章,轉(zhuǎn)載請注明出處!


1.1 總體設(shè)計


1.1.1 概述

LED數(shù)碼管以發(fā)光二極管作為發(fā)光單元,顏色有單紅,黃,藍,綠,白,黃綠等效果,并且可以構(gòu)造成“8”字形。數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。

數(shù)碼管可以通過驅(qū)動電路來驅(qū)動內(nèi)部的各個段碼,從而顯示出需要的數(shù)字。根據(jù)數(shù)碼管驅(qū)動方式的不同,可以將其分為靜態(tài)式和動態(tài)式兩類。


1.1.2 設(shè)計目標

完成數(shù)碼管的顯示,具體功能要求如下:

1. 間隔1s切換數(shù)碼管位選,做到數(shù)碼管從左到右流動顯示的效果;

2. 數(shù)碼管顯示的數(shù)值從0開始,每切換一位位選數(shù)值加一;


1.1.3信號列表

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示


1.1.4設(shè)計思路


  • 數(shù)碼管顯示原理

數(shù)碼管的8個顯示字段”a、b、c、d、e、f、g、h”對應(yīng)顯示面板的位置如下圖所示。

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示

數(shù)碼管顯示數(shù)字0到9對應(yīng)的gfedcba值如下表所示。

表5- 1 數(shù)碼管顯示數(shù)字與字段值的對應(yīng)關(guān)系

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示

數(shù)碼管靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都通過一個I/O端口進行驅(qū)動,或使用如BCD碼二-十進制譯碼器譯碼進行驅(qū)動,也稱直流驅(qū)動。靜態(tài)驅(qū)動編程簡單,顯示亮度高,但占用的I/O端口多,這里不使用這種方法。


數(shù)碼管動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示字段"a、b、c、d、e、f、g、h"的同名端連接在一起,此外每個數(shù)碼管的公共極COM需增加由各自獨立I/O線控制的位選通控制電路。當(dāng)要輸出某一字形碼時,所有數(shù)碼管都會接收到相同的字形碼,但究竟是哪個數(shù)碼管會顯示出字形取決于單片機對位選通COM端電路的控制。只需將顯示數(shù)碼管的選通控制打開,該位就會顯示出字形,而沒有選通的數(shù)碼管并不會點亮。數(shù)碼管特定的發(fā)光二極管段加上電壓后,這些特定的段就會發(fā)亮,并且當(dāng)每位元數(shù)碼管的點亮?xí)r間為1~20ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示資料,不會有閃爍感,使得動態(tài)顯示的效果和靜態(tài)顯示是一樣的,這樣能夠節(jié)省大量的I/O口,而且功耗更低。


以下是MP801開發(fā)板對應(yīng)的數(shù)碼管原理圖,并且是共陽極的數(shù)碼管:

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示
  • 工程架構(gòu)

根據(jù)設(shè)計目標將現(xiàn)象翻譯成信號表示如下:

第1秒,數(shù)碼管0顯示數(shù)字“0”,即seg_sel的值為8’b1111_1110,seg_ment的值為8’b1100_0000;

第2秒,數(shù)碼管1顯示數(shù)字“1”,即seg_sel的值為8’b1111_1101,seg_ment的值為8'b1111_1001;

第3秒,數(shù)碼管2顯示數(shù)字“2”,即seg_sel的值為8’b1111_1011,seg_ment的值為8'b1010_0100;

第4秒,數(shù)碼管3顯示數(shù)字“3”,即seg_sel的值為8’b1111_0111,seg_ment的值為8'b1011_0000;

第5秒,數(shù)碼管4顯示數(shù)字“4”,即seg_sel的值為8’b1110_1111,seg_ment的值為8'b1001_1001;

第6秒,數(shù)碼管5顯示數(shù)字“5”,即seg_sel的值為8’b1101_1111,seg_ment的值為8'b1001_0010;

第7秒,數(shù)碼管6顯示數(shù)字“6”,即seg_sel的值為8’b1011_1111,seg_ment的值為8'b1000_0010;

第8秒,數(shù)碼管7顯示數(shù)字“7”,即seg_sel的值為8’b0111_1111,seg_ment的值為8'b1111_1000;

第九秒,回到數(shù)碼管0顯示數(shù)字“0”,以此進行循環(huán)。

總結(jié)發(fā)現(xiàn),數(shù)碼管每隔1秒進行變化,且8個數(shù)碼管輪流顯示。

因此本工程用到了三個計數(shù)器的架構(gòu),具體架構(gòu)如下圖所示:

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示

1秒計數(shù)器cnt_1s:用于計算1s的時間,加一條件為1,表示一直在計數(shù);數(shù)到50,000,000下,表示數(shù)到1s就結(jié)束。

位選計數(shù)器sel_cnt:用于區(qū)分選通的數(shù)碼管,加一條件為end_cnt_1s,表示每間隔1秒的時間后,切換選通下一個數(shù)碼管;數(shù)到8下,表示8個數(shù)碼管都選通過一輪了。


1.1.5參考代碼


module  seg_disp(
                 rst_n       ,
                 clk         ,
                 seg_sel     ,
                 segment      
             );


parameter  TIME_1S        =       50_000_000  ;
parameter  SEG_WID        =       8           ;
parameter  SEG_NUM        =       8           ;
parameter  CNT_WID        =       10          ;
parameter  TIME_20US      =       10'd1000    ;
parameter  NUM_0          =       8'b1100_0000;
parameter  NUM_1          =       8'b1111_1001;
parameter  NUM_2          =       8'b1010_0100;
parameter  NUM_3          =       8'b1011_0000;
parameter  NUM_4          =       8'b1001_1001;
parameter  NUM_5          =       8'b1001_0010;
parameter  NUM_6          =       8'b1000_0010;
parameter  NUM_7          =       8'b1111_1000;
parameter  NUM_8          =       8'b1000_0000;
parameter  NUM_9          =       8'b1001_0000;
parameter  NUM_ERR        =       8'b1111_1111;


input                             clk         ;
input                             rst_n       ;
output [SEG_WID - 1:0]            seg_sel     ;
output [SEG_WID - 1:0]            segment     ;

reg    [SEG_WID - 1:0]            seg_sel     ;
reg    [SEG_WID - 1:0]            segment     ;

reg    [ 31    :    0]            cnt_1s      ;
reg    [SEG_NUM - 1:0]            sel_cnt     ;

reg    [ 4 - 1 :    0]            seg_tmp     ;

wire                              add_cnt_1s  ;
wire                              end_cnt_1s  ;
wire                              add_sel_cnt ;
wire                              end_sel_cnt ;


always @(posedge clk or negedge rst_n) begin
    if (rst_n==0) begin
        cnt_1s <= 0;
    end
    else if(add_cnt_1s) begin
        if(end_cnt_1s)
            cnt_1s <= 0;
        else
            cnt_1s <= cnt_1s+1 ;
   end
end
assign add_cnt_1s = 1;
assign end_cnt_1s = add_cnt_1s  && cnt_1s == TIME_1S-1 ;


always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        sel_cnt <= 0;
    end
    else if(add_sel_cnt)begin
        if(end_sel_cnt)
            sel_cnt <= 0;
        else
            sel_cnt <= sel_cnt + 1;
    end
end
assign add_sel_cnt = end_cnt_1s;
assign end_sel_cnt = add_sel_cnt && sel_cnt == SEG_NUM-1;

always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        seg_sel <= {SEG_NUM{1'b1}};
    end
    else begin
        seg_sel <= ~(1'b1 << sel_cnt);
    end
end

always  @(*)begin
    if(rst_n==1'b0)
        seg_tmp = {SEG_NUM{1'b1}};
    else
        seg_tmp = sel_cnt ;
end



always@(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        segment<=NUM_0;
    end
    else  begin
        case (seg_tmp)
            0 : segment <= NUM_0;
            1 : segment <= NUM_1;
            2 : segment <= NUM_2;
            3 : segment <= NUM_3;
            4 : segment <= NUM_4;
            5 : segment <= NUM_5;
            6 : segment <= NUM_6;
            7 : segment <= NUM_7;
            8 : segment <= NUM_8;
            9 : segment <= NUM_9;
            default : segment <= NUM_ERR;
        endcase
    end
end

endmodule



1.2 效果和總結(jié)

  • 下圖是該工程在db603開發(fā)板上的現(xiàn)象

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示
  • 下圖是該工程在mp801開發(fā)板上的現(xiàn)象

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示
  • 下圖是該工程在ms980試驗箱上的現(xiàn)象

「每周FPGA案例」至簡設(shè)計系列_7段數(shù)碼管顯示




溫馨提示:明德?lián)P2023推出了全新課程——邏輯設(shè)計基本功修煉課,降低學(xué)習(xí)FPGA門檻的同時,增加了學(xué)習(xí)的趣味性,并組織了考試贏積分活動

http://m.cqqtmy.cn/ffkc/415.html

(點擊→了解課程詳情?)感興趣請聯(lián)系易老師:13112063618(微信同步)



本文TAG:

Copyright ? 2012-2023 版權(quán)所有:深圳明德?lián)P科技教育有限公司

主站蜘蛛池模板: 污污的视频在线播放 | 欧美日韩在线精品一区二区三区 | 影视先锋影音在线中文字幕 | 日本免费不卡一区二区 | 国产在线视频www色 国产在线视频一区 | 手机看片精品高清国产日韩 | 91麻豆久久久 | 国产成人精品一区二区视频 | 香港三级理论在线观看网站 | 成人网在线视频 | 国产精品视屏 | 日韩高清一区二区 | 激情丁香网 | 免费视频精品一区二区 | 日韩中文字幕免费版 | 国产日产亚洲系列首页 | 日本特黄网站 | 成熟女人特级毛片www免费 | 日韩大片免费在线观看 | 日本人与黑人做爰视频网站 | 日韩一级精品视频在线观看 | 青青操视频在线免费观看 | ntr中文字幕亚洲综合 | 国产网站免费视频 | 免费精品在线视频 | 1级黄色毛片 | 日本国产一区 | 国产毛片儿 | 青青草97国产精品免费观看 | 日韩国产在线 | 国产成人一区二区三区在线播放 | 成人欧美一区二区三区黑人 | 免费在线色视频 | 黄网站色在线视频免费观看 | 亚洲国产成人精品不卡青青草原 | 久久这里只有精品23 | 国产做受视频激情播放 | 国产亚洲一区二区精品张柏芝 | 欧美综合精品一区二区三区 | 欧美精品一区二区久久 | 欧美成人影院 在线播放 |