七段数码管的动态显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

七段数码管的动态显示

1、实验内容:数码管的动态显示

利用实验板上的某四位数码管依次显示16 进制的0000~FFFF。

为实现功能重用的目的,我们仍然将系统划分为几个部分:

(1)时钟分频模块:将开发板上的50MHz 高速时钟进行分频产生一个5Hz 的时钟用于计数。

(2)计数模块:实现从0000~FFFF 的计数功能。用4位十六进制数来实现,其中15‐12 位表示十六进制数的最高位,11‐8 位表示次高位,7‐4 位表示次低位,3‐0位表示最低位

(3)数码管动态显示模块:将计数模块的输出作为显示字符的输入值,分时送出相应段码,实现数码管的动态显示效果。

2、参考程序:

module SegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3);//数码管动态显示模块? input CLK;

input rst_n;

output [7:0]SEG0;//定义输出数码管0的段码带

output [7:0]SEG1;//定义输出数码管1的段码带

output [7:0]SEG2;//定义输出数码管2的段码带

output [7:0]SEG3;//定义输出数码管3的段码带

//..............................................................

reg [7:0]SEG0;//定义输出数码管0的段码带

reg [7:0]SEG1;//定义输出数码管1的段码带

reg [7:0]SEG2;//定义输出数码管2的段码带

reg [7:0]SEG3;//定义输出数码管3的段码带

//..................................................................

parameter seg0=8'hC0,

seg1=8'hF9,

seg2=8'hA4,

seg3=8'hB0,

seg4=8'h99,

seg5=8'h92,

seg6=8'h82,

seg7=8'hF8,

seg8=8'h80,

seg9=8'h90,

sega=8'h88,

segb=8'h83,

segc=8'hC6,

segd=8'hA1,

sege=8'h86,

segf=8'h8E;

//....................................................................

reg[23:0] cnt;//定义计数寄存器,用来实现定时的功能

reg [15:0]counter;//定义计数寄存器,用于实现显示的数值

always @(posedge CLK or negedge rst_n)//计数过程,记录当前显示的位选序号if(!rst_n)

begin

cnt<=24'D0;//复位时cnt初始化为0

counter<=2'b00;//复位时counter初始化为0

end

else

begin

cnt<=cnt+1'b1;//实现计数的功能

if(cnt==24'D1*******)

begin

cnt<=0;//当达到计数值以后回复初始值

counter<=counter+1;//当达到计时时间以后显示的数值也相应的+1

end

end

//....................................................

always @(posedge CLK or negedge rst_n)

if(!rst_n)

begin

SEG0<=0;

SEG1<=0;

SEG2<=0;

SEG3<=0;

end

else

always @(counter)

begin

case(counter[3:0])

4'h0: sm_dbr <= seg0;

4'h1: sm_dbr <= seg1;

4'h2: sm_dbr <= seg2;

4'h4: sm_dbr <= seg4;

4'h5: sm_dbr <= seg5;

4'h6: sm_dbr <= seg6;

4'h7: sm_dbr <= seg7;

4'h8: sm_dbr <= seg8;

4'h9: sm_dbr <= seg9; 4'ha: sm_dbr <= sega;

4'hb: sm_dbr <= segb;

4'hc: sm_dbr <= segc;

4'hd: sm_dbr <= segd;

4'he: sm_dbr <= sege;

4'hf: sm_dbr <= segf;

default: ;

endcase

case(counter[7:4])

4'h0: sm_dbr <= seg0;

4'h1: sm_dbr <= seg1;

4'h2: sm_dbr <= seg2;

4'h3: sm_dbr <= seg3;

4'h4: sm_dbr <= seg4;

4'h5: sm_dbr <= seg5;

4'h6: sm_dbr <= seg6;

4'h7: sm_dbr <= seg7;

4'h8: sm_dbr <= seg8;

4'h9: sm_dbr <= seg9;

4'ha: sm_dbr <= sega;

4'hb: sm_dbr <= segb;

4'hc: sm_dbr <= segc;

4'hd: sm_dbr <= segd;

4'he: sm_dbr <= sege;

4'hf: sm_dbr <= segf;

default: ;

endcase

case(counter[11:8])

4'h0: sm_dbr <= seg0;

4'h1: sm_dbr <= seg1;

4'h2: sm_dbr <= seg2;

4'h3: sm_dbr <= seg3;

4'h4: sm_dbr <= seg4;

相关文档
最新文档