《出租车计价器.doc》由会员分享,可在线阅读,更多相关《出租车计价器.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流出租车计价器.精品文档.本计价器的主要功能包括:计时功能;计费功能;计程功能;LCD显示;功能:1)启动计费器,里程计数器和时间计数器从零开始,费用计费器从10元开始计算 ;2)根据出租车行驶的里程数和时间(包括停车等待时间)进行计费,当出租车启动在3公里以内,且在等待累计2分钟内时费用计数器复位为起步价10元 ;3)当出租车在行驶状态下超过3公里时,每满1公里时,费用计数器加1元 ;4)当出租车等待时间累计超过2分钟时以每分钟1元计费 。整体设计方案:Clk 输入 C9;Sw1输入 L14;TXD 输出 u8;Flash_ce 输出 k18
2、;Lcd_e 输出 M18;LCD_RW 输出 L17;LCD_RS 输出 L18;LCD_d3:0 输出 R15 R16 P17 M15;模块划分1.分频电路模块:2. 时间计算模块:start: 启动信号, 当start为高电平时出租车开动,选择以公里计费;当start为低电平时出租车等待;选择以时间计费m: 输出的时间分信号s: 输出的时间秒信号Time_enable:控制计费的时间信号,当其为高电平时控制计数器按时间数计数3. 计程功能“distance_enable: 控制计费的公里信号,当其为高电平时控制计数器按路程计数distance: 输出的公里信号4. 判断控制模块 ;sel
3、ect_clk: 输出选择的时钟信号5. 计费模块:fee: 输出的费用信号6. 显示模块:分频程序:module div(clk_50M,clk,reset);input clk_50M;input reset;output clk;wire clk_50M; wire reset;reg clk;reg 7:0 count;always (posedge clk_50M or negedge reset)begin if(!reset) begin count=0; clk=0; end else if(count=8d100) begin count=8d0; clk=clk; end
4、else count=count+1d1; end endmodulemodule test; reg clk_50M; reg reset; wire clk; div u1(.clk_50M(clk_50M), .reset(reset), .clk(clk);initial #0 clk_50M=1b0; always #5 clk_50M=clk_50M;initial begin #0 reset=1b0; #100 reset=1b1; endendmodule计时激励:module timemokuai(clk,reset,start,s,m,time_enable);/ 端口的
5、定义input clk,reset,start;output 7:0 s;/输出的秒output 7:0 m;/输出的分output time_enable;/输出的控制计费的信号reg 7:0 s;reg 7:0 m;wire time_enable; always(posedge clk or negedge reset)/异步复位beginif(!reset)/低电平有效begin /复位s=8d0;m=8d0;endelse if(!start)/start 信号低电平有效beginif(s3:0=9)/ 秒的低四位是9 begin s3:0=4d0;/清零 if(s7:4=5) /
6、秒的高四位是5 begin s7:4=4d0; /清零 if(m3:0=9) / 分的低奈皇? begin m3:0=4d0; /清零 if(m7:4=9) / 分的高四位是9 m7:4=4d0; /清零 else m7:4=m7:4+1d1; / 分的高四位不是9加一endelse m3:0=m3:0+1d1; /分的低四位不是9加一endelse s7:4=s7:4+1d1; / 秒的高四位不是5加一endelse s3:08d2)&(s7:0=8d0)?1d1:1d0;/产生time_enable信号。endmodule/结束计时激励:module test4;reg clk;reg r
7、eset;reg start;wire 7:0 s;wire 7:0 m;wire time_enable;timemokuai u1(.clk(clk), .reset(reset), .start(start), .s(s), .m(m), .time_enable(time_enable);initial clk=1b0;always #10 clk=clk;initial begin #0 reset=1b0; #100 reset=1b1; endinitial begin start=1b0; #5000 start=1b1; endendmodule 计程模块激励:module
8、test;reg clk;reg start;reg reset;wire 7:0 distance;wire distance_enable;distancemokuai u1(.clk(clk), .reset(reset), .start(start), .distance(distance), .distance_enable(distance_enable); initial clk=1b0; always #10 clk=clk; initial begin #0 reset=1b0; #100 reset=1b1; end initial begin start=1b1; #500 start=1b0;/仿真过程要延迟时间足够长 end endmodule