數碼管自動顯示

2022-08-18 01:51:09 字數 1781 閱讀 2988

數碼管自動顯示:利用計數器原理,先做乙個分頻計數器,每隔1s鐘,由led自動加一,再選擇數碼管顯示數字;1s=1_000_000_000ns= 1_000_000_000ns/20ns=50_000_000

程式**:

module

hex3(rst_n,clk,seg);

input clk;//

50minput

rst_n;

output

reg [6:0]seg;//

段選(控制數碼管顯示什麼資料)

//分頻器的**,這裡為了完整,不做多個檔案來寫模組了

reg[25:0] diviter_cnt; //

25000-1

reg [3:0

]led;

//生成乙個分頻計數器計數

always@(posedge clk or

negedge

rst_n)

if (!rst_n)

diviter_cnt

<=15

'd0;

else

if (diviter_cnt==25

'd50_000_000)

diviter_cnt<=15

'd0;

else

diviter_cnt

<=diviter_cnt+1

'b1;

//位選移位暫存器

always@(posedge clk or

negedge

rst_n)

if (!rst_n)

led<=4

'b0000;

else

if(led==4

'b1111)

led<=4

'b0000;

else

if(diviter_cnt==25

'd50_000_000)

led<=led+4

'b0001;

//設計乙個6選一多路器

always

@(led)

begin

case (led)//4'

h0:seg=7

'b1000000;//

這裡按數碼管碼表來4'

h1:seg=7

'b1111001;4'

h2:seg=7

'b0100100;4'

h3:seg=7

'b0110000;4'

h4:seg=7

'b0011001;4'

h5:seg=7

'b0010010;4'

h6:seg=7

'b0000010;4'

h7:seg=7

'b1111000;4'

h8:seg=7

'b0000000;4'

h9:seg=7

'b0010000;4'

ha:seg=7

'b0001000;4'

hb:seg=7

'b0000011;4'

hc:seg=7

'b1000110;4'

hd:seg=7

'b0100001;4'

he:seg=7

'b0000110;4'

hf:seg=7

'b0001110;

endcase

endendmodule

數碼管顯示

數碼管顯示 最近因為對突然對電子感興趣,前幾天在路過電子 時買了乙個數碼管。因為以前總是紙上談兵,根本沒實驗過,連數碼見都沒見過,所以開始覺得將這塊數碼管顯示出來是非常具有挑戰性的工作。今天正好有空,拿來了我的數碼管,並在網上看了一些資料,才發現並不是想象中的那麼難,其實更準確的說是太簡單了。不到半...

數碼管顯示

一 區分數碼管的類別 共陰數碼管 即所有數碼管的陰極接在一起。要使某個數碼管點亮,只需置上高電平,中該位置 1 共陽數碼管 即所有數碼管的陽極接在一起。要使某個數碼管點亮,只需置上低電平,中該位置 0 二 單個數碼管顯示 a h 表示單個數碼管上面的8個led。根據共陰共陽的特性,點亮相應的led,...

數碼管顯示

數碼管由8個led組成,對應乙個i o口的輸出.根據連線方式不同分為共陽和共陰數碼管 可以看到,由於結構不同,共陽和共陰使led亮起的輸出電平也不同,如下是兩種連線方式對應的16進製製碼 當我們要對多個數碼管進行控制的時候,不僅需要控制顯示內容 段碼 還要控制顯示的位置 位碼 簡單一點的方法可以用另...