baidu_38302361
baidu_38302361
采纳率100%
2017-05-09 03:15 浏览 2.1k
已采纳

基于fpga的超声波测距数码管显示

hc—sr04超声波测距模块
50M的fpga板
求可用程序

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答 默认 最新

  • 已采纳
    u011046042 道亦无名 2017-05-14 14:00
    reg    [19:0]  count_div;    //定义分频计数寄存器
    
    always @(posedge clk)       //分频产生1k时钟
    begin
        if(count_div>=20'd100000)
        begin
            count_div<=20'd0;
            clk_1k<=1'b0;
        end
        else
        begin
            count_div <= count_div + 20'b1;
            if(count_div<=20'd50000)
                clk_1k<=1'b0;
            else
                clk_1k<=1'b1;
        end  
    end
    assign dig = dig_r;     //输出数码管选择
    assign seg = {dip,seg_r};   //输出数码管译码结果 
    always @(posedge clk_1k)      //计数进程
    begin
        count <= count + 1'b1;
    end
    always @(posedge clk_1k)         
    begin
        case(count)      //选择扫描显示数据
        3'd0:disp_dat = seg_data1; //第一个数码管
        3'd1:disp_dat = seg_data2; //第二个数码管
        3'd2:disp_dat = seg_data3; //第三个数码管
        3'd3:disp_dat = seg_data4; //第四个数码管
        endcase
        case(count)      //选择数码管显示位
        3'd0:dig_r = 4'b1000;  //选择第一个数码管显示
        3'd1:dig_r = 4'b0100;  //选择第二个数码管显示
        3'd2:dig_r = 4'b0010;  //选择第三个数码管显示
        3'd3:dig_r = 4'b0001;  //选择第四个数码管显示
        endcase 
    end
    always @(disp_dat)
    begin
        case(disp_dat[3:0])    //七段译码  
        4'h0:seg_r=7'b0000001;  //显示0
        4'h1:seg_r=7'b1001111;  //显示1
        4'h2:seg_r=7'b0010010;  //显示2
        4'h3:seg_r=7'b0000110;  //显示3
        4'h4:seg_r=7'b1001100;  //显示4
        4'h5:seg_r=7'b0100100;  //显示5
        4'h6:seg_r=7'b0100000;  //显示6
        4'h7:seg_r=7'b0001111;  //显示7
        4'h8:seg_r=7'b0000000;  //显示8
        4'h9:seg_r=7'b0000100;  //显示9
        4'ha:seg_r=7'b0100000;  //显示a
        4'hb:seg_r=7'b1100000;  //显示b
        4'hc:seg_r=7'b0110001;  //显示c
        4'hd:seg_r=7'b1000010;  //显示d
        4'he:seg_r=7'b0010000;  //显示e
        4'hf:seg_r=7'b0111000;  //显示f
    endcase
        case(disp_dat[7])    //产生小数点
        1'b0:dip=1'b1;
        dip=1'b0;
        endcase
    end
    endmodule
    
    
    点赞 2 评论 复制链接分享
  • u011046042 道亦无名 2017-05-09 05:09

    这个程序 vhdl 写的 分两个模块写 应该还好

    点赞 评论 复制链接分享

相关推荐