名称:汽车里程表计程仪及蜂鸣器音乐报警Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
汽车里程表计程仪及蜂鸣器音乐报警
1.计程功能,预设三个速度对应三个开关,启动后,数码管上按速度乘以时间显示里程。
2.报警功能,按下一个开关模拟前方一定距离出现障碍,当计程仪再增加2公里后红灯闪烁,蜂鸣器间断响起,3公里后红灯常亮,蜂鸣器不间断响起。
3.附加功能,4公里后通过障碍,蜂鸣器播放音乐(只要调的那种)。
三个预设速度分别设成20公里每小时40公里每小时60公里每小时
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
部分代码展示:
//显示模块 module display( input clk, input [7:0] distance,//里程 output reg [5:0] bit_select,//数码管位选 output reg [7:0] seg_select//数码管段选 ); reg [3:0]dis_data = 4'd0; //显示值 reg [31:0]select_num =32'd0;//分频计数器 reg [2:0]geshu = 3'd0;//数码管个数计数 reg [7:0] counter_buf;//寄存器 always@(posedge clk) begin counter_buf<=distance;//里程 end ////////////////////////////////////////////位选//////////////////////////////////////////////// always @(posedge clk ) //扫描频率 begin if(select_num == 32'd99_999) begin select_num <= 32'd0; end else begin select_num <=select_num +1'd1; //扫描频率计时数字 end end always @(posedge clk ) begin if(select_num == 32'd99_999) begin if(geshu == 3'd5) begin geshu <= 3'd0; end else begin geshu <= geshu + 1'd1; //扫描那个管子的指示位 end end end always @(posedge clk ) //位选切换 begin case (geshu) 3'd0: begin bit_select<=6'b111101; dis_data<= counter_buf %4'd10;//显示个位 end 3'd1: begin bit_select<=6'b111110; dis_data <= counter_buf /4'd10;//显示十位 end default:bit_select<=6'b111111; endcase end //段选输出 always @(posedge clk) begin case (dis_data) //数字显示码 8'd0: seg_select<= ~8'b1100_0000; 8'd1: seg_select<= ~8'b1111_1001; 8'd2: seg_select<= ~8'b1010_0100; 8'd3: seg_select<= ~8'b1011_0000; 8'd4: seg_select<= ~8'b1001_1001; 8'd5: seg_select<= ~8'b1001_0010; 8'd6: seg_select<= ~8'b1000_0010; 8'd7: seg_select<= ~8'b1111_1000; 8'd8: seg_select<= ~8'b1000_0000; 8'd9: seg_select<= ~8'b1001_0000; default:; endcase end endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=514
阅读全文
618