资源描述:
《《出租车计价器》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本计价器的主要功能包括:计时功能;计费功能;计程功能;LCD显示;功能:1)启动计费器,里程计数器和时间计数器从零开始,费用计费器从10元开始计算;2)根据出租车行驶的里程数和时间(包括停车等待时间)进行计费,当出租车启动在3公里以内,且在等待累计2分钟内时费用计数器复位为起步价10元;3)当出租车在行驶状态下超过3公里时,每满1公里时,费用计数器加1元;4)当出租车等待时间累计超过2分钟时以每分钟1元计费。整体设计方案:Clk输入C9;Sw1输入L14;TXD输出u8;Flash_ce输出k18;L
2、cd_e输出M18;LCD_RW输出L17;LCD_RS输出L18;LCD_d[3:0]输出R15R16P17M15;模块划分1.分频电路模块:2.时间计算模块:start:启动信号,当start为高电平时出租车开动,选择以公里计费;当start为低电平时出租车等待;选择以时间计费m:输出的时间分信号s:输出的时间秒信号Time_enable:控制计费的时间信号,当其为高电平时控制计数器按时间数计数3.计程功能“distance_enable:控制计费的公里信号,当其为高电平时控制计数器按路程计数di
3、stance:输出的公里信号4.判断控制模块;select_clk:输出选择的时钟信号5.计费模块:fee:输出的费用信号6.显示模块:分频程序:modulediv(clk_50M,clk,reset);inputclk_50M;inputreset;outputclk;wireclk_50M;wirereset;regclk;reg[7:0]count;always@(posedgeclk_50Mornegedgereset)beginif(!reset)begincount<=0;clk<=0;e
4、ndelseif(count==8'd100)begincount<=8'd0;clk<=~clk;endelsecount<=count+1'd1;endendmodulemoduletest;regclk_50M;regreset;wireclk;divu1(.clk_50M(clk_50M),.reset(reset),.clk(clk));initial#0clk_50M=1'b0;always#5clk_50M=~clk_50M;initialbegin#0reset=1'b0;#100re
5、set=1'b1;endendmodule计时激励:moduletimemokuai(clk,reset,start,s,m,time_enable);//端口的定义inputclk,reset,start;output[7:0]s;//输出的秒output[7:0]m;//输出的分outputtime_enable;//输出的控制计费的信号reg[7:0]s;reg[7:0]m;wiretime_enable;always@(posedgeclkornegedgereset)//异步复位begini
6、f(!reset)//低电平有效begin//复位s<=8'd0;m<=8'd0;endelseif(!start)//start信号低电平有效beginif(s[3:0]==9)//秒的低四位是9begins[3:0]<=4'd0;//清零if(s[7:4]==5)//秒的高四位是5begins[7:4]<=4'd0;//清零if(m[3:0]==9)//分的低奈皇?beginm[3:0]<=4'd0;//清零if(m[7:4]==9)//分的高四位是9m[7:4]<=4'd0;//清零elsem[
7、7:4]<=m[7:4]+1'd1;//分的高四位不是9加一endelsem[3:0]<=m[3:0]+1'd1;//分的低四位不是9加一endelses[7:4]<=s[7:4]+1'd1;//秒的高四位不是5加一endelses[3:0]<=s[3:0]+1'd1;//秒的低四位不是9加一end//endalwaysendassigntime_enable=((m[7:0]>8'd2)&&(s[7:0]==8'd0))?1'd1:1'd0;//产生time_enable信号。endmodule//
8、结束计时激励:moduletest4;regclk;regreset;regstart;wire[7:0]s;wire[7:0]m;wiretime_enable;timemokuaiu1(.clk(clk),.reset(reset),.start(start),.s(s),.m(m),.time_enable(time_enable));initialclk=1'b0;always#10clk=~clk;initialbegin#0reset=1'b