|
- module hc247( //共阳数码管BCD数字到7段解码器驱动器 VCC:Pin16 GND:Pin8
- input A, //地址A译码输入 (最低位LSB) Pin7
- input B, //译码地址B Pin1
- input C, //译码地址C Pin2
- input D, //译码地址D (最高位MSB) Pin6
- input BI_RBO, //高电平打开输出,低电平关闭 BI/RBO Pin4
- input RBI, //Pin5
- input LT, //段码测试 低电平显示8,高电平正常 Pin3
- output QA, //共阳数码管段码A 集电极(漏极)开漏输出 Pin13
- output QB, //段码B 有低电平输出能力,无高电平输出(开路) Pin12
- output QC, //段码C译码输出 Pin11
- output QD, //段码D Pin10
- output QE, //段码E Pin9
- output QF, //段码F Pin15
- output QG //段码G Pin14 (无小数点)
- );
- wire [6:0] Q;
- assign {QG,QF,QE,QD,QC,QB,QA} = Q;
- wire [6:0] code [15:0];
- assign code[0] = 7'b1000000; //数字0
- assign code[1] = 7'b1111001; //数字1
- assign code[2] = 7'b0100100; //数字2
- assign code[3] = 7'b0110000; //数字3
- assign code[4] = 7'b0011001; //数字4
- assign code[5] = 7'b0010010; //数字5
- assign code[6] = 7'b0000010; //数字6
- assign code[7] = 7'b1111000; //数字7
- assign code[8] = 7'b0000000; //数字8
- assign code[9] = 7'b0010000; //数字9
- //10~15为乱码,不同品牌厂家批次,输出结果可能会有不同
- assign code[10] = 7'b0100111; //小写c
- assign code[11] = 7'b0110011; //小写c (左开口)
- assign code[12] = 7'b0011101; //小写u (上)
- assign code[13] = 7'b0010110; //小写c (上) 加一横 (数字5缺失段码c)
- assign code[14] = 7'b0000111; //字母t
- assign code[15] = 7'b1111111; //关闭输出
- genvar i;
- generate
- for(i=0;i<=6;i=i+1) begin:k
- assign Q[i] = q[i] ? 1'bz : 1'b0;
- end
- endgenerate
- reg [6:0] q;
- wire [2:0] l = {BI_RBO,RBI,LT};
- always @(*) begin
- if(l == 3'b101 || l == 3'b111) begin
- q = code[{D,C,B,A}];
- end else if(l == 3'b100) begin
- q = 7'h00;
- end else begin
- q = 7'h7F;
- end
- end
- endmodule
- module main(
- input clk, //50Mhz Pin17
- output QA, //Pin40
- output QB, //Pin42
- output QC, //Pin44
- output QD, //Pin47
- output QE, //Pin51
- output QF, //Pin53
- output QG //Pin57
- );
- reg [3:0] i = 4'd0;
- hc247 U1(
- .A(i[0]),
- .B(i[1]),
- .C(i[2]),
- .D(i[3]),
- .BI_RBO(1'b1),
- .RBI(1'b1),
- .LT(1'b1),
- .QA(QA),
- .QB(QB),
- .QC(QC),
- .QD(QD),
- .QE(QE),
- .QF(QF),
- .QG(QG)
- );
- integer j =0;
- always @(posedge clk) begin
- j = j + 1;
- if(j >= 50000000) begin
- j = 0;
- i <= i + 4'd1;
- end
- end
- endmodule
复制代码 |
|