module sonic_detect(clk_50m, rst, Trig, Echo, Led, distance); input clk_50m, rst, Echo; output Trig, Led; output[34:0] distance; // 5位十进制*7段译码 // Vcc--GPIO10 // Gnd--GPIO11 wire clk_1m; wire[19:0] dis; // 回波高电平持续时间us wire[19:0] d; // 距离(单位cm),5位十进制,包括两位小数 Clk_1M u0(.clk_out(clk_1m), .clk_in(clk_50m), .rst(1)); // 50分频 TrigSignal u1(.clk_1m(clk_1m), .rst(rst), .trig(Trig)); PosCounter u2(.clk_1m(clk_1m), .rst(rst), .echo(Echo), .dis_count(dis)); assign d[19:16] = dis/10000; // 百位 assign d[15:12] = dis/1000%10; // 十位 assign d[11:8] = dis/100%10; // 个位 assign d[7:4] = dis/10%10; // 0.1 assign d[3:0] = dis%10; // 0.01 assign Led =((d[19:16] < 1)&(d[15:12] < 1)) ? 1 : 0; translator u3(.in(d[19:16]), .out(distance[34:28])); // 七段译码 translator u4(.in(d[15:12]), .out(distance[27:21])); translator u5(.in(d[11:8]), .out(distance[20:14])); translator u6(.in(d[7:4]), .out(distance[13:7])); translator u7(.in(d[3:0]), .out(distance[6:0])); endmodule
时间: 2024-04-07 16:32:00 浏览: 146
gaochao.rar_aerodynamic_hypersonic_气动_飞行力学_飞行器 动力学
5星 · 资源好评率100%
这是一段 Verilog 代码,可以实现超声波测距。其中包括一个时钟分频模块(Clk_1M),一个触发信号模块(TrigSignal),一个计数器模块(PosCounter),以及五个七段译码器模块(translator),用于将距离转换为显示在七段数码管上的数字。你可以通过输入一个触发信号 Trig,来产生一次超声波测距,并将距离的值显示在 distance 变量上。同时,通过 Led 变量的值来判断是否检测到了距离过近的物体。
阅读全文