eda工具william hill官网
直播中

AndyQi

9年用户 112经验值
擅长:可编程逻辑 连接器 连接器 连接器 连接器 EMC/EMI设计 连接器 嵌入式技术 连接器 制造/封装 连接器 存储技术 连接器 连接器 连接器 连接器 光电显示 连接器 连接器 连接器 连接器 MEMS/传感技术 连接器
私信 关注
[问答]

求大家给个EDA数码管显示0-999的程序,谢谢!

求大家给个EDA数码管显示0-999的程序,谢谢!希望能够显示0-999

回帖(2)

cjc1058085537

2015-6-6 23:00:36
module smg(a,seg,dig,clock);
        input clock;
        output [3:0] a;
        output [7:0] seg; //数码管段码输出
        output [3:0] dig; //数码管位码输出
        reg [7:0] seg; //数码管段码输出寄存器
        reg [3:0] disp_dat1; //显示数据寄存器
        reg [3:0] disp_dat2; //显示数据寄存器
        reg [3:0] disp_dat3; //显示数据寄存器
        reg [3:0] disp_dat4; //显示数据寄存器
        reg [3:0] disp_dat; //显示数据寄存器
        reg [3:0] digt;        //数码管位码输出寄存器
        reg [3:0] a;
        reg [16:0] data;
        assign dig=~digt;
        reg [36:0] count; //定义计数寄存器
        reg [36:0] ct;
       
       
       
       
        /*always@(posedge clock)*/
        begin
       
        disp_dat1<=data%10000/1000;
   disp_dat2<=data%1000/100;
        disp_dat3<=data%100/10;
        disp_dat4<=data%10;
        end
       
       
        always@(posedge clock)
                begin
                count <= count + 1;
                if (count==25'd25000)
                        begin
                                count<=0;
                                a=~a;
                                digt=(digt<<1);
                                if(digt==0)
                                        digt=8'b0001;       
                               
                       
                        end
                end
               
               
        always @ (digt)
                begin
               
                        case (digt)
                        4'b1000 : disp_dat=disp_dat1;
                        4'b0100 : disp_dat=disp_dat2;
                        4'b0010 : disp_dat=disp_dat3;
                        4'b0001 : disp_dat=disp_dat4;
                        endcase
                end       
               
               
                always @ (disp_dat)
                        begin
                                case (disp_dat)
                                4'd0 : seg = 8'hc0; //显示"0"
                                4'd1 : seg = 8'hf9; //显示"1"
                                4'd2 : seg = 8'ha4; //显示"2"
                                4'd3 : seg = 8'hb0; //显示"3"
                                4'd4 : seg = 8'h99; //显示"4"
                                4'd5 : seg = 8'h92; //显示"5"
                                4'd6 : seg = 8'h82; //显示"6"
                                4'd7 : seg = 8'hf8; //显示"7"
                                4'd8 : seg = 8'h80; //显示"8"
                                4'd9 : seg = 8'h90; //显示"9"
                                4'd10 : seg = 8'h7f; //显示"."
                                4'd11 : seg = 8'hff; //显示" "
                                endcase
                        end
       

       

always@(posedge clock)
        begin
        ct <= ct + 1;
                if (ct==25'd250000)
                        begin
                        ct<=0;
                        data=data+1;
                        if(data==9999)
                                data<=0;
                               
                       
                        end
       
       
               
               
        end
       
endmodule       
举报

AndyQi

2015-6-8 12:06:31
引用: cjc1058085537 发表于 2015-6-6 23:00
module smg(a,seg,dig,clock);
        input clock;
        output [3:0] a;

你好,我在quartus上编译了一下,有错误,怎么回事呢?我要在睿智开发板上显示0-999,希望能帮助!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分