FPGA之靜態數碼管顯示實驗

2021-10-12 08:26:58 字數 3895 閱讀 1390

硬體原理圖

硬體介面定義

**如下:

module seg_led_static_top(

input sys_clk,

input sys_rst_n,

output [5:0] seg_wei,

output [7:0] seg_duan

);wire time_flag;

//wire clk;

time_count u_time_count(

.sys_clk (sys_clk),

.sys_rst_n (sys_rst_n),

.time_flag (time_flag)

);seg_led_static u_seg_led_static(

.sys_clk (sys_clk),

.sys_rst_n (sys_rst_n),

.time_flag (time_flag),

.seg_wei (seg_wei),

.seg_duan (seg_duan)

);endmodule

module time_count(

input sys_clk,

input sys_rst_n,

output reg time_flag);

reg [24:0] time_num;

always @(posedge sys_clk or negedge sys_rst_n)begin

if(!sys_rst_n)

begin

time_num<=25'd0;

time_flag<=1'b0;

endelse begin

if(time_num<25'd25_000_000)begin

time_num<=time_num+1'b1;

time_flag<=1'b0;

endelse

begin

time_num<=25'd1;

time_flag<=1'b1;

endend

endendmodule

module seg_led_static(

input sys_clk,

input sys_rst_n,

input time_flag,

output reg [5:0] seg_wei,

output reg [7:0] seg_duan

);reg [3:0] seg_fsm;

always @(posedge sys_clk or negedge sys_rst_n)begin

if(!sys_rst_n)

seg_fsm<=4'd0;

else if(time_flag)

begin

seg_fsm<=seg_fsm+1'b1;

endelse

seg_fsm<=seg_fsm;

endalways @(posedge sys_clk or negedge sys_rst_n)begin

if(!sys_rst_n)

begin

seg_wei <=6'b000000; //低電平點亮數碼管

seg_duan <=8'b00000000;

endelse

case(seg_fsm) //共陽數碼管

/* 4'b0000: seg_duan <=8'b1100_0000; //0

4'b0001: seg_duan <=8'b1111_1001; //1

4'b0010: seg_duan <=8'b0100_1111;

4'b0011: seg_duan <=8'b0000_0000;

4'b0100: seg_duan <=8'b0000_0000;

4'b0101: seg_duan <=8'b0000_0000;

4'b0110: seg_duan <=8'b0000_0000;

4'b0111: seg_duan <=8'b0000_0000;

4'b1000: seg_duan <=8'b0000_0000;

4'b1001: seg_duan <=8'b0000_0000;

4'b1010: seg_duan <=8'b0000_0000;

4'b1011: seg_duan <=8'b0000_0000;

4'b1100: seg_duan <=8'b0000_0000;

4'b1101: seg_duan <=8'b0000_0000;

4'b1110: seg_duan <=8'b0000_0000;

4'b1111: seg_duan <=8'b0000)0000;

*/ 4'h0 : seg_duan <= 8'b1100_0000;

4'h1 : seg_duan <= 8'b1111_1001;

4'h2 : seg_duan <= 8'b1010_0100;

4'h3 : seg_duan <= 8'b1011_0000;

4'h4 : seg_duan <= 8'b1001_1001;

4'h5 : seg_duan <= 8'b1001_0010;

4'h6 : seg_duan <= 8'b1000_0010;

4'h7 : seg_duan <= 8'b1111_1000;

4'h8 : seg_duan <= 8'b1000_0000;

4'h9 : seg_duan <= 8'b1001_0000;

4'ha : seg_duan <= 8'b1000_1000;

4'hb : seg_duan <= 8'b1000_0011;

4'hc : seg_duan <= 8'b1100_0110;

4'hd : seg_duan <= 8'b1010_0001;

4'he : seg_duan <= 8'b1000_0110;

4'hf : seg_duan <= 8'b1000_1110;

default : seg_duan <= 8'b1100_0000;

endcase

endendmodule

**結果如下圖:

最終實現實驗任務!

(ps:除錯中 頂層時鐘不要連線同乙個模組的兩個埠  sys_clk  造成實驗問題)

fpga學習之數碼管顯示

1 設計需求 設計乙個數碼管驅動電路,是數碼管能夠顯示任意六位數。2 數碼管原理分析 現在的數碼管基本都是八段式的,也就是說由八個發光二極體組成的。如圖一所示,這是單個數碼管的原理圖 我們需要二極體顯示數字,只需要控制二極體的亮滅就行。以共陽極數碼管為例 給二極體低電平為點亮二極體 如圖二所示顯示數...

數碼管顯示實驗

實驗目的 通過實驗,掌握如何通過74hc595擴充套件io口,掌握如何運用動態掃瞄的方法驅動多位數碼管 實驗內容 判斷按鍵sw8 int1 是否按下,並對按鍵次數計數,顯示在數碼管之上 微控制器剛啟動後,數碼管顯示為全0,當第一次按下sw8後,數碼管顯示0001,當第二次按下sw8後,數碼管顯示00...

07數碼管靜態顯示

51微控制器記憶體是4k,52微控制器是8k,就是記憶體不一樣。數碼管的特點 1.自發光,亮度高,適合環境亮度低的場合使用 2.牢固,不怕衝擊。eg 呼喚機 數碼管是一種半導體發光器件,其基本單元是二極體。一般是3.3v,但是微控制器工作是5v,所以會 串聯乙個1k的電阻來保護。智慧型小車是共陽 拉...