出租车计费系统的设计方案好_第1页
出租车计费系统的设计方案好_第2页
出租车计费系统的设计方案好_第3页
出租车计费系统的设计方案好_第4页
出租车计费系统的设计方案好_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.所选题目:出租车计费器2.设计要求:设计一个出租车计费器,能按路程计费,具体要求如下:(1)实现计费功能,计费标准为:按行驶里程计费,起步价为7。00元,并在汽车行驶2km后按1.2元/km计费,当里程数达到15km后,没千米加收50%的空驶费,车辆停止和暂停时不计费。(2)现场模拟汽车的启动、停止、暂停和换挡等状态。(3)设计数码管显示电路,将车费和路程显示出来,各有1位小数。3。设计原理:设计该出租车有启动键、停止键、暂停键和档位键。启动键为脉冲触发信号,当其为一个脉冲时,表示汽车已启动,并根据车速的选择和基本车速发出相应频率的脉冲(计费脉冲)以此来实现车费和路程的计数,同时车费显示起步价;当停止键为高电平时,表示汽车熄火,同时停止发出脉冲,此时车费和路程计数清零;当暂停键为高电平时,表示汽车暂停并停止发出脉冲,此时车费和路程计数暂停;档位键用于改变车速,不同的档位对应着不同的车速,同时路程计数的速度也不同。4.模块设计:出租车计费器可分为两大模块,即控制模块和译码显示模块。系统框图如下:计费时钟计费时钟档位启动控制模块显示模块暂停停止5.电路符号:出租车计费器的输入信号有:计费时钟脉冲clk;汽车启动键start;汽车停止键stop;档位speedup。输出信号:7段显示控制信号seg7;小数点dp。6。具体设计流程:根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,counterB,counterC,counterD,counterE.①计数器A完成车费百位。②计数器B完成车费十位和个位。③计数器C完成车费角和分(显示时只显示角)。④计数器D完成计数到20(完成车费的起步价)。⑤计数器E完成模拟实现车行驶100m的功能。当超出起步价时就自动在起步价的基础上每增加一个100m脉冲就增加相应的费用,而当总里程达到或超过一定的数值时,能按新的收费标准进行收费。(3)译码/动态扫描电路模块将路程与费用的数值译码后用动态扫描的方式驱动6只数码管,即所连接的数码管共用一个数据端,由片选信号依次选择输出,轮流显示。(4)数码管显示将千米数和计费金额均用3位LED数码管显示(2位整数,1位小数)。7。具体模块设计:7。1车速控制模块当启停键为启动状态(高电平时),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于暂停状态,暂停发出脉冲,此时里程计数模块和计费模块相应地停止计数。当处于停止状态时,停止发出脉冲,此时计费器和里程显示模块数清零.如图所示。程序代码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164。ALL;USEIEEE。STD_LOGIC_UNSIGNED.ALL;ENTITYSPEEDISPORT(CLK,RESET,START,STOP:INSTD_LOGIC;SPEEDUP:INSTD_LOGIC_VECTOR(4DOWNTO0);CLKOUT:OUTSTD_LOGIC);ENDSPEED;ARCHITECTUREAOFSPEEDISSIGNALCOUNT1:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALTEMPCLK,CLKS:STD_LOGIC;SIGNALKINSIDE:STD_LOGIC_VECTOR(4DOWNTO0);BEGINKINSIDE<="00000”—SPEEDUP;CLKS_LABEL:PROCESS(RESET,CLK)VARIABLECOUNT2:STD_LOGIC_VECTOR(4DOWNTO0);BEGINIFSTOP='1’THENTEMPCLK<='0’;ELSIFRESET='1'andstop='0'THENCOUNT2:="00000”;ELSIFCLK’EVENTANDCLK='1’ANDSTOP='0'THENIFSTART=’1'THENIFCOUNT2=KINSIDETHENCOUNT2:="00000";ENDIF;IFNOT(SPEEDUP="00000”)THENCOUNT2:=COUNT2+1;ENDIF;IFCOUNT2=”00001"THENTEMPCLK<=NOTTEMPCLK;ENDIF;ENDIF;ENDIF;ENDPROCESSCLKS_LABEL;CLKOUT<=TEMPCLK;ENDA;仿真结果:启动后(包括暂停)复位后停止后7.2里程计数模块由车速控制模块发出的脉冲作为计数脉冲,行驶里程大于3KM时,本模块中信号变为1,并将计数动态显示出来,每来一个脉冲,里程值加0.1(每收到一个脉冲代表运行了0.1公里)。程序中要将计数值从十六进制转换成十进制,即在十六进制的数上加7或6,同时产生了相应的进位信号。如图所示。程序代码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE。STD_LOGIC_UNSIGNED。ALL;ENTITYjichengISPORT(CLK,RESET,STOP:INSTD_LOGIC;COUNT1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUNT2:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUNT3:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDjicheng;ARCHITECTUREAAOFjichengISBEGINPROCESS(CLK,RESET,STOP)VARIABLEMM:STD_LOGIC_VECTOR(11DOWNTO0);BEGINIFRESET=’1’THENMM:=”000000000000";ELSIFCLK='0’ANDSTOP=’1’THENMM:="000000000000";ELSIFCLK'EVENTANDCLK=’1'ANDSTOP='0'THENIFMM(3DOWNTO0)="1001"THENMM:=MM+7;ELSEMM:=MM+1;ENDIF;IFMM(7DOWNTO4)=”1010”THENMM:=MM+"01100000";ENDIF;ENDIF;COUNT1<=MM(3DOWNTO0);COUNT2<=MM(7DOWNTO4);COUNT3〈=MM(11DOWNTO8);ENDPROCESS;ENDAA;仿真结果:开始计程个位开始计数十位开始计数停止后7.3计费模块计费模块启动reset信号,根据输入的clk信号变化,调节费用的计数,用c1、c2、c3显示费用。其初值为6,当里程数超过2km后,才接受计数车速控制模块发出的脉冲的驱动,并且将计数显示动态显示出来,每一个脉冲其数值加0.12,当里程超过15km时数值加0.18。当启动键为启动状态(高电平时),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时,暂停发出脉冲,此时计费器和里程显示模块相应的停止计数,全部归零。如图所示。程序代码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE。STD_LOGIC_ARITH。ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjifeiISPORT(CLK,RESET,stop:INSTD_LOGIC;JUDGE2:INSTD_LOGIC_VECTOR(3DOWNTO0);JUDGE3:INSTD_LOGIC_VECTOR(3DOWNTO0);COUNT1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUNT2:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUNT3:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUNT4:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDjifei;ARCHITECTUREAAOFjifeiISSIGNALEN:STD_LOGIC;SIGNALMONEY:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALMCOUNT:STD_LOGIC_VECTOR(15DOWNTO0);BEGINMONEY〈="00011000"WHEN((MCOUNT(15)='1')OR(MCOUNT(14)='1’)OR(MCOUNT(13)='1’))ELSE”00010010";EN〈='0’WHENJUDGE3=”0000"ANDJUDGE2(3DOWNTO1)="000"ELSE'1';ﻩPROCESS(clk,reset)ﻩVARIABLEmm:std_logic_vector(15downto0);ﻩBEGINﻩifstop=’1'andclk='0'THENmm:="0000000000000000";ﻩelsIFreset='1'andstop=’0’THENﻩmm:="0000011000000000";--复位,计费显示为起步费6.00ﻩELSIFclk’eventandclk=’1’andstop=’0'THENﻩIFen='1'THENmm:=mm+money;—-里程超过2公里ﻩIF(mm(1)=’1'or(mm(3downto1)="000")or(mm(3downto2)="11”))THENﻩmm:=mm+6;ENDIF;——十六进制转换成十进制ﻩIFmm(7)=’1'and(not(mm(6downto5)="00”))THEN mm:=mm+”01100000”;ENDIF;ﻩIFmm(11)='1’and(not(mm(10downto9)=”00”))THENﻩmm:=mm+"011000000000";ENDIF;ﻩENDIF;ﻩENDIF; count1<=mm(3downto0);ﻩcount2<=mm(7downto4); count3〈=mm(11downto8); count4<=mm(15downto12);ﻩmcount<=mm;ﻩENDPROCESS; ENDaa;仿真结果:起步后开始计费行驶2公里后行驶15公里后停止后7.4动态扫描模块动态扫描电路将计数器A、B、C的计费状态用数码管显示出来,所连接的数码管共用一个数据端,由片选信号依次选择输出,轮流显示.该模块经过6选1选择器将计费数据(3位BCD码)、计程数据(3位BCD码)动态选择输出.其中计费数据送入显示译码模块进行译码,最后送至十元、元、角为单位对应的数码管上显示;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示。如图所示: 程序代码:片选:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYpianxuanISPORT(CLK:INSTD_LOGIC;A:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDpianxuan;ARCHITECTURERT1OFpianxuanISBEGINPROCESS(CLK)VARIABLEB:STD_LOGIC_VECTOR(2DOWNTO0);BEGINIF(CLK’EVENTANDCLK=’1’)THENIF(B=”101")THENB:="000";ELSEB:=B+1;ENDIF;ENDIF;A<=B;ENDPROCESS;ENDRT1;六选一:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYliuxuanyiISPORT(C:INSTD_LOGIC_VECTOR(2DOWNTO0);DP:OUTSTD_LOGIC;A1,A2,A3,B1,B2,B3:INSTD_LOGIC_VECTOR(3DOWNTO0);D:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDliuxuanyi;ARCHITECTURERT1OFliuxuanyiISBEGINPROCESS(C,A1,A2,A3,B1,B2,B3)VARIABLECOMB:STD_LOGIC_VECTOR(2DOWNTO0);BEGINCOMB:=C;CASECOMBISWHEN"000"=〉D<=A1;DP<=’0';WHEN"001"=>D〈=A2;DP〈='1’;WHEN”010"=>D〈=A3;DP<=’0';WHEN”011”=〉D〈=B1;DP<=’0';WHEN"100”=>D〈=B2;DP<='1’;WHEN”101"=>D〈=B3;DP〈='0';WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDRT1;译码:ﻫLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE。STD_LOGIC_UNSIGNED。ALL;ENTITYyimaISPORT(D:INSTD_LOGIC_VECTOR(3DOWNTO0);Q:OUTS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论