七段数码管的动态显示.docx
- 文档编号:23119962
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:10
- 大小:15.81KB
七段数码管的动态显示.docx
《七段数码管的动态显示.docx》由会员分享,可在线阅读,更多相关《七段数码管的动态显示.docx(10页珍藏版)》请在冰豆网上搜索。
七段数码管的动态显示
七段数码管的动态显示
1、实验内容:
数码管的动态显示
利用实验板上的某四位数码管依次显示16进制的0000~FFFF。
为实现功能重用的目的,我们仍然将系统划分为几个部分:
(1)时钟分频模块:
将开发板上的50MHz高速时钟进行分频产生一个5Hz的时钟用于计数。
(2)计数模块:
实现从0000~FFFF的计数功能。
用4位十六进制数来实现,其中15‐12位表示十六进制数的最高位,11‐8位表示次高位,7‐4位表示次低位,3‐0位表示最低位
(3)数码管动态显示模块:
将计数模块的输出作为显示字符的输入值,分时送出相应段码,实现数码管的动态显示效果。
2、参考程序:
moduleSegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3);//数码管动态显示模块?
inputCLK;
inputrst_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的段码带
//..................................................................
parameterseg0=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@(posedgeCLKornegedgerst_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@(posedgeCLKornegedgerst_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;
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[15:
12])
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
end
endmodule
3、接口:
clk--PIN_N2
rst_n--PIN_N25
SEG0[0]--PIN_AF10
SEG0[1]--PIN_AB12
SEG0[2]--PIN_AC12
SEG0[3]--PIN_AD11
SEG0[4]--PIN_AE11
SEG0[5]--PIN_V14
SEG0[6]--PIN_V13
SEG1[0]--PIN_V20
SEG1[1]--PIN_V21
SEG1[2]--PIN_W21
SEG1[3]--PIN_Y22
SEG1[4]--PIN_AA24
SEG1[5]--PIN_AA23
SEG1[6]--PIN_AB24
SEG2[0]--PIN_AB23
SEG2[1]--PIN_V22
SEG2[2]--PIN_AC25
SEG2[3]--PIN_AC26
SEG2[4]--PIN_AB26
SEG2[5]--PIN_AB25
SEG2[6]--PIN_Y24
SEG3[0]--PIN_Y23
SEG3[1]--PIN_AA25
SEG3[2]--PIN_AA26
SEG3[3]--PIN_Y26
SEG3[4]--PIN_Y25
SEG3[5]--PIN_U22
SEG3[6]--PIN_W24
4、上机程序
moduleSegDynamicDisp(CLK,rst_n,SEG0,SEG1,SEG2,SEG3);inputCLK;
inputrst_n;
output[6:
0]SEG0;
output[6:
0]SEG1;
output[6:
0]SEG2;
output[6:
0]SEG3;
reg[6:
0]SEG0;
reg[6:
0]SEG1;
reg[6:
0]SEG2;
reg[6:
0]SEG3;
//........以上是定义的一些输入输出接口..........................parameterseg0=7'hC0,
seg1=7'hF9,
seg2=7'hA4,
seg3=7'hB0,
seg4=7'h99,
seg5=7'h92,
seg6=
7'h82,
seg7=7'hF8,
seg8=7'h80,
seg9=7'h90,
sega=7'h88,
segb=7'h83,
segc=7'hC6,
segd=7'hA1,
sege=7'h86,
segf=7'h8E;
//..............以上是定义的参数,用来标记段代码...................reg[23:
0]cnt;
reg[15:
0]counter;
always@(posedgeCLKornegedgerst_n)
if(!
rst_n)
begin
cnt<=24'D0;
counter<=2'b00;
end
else
begin
cnt<=cnt+1'b1;
if(cnt==24'D1*******)
begin
cnt<=0;
counter<=counter+1;
end
end
//..........用来实现计数功能和控制数字递增的速度....................always@(counter)
begin
case(counter[3:
0])
4'h0:
SEG0<=seg0;4'h1:
SEG0<=seg1;4'h2:
SEG0<=seg2;4'h3:
SEG0<=seg3;4'h4:
SEG0<=seg4;4'h5:
SEG0<=seg5;4'h6:
SEG0<=seg6;4'h7:
SEG0<=seg7;4'h8:
SEG0<=seg8;4'h9:
SEG0<=seg9;4'ha:
SEG0<=sega;4'hb:
SEG0<=segb;4'hc:
SEG0<=segc;4'hd:
SEG0<=segd;4'he:
SEG0<=sege;4'hf:
SEG0<=segf;default:
;
endcase
case(counter[7:
4])
4'h0:
SEG1<=seg0;4'h1:
SEG1<=seg1;4'h2:
SEG1<=seg2;4'h3:
SEG1<=seg3;4'h4:
SEG1<=seg4;4'h5:
SEG1<=seg5;4'h6:
SEG1<=seg6;4'h7:
SEG1<=seg7;4'h8:
SEG1<=seg8;4'h9:
SEG1<=seg9;4'ha:
SEG1<=sega;4'hb:
SEG1<=segb;4'hc:
SEG1<=segc;4'hd:
SEG1<=segd;4'he:
SEG1<=sege;4'hf:
SEG1<=segf;default:
;
endcase
case(counter[11:
8])
4'h0:
SEG2<=seg0;4'h1:
SEG2<=seg1;4'h2:
SEG2<=seg2;4'h3:
SEG2<=seg3;
4'h4:
SEG2<=seg4;
4'h5:
SEG2<=seg5;
4'h6:
SEG2<=seg6;
4'h7:
SEG2<=seg7;
4'h8:
SEG2<=seg8;
4'h9:
SEG2<=seg9;
4'ha:
SEG2<=sega;
4'hb:
SEG2<=segb;
4'hc:
SEG2<=segc;
4'hd:
SEG2<=segd;
4'he:
SEG2<=sege;
4'hf:
SEG2<=segf;
default:
;
endcase
case(counter[15:
12])
4'h0:
SEG3<=seg0;
4'h1:
SEG3<=seg1;
4'h2:
SEG3<=seg2;
4'h3:
SEG3<=seg3;
4'h4:
SEG3<=seg4;
4'h5:
SEG3<=seg5;
4'h6:
SEG3<=seg6;
4'h7:
SEG3<=seg7;
4'h8:
SEG3<=seg8;
4'h9:
SEG3<=seg9;
4'ha:
SEG3<=sega;
4'hb:
SEG3<=segb;
4'hc:
SEG3<=segc;
4'hd:
SEG3<=segd;
4'he:
SEG3<=sege;
4'hf:
SEG3<=segf;
default:
;
endcase
end
//...................用来实现显示功能.....................endmodule
5、实验结果
复位按键为0时:
HEX3
HEX2HEX1HEX0显示的为0000;
复位按键为1时:
HEX3HEX2HEX1HEX0显示的依次为:
0000——FFFF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 动态 显示