名称:汽车里程表计程仪及蜂鸣器音乐报警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
阅读全文
478