电子说
实现的功能:8个数码管轮流显示8个数字,若频率合适,可以实现8个数码管同时被点亮的视觉效果
1.CL5461AS
CL5461AS 数码管管脚图如下图所示,它将四个数码显示管的a~g 及小数点dp 管脚并联在一起,作为数码管数据输入端;分别引出各个数码管的阴极A1~A4。
只要在A1~A4 管脚上轮流加低电平其频率大于40Hz,可实现四个数码管同时被点亮的视觉效果。在点亮不同数码管的同时输入不同的数据,即可在数码管上同时显示四位不同的数字。
2.驱动八位数码管显示电路框图
3.模块及模块功能
3.1时钟脉冲计数器模块
cnt8模块输入信号为时钟脉冲clk,每遇到一个clk上升沿,内部累加器加1,并把累加器的所得结果以二进制数的形式输出。
1 module cnt8(clk,cout); 2 3 input clk; 4 output reg [2:0] cout; 5 6 always @(posedge clk) 7 begin 8 if(cout==7) 9 cout<=0; 10 else 11 cout<=cout+1; 12 end 13 14 endmodule
3.2 3-8译码器模块
3-8模块的输入端A用于接收时钟脉冲计数器cnt8模块的输出信号,经过译码后,输出信号Q分别接8个数码管的阴极,是对应的数码管阴极为低电平,
对应的数码管被点亮。
1 module decoder3_8(A,vss); 2 3 input [2:0] A; 4 output reg [7:0] vss; 5 6 always @(A) 7 begin 8 case(A) 9 3'b000:vss=8'b11111110; 10 3'b001:vss=8'b11111101; 11 3'b010:vss=8'b11111011; 12 3'b011:vss=8'b11110111; 13 3'b100:vss=8'b11101111; 14 3'b101:vss=8'b11011111; 15 3'b110:vss=8'b10111111; 16 3'b111:vss=8'b01111111; 17 endcase 18 end 19 20 endmodule 21
3.3 八选一数据选择模块
地址码SEL来自时钟脉冲计数器cnt8,由地址码SEL[2:0]决定输出哪个输入数据,输出信号是Q[3..0].
1 module SEL81(sel,a,b,c,d,e,f,g,h,Q); 2 3 input [2:0] sel; 4 input [3:0] a,b,c,d,e,f,g,h; 5 output reg [3:0] Q; 6 7 always @(sel) 8 begin 9 case(sel) 10 3'b000:Q=a; 11 3'b001:Q=b; 12 3'b010:Q=c; 13 3'b011:Q=d; 14 3'b100:Q=e; 15 3'b101:Q=f; 16 3'b110:Q=g; 17 3'b111:Q=h; 18 endcase 19 end 20 endmodule
3.4 七段译码器模块
DISP 模块是七段译码器,将输入的4 位二进制数转换为数码显示管所对应的数字。DISP 模块输入信号D[3..0]接到八选一数据选择模块的输出信号Q[3..0];
七段译码器输出信号Q[6..0]接数码管的a~g 管脚。
1 module DISP(D,Q); 2 3 input [3:0] D; 4 output reg [6:0] Q; 5 6 always @(D) 7 begin 8 case(D) 9 4'b0000:Q=0111111; 10 4'b0001:Q=0000110; 11 4'b0010:Q=1011011; 12 4'b0011:Q=1001111; 13 4'b0100:Q=1100110; 14 4'b0101:Q=1101101; 15 4'b0110:Q=1111101; 16 4'b0111:Q=0100111; 17 4'b1000:Q=1111111; 18 default:Q=1101111; 19 endcase 20 end 21 endmodule 22
3.5 整体电路
1 module DisplayLED(clk,a,b,c,d,e,f,g,h,vss,Q); 2 3 input clk; 4 input [3:0] a,b,c,d,e,f,g,h; 5 output [7:0] vss; 6 output [6:0] Q; 7 8 wire [2:0] cnsel; 9 wire [3:0] qd; 10 11 12 13 cnt8 cnt (.clk(clk),.cout(cnsel)); 14 decoder3_8 decoder(.A(cnsel),.vss(vss)); 15 SEL81 sel(.sel(cnsel),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f), 16 .g(g),.h(h),.Q(qd)); 17 DISP disp(.D(qd),.Q(Q)); 18 19 endmodule
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !