当前位置:文档之家› 出租车系统设计

出租车系统设计

出租车计费系统设计功能分析本设计主要介绍了出租车计费系统的设计思路和过程,并给出了所涉及的相关知识的详细介绍。

EDA技术应用,单片机的功能及应用,传感器检测技术,VHDL编程语言及汇编语言程序,显示系统设计及按键控制,目前,普遍的出租车计费器仅仅具有时钟,起步价,里程计费,等待计费及显示几个功能。

其发展前景是可观的,将来的产品除具有这些功能外,另外还可增加如下功能:防作弊功能,IC卡付费:顾客能在制定点购买一定额度的"顾客IC卡",乘车后可用IC卡付帐,付帐是否成功有相应的提示。

车主可定期将总营业额写入"车主IC卡"中,并据此IC卡向所属公司领取报酬。

车票资料打印:顾客付费后可打印发票,打印内容包括车主信息和车费信息等。

可打印车主总营业额信息。

语音播报:当乘客上车时,可自动问候乘客,当到达目的地,自动播报乘车费用并礼貌再见,表达希望下次乘坐的意思。

增加的这些功能将会更好地为乘客服务。

计费及显示①里程,即汽车行程里程,用四位数字显示,显示方式为"XXX.X",单位为㎞,精确到0.1㎞。

②单价,即里程单价,用三位数字显示,显示方式为"X.XX",单价为元/㎞,根据每天不同的时间段有两种情况:当时间段为06:00~23:00时单价为1.4元/㎞,其他时间段内单价为1.80元/㎞。

③等候时间,用四位数字显示分钟和秒,显示方式为"XX:XX",等候的定义是:当汽车行驶速度小于或等于12㎞/h时为"等候"。

在等候时间大于1小时的情况下,可以不显示等候时间,但必须对等候时间进行统计计算。

④等候单价,等候单价有两种情况:在等候时间小于1小时的情况下,等候单价为1元每5分钟;在等候时间大于1小时的情况下,等候单价为20元每小时。

⑤费用的计算,出租车的起价为5.00元,当里程小于2㎞时,按起价计算费用;当里程大于2㎞时按下式计算费用:费用=里程*里程单价+等候时间*等候单价。

⑥费用的显示,用五位数字显示,显示方式为"XXX.XX",单价为元。

时钟及显示当出租车在通常运行状态下,应能显示当前的时间,在汽车熄火的情况下,时钟必须正常运行,但是可以不显示时钟.计费开始提示当出租车载上乘客并起步后,将空车指示牌扳倒时,空车指示牌里的指示灯熄灭,并有语音或灯光提示信号。

功能模块设计根据系统的设计要求,将整个测控FPGA系统CZJFXT分为七个模块,它们分别是:分频器模块FPQ,等待判别模块DDPB,里程计算模块LCJS,里程计费模块LCJF,等待计时模块DDJS,等待计费模块DDJF,输出数据选择模块SCXZ。

分频器模块FPQ:将外部时钟信号SCLK(设计时假设为1024HZ)经过适当分频后,产生1HZ的系统工作用基准时钟信号CLK1HZ,供给系统中的有关模块计时用。

等待判别模块DDPB:根据速度传感器脉冲信号WCLK和分频器产生的基准时钟信号CLK1HZ,计算单位时间里WCLK的脉冲个数(每㎞产生1000个脉冲信号,即每米产生1个脉冲信号),亦即出租车行驶速度,从而判别出租车是否处于等待状态,发出等待标志信号DDBZ。

当速度大于12㎞/H,即速度大于200M/MIN时,出租车处于运行状态,这时等待标志DDBZ=0;当速度小于等于12㏎/H,即速度小于等于200M/MIN时,出租车处于等待状态,这时等待标志DDBZ=1。

该模块的VHDL程序设计可分为三个进程:60S周期性跳变信号产生进程,每分钟行驶距离计算进程,等待标志判别进程。

等待标志判别进程就是比较每分钟WCLK脉冲个数与等待状态WCLK 脉冲临界个数200的大小,从而确定DDBZ的赋值。

里程计算模块LCJS:根据速度传感器脉冲信号WCLK和等待标志DDBZ,对出租车行驶的里程数XSLC进行计算,同时发出里程标志信号LCBZ和里程计费标志信号JFBZ。

如果LCBZ=1,说明行驶距离超过2㎞,里程计费启动;如果LCBZ=0,说明没超过2㎞,按起价计费,每行驶1㏎应计费1次,并且计费的启动信号应是某一时刻,因此每行驶1㎞,计费标志信号JFBZ应跳变1次。

该模块的VHDL程序设计可分为两个进程:里程计算及标志产生进程,产生计费信号进程。

产生计费信号进程就是每行驶10百米(即1㎞)JFBZ由低电平0变为1,经过一个系统时钟周期后JFBZ又回复到低电平0,里程计费模块LCJF就是在JFBZ脉冲信号的上升沿到来时进行计费的加法操作。

里程计费模块LCJF:在计费标志信号JFBZ,等待标志信号DDBZ,里程标志信号LCBZ和时段标志信号SDBZ等信号的控制下,计算行驶里程超过2㎞以上里程的费用LCFY。

该模块的VHDL程序是通过由多个条件控制的加法进程来完成里程计费的,里程计费的条件是在DDBZ=0,并且在JFBZ 的上升沿根据SDBZ分别进行加法计费操作。

当SDBZ=1时,表示在06:00~23:00时段,其单价SD1为1.4元/㎞;当SDBZ=0时,表示其他时段,其单价SD2为1.8元/㎞。

如果LCBZ=1,说明行驶距离超过2㎞,里程计费启动;如果LCBZ=0,说明没超过2㎞,按起价计费。

等待计时模块DDJS:在等待标志信号DDBZ和基准时钟信号CLK1HZ的控制下,进行等待时间DDSJ的计算,其中DDSJ的低8位表示等待时间的秒数,DDSJ的高8位表示等待时间的分钟数,同时根据等待时间的长短发出一个熄灯标志信号XDBZ。

当等待时间小于等于1小时,XDBZ=0,等待时间显示灯亮;当等待时间大于1小时,XDBZ=1,等待时间显示不亮。

该模块的VHDL程序是通过一个多层嵌套的加法进程来完成等待计时的。

等待计费模块DDJF:在等待标志信号DDBZ和熄灯标志信号XDBZ控制下,进行等待费用DDFY的计费操作。

该模块的VHDL程序包括两个进程:60S周期性跳变信号产生进程,等待费用计算进程。

等待费用计算的条件是在DDBZ=1并且在60S周期性跳变信号T60S的上升沿,根据XDBZ分别进行加法计费操作。

当DDBZ=1且XDBZ=0时,按1元/5分钟,即20分/分钟计费;当DDBZ=0且XDBZ=1时,按20元/小时,即33分/分钟计费。

输出数据选择模块SCXZ:根据单片机发出的数据传输选择控制信号SEL,选择有关计算处理结果传输给单片机。

硬件电路设计1.1 系统组成以CPLD/FPGA为主体,设计并制作一台出租车计费系统,系统的方框图如图14.1所示。

图1.1 出租车计费系统方框图1.1.1计费及显示(1) 里程,即汽车行驶里程,用四位数字显示,显示方式为“XXX.X”,单位为km,精确到0.1 km。

(2) 单价,即里程单价,用三位数字显示,显示方式为“X.XX”,单价为元/km,根据每天不同的时间段有两种情况:当时间段为06:00~23:00时单价为1.40元/km,其他时间段内单价为1.80元/km。

(3) 等候时间,用四位数字显示分钟和秒,显示方式为“XX:XX”,等候的定义是:当汽车行驶速度小于或等于12 km/h时为“等候”。

(4) 等候单价,等候单价有两种情况:在等候时间小于1小时的情况下,等候单价为1元每5分钟;在等候时间大于1小时的情况下,等候单价为20元每小时。

(5) 费用的计算,出租车的起价为5.00元,当里程小于2 km时,按起价计算费用;当里程大于2 km时按下式计算费用:费用=里程╳里程单价+等候时间╳等候单价(6) 费用的显示,用五位数字显示,显示方式为“XXX.XX”,单价为元。

1.1.2 时钟及显示当出租车在常运状态下,应能显示当前的时间。

在汽车熄火的情况下,时钟必须正常运行,但是可以不显示时钟。

1.1.3 计费开始提示当出租车载上乘客并起步后,将空车指示牌扳倒时,空车指示牌里的指示灯熄灭,并有语音或灯光提示信号。

1.2 系统设计方案1.2.1 系统总体设计方案本系统拟采用单片机和FPGA的结合进行系统的主体设计,系统原理框图如图1.2所示。

图1.2 出租车计费系统总体原理框图1.2.2 测控FPGA的VHDL程序设计根据系统的设计要求,我们可将整个测控FPGA系统CZJFXT分为七个模块,它们分别是:分频器模块FPQ,等待判别模块DDPB,里程计算模块LCJS,里程计费模块LCJF,等待计时模块DDJS,等待计费模块DDJF,输出数据选择模块SCXZ。

其内部组成原理图如图1.3所示。

分频器模块FPQ:将外部时钟信号SCLK(设计时假设为200 Hz)经过适当分频后,产生1 Hz的系统工作用基准时钟信号CLK1HZ,供系统中的有关模块计时用。

等待判别模块DDPB:根据速度传感器脉冲信号WCLK和分频器产生的基准时钟信号CLK1HZ,计算单位时间里WCLK的脉冲个数(每km产生1000个脉冲信号,即每米产生1个脉冲信号),亦即出租车行驶速度,从而判别出租车是否处于等待状态,发出等待标志信号DDBZ。

里程计算模块LCJS:根据速度传感器脉冲信号WCLK和等待标志DDBZ,对出租车行驶的里程数XSLC进行计算,同时发出里程标志信号LCBZ和里程计费标志信号JFBZ。

里程计费模块LCJF:在计费标志信号JFBZ、等待标志信号DDBZ、里程标志信号LCBZ和时段标志信号XDBZ等信号的控制下,计算行驶里程超过2 km以上里程的费用LCFY。

等待计时模块DDJS:在等待标志信号DDBZ和基准时钟信号CLK1HZ的控制下,进行等待时间DDSJ的计算,其中DDSJ 的低8位表示等待时间的秒数,DDSJ的高8位表示等待时间的分钟数,同时根据等待时间的长短发出一个熄灯标志信号XDBZ。

等待计费模块DDJF:在等待标志信号DDBZ和熄灯标志信号XDBZ控制下,进行等待费用DDFY的计费操作。

输出数据选择模块SCXZ :根据单片机发出的数据传输选择控制信号SEL,选择有关计算处理结果传输给单片机。

SEL与被传送数据的具体关系如表1.1所示。

表1.1 SEL与被传送数据的关系列表1.2.3 单片机控制程序设计单片机模块包括单片机AT89C51及其控制的显示和键盘系统,控制口如图1.3(略)所示。

AT89C51对FPGA的数据进行运算,计算出用车总费用并送显示系统显示,同时它接收键盘信息并处理显示切换。

系统采用6+1显示,6个数码管作常规显示,一个数码管作状态显示。

按键共有5个,分别是功能切换键、确定键、修改键、启动模拟键和空车牌压下模拟键。

涉及的主要流程图如图1.4~1.8所示。

图1.4 主程序流程图图1.5 键处理流程图图1.6 经典显示子程序流程图图1.7 里程显示子程序流程图图1.8 乘车费用显示子程序流程图程序清单1.3 主要源程序14.3.1 主要VHDL源程序1.分频器模块FPQ的VHDL源程序--FPQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY FPQ ISPORT(SCLK: IN STD_LOGIC;--SCLK=200 HzCLK1HZ: OUT STD_LOGIC);--CLK1HZ=1 Hz END ENTITY FPQ;ARCHITECTURE ART OF FPQ IS SIGNALCNT100: INTEGER RANGE 0 TO 99; SIGNAL CLK1: STD_LOGIC; BEGIN PROCESS(SCLK)BEGINIF SCLK'EVENT AND SCLK='1' THENIF CNT100=99 THENCNT100<=0;CLK1<=NOT CLK1;ELSECNT100<=CNT100+1;END IF;ELSECLK1<=CLK1;END IF;CLK1HZ<=CLK1;END PROCESS;END ARCHITECTURE ART;2.等待判别模块DDPB的VHDL源程序--DDPB.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDPB ISPORT(START,WCLK:IN STD_LOGIC;CLK1HZ:IN STD_LOGIC;DDBZ:OUT STD_LOGIC);END ENTITY DDPB;ARCHITECTURE ART OF DDPB ISSIGNAL T60S:STD_LOGIC;SIGNAL WCLKCOU:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN--产生60 s周期性跳变信号进程PROCESS(START, CLK1HZ) ISVARIABLE CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINIF START='1' THENCNT60:="00000000"; T60S<='0';ELSIF CLK1HZ'EVENT AND CLK1HZ='1' THENIF CNT60="00111100" THEN --CNT60=60T60S<='1'; CNT60:="00000000";ELSECNT60: =CNT60+'1'; T60S<='0';END IF;END IF;END PROCESS ;--每分钟行驶距离计算进程PROCESS(START, WCLK, T60S) ISBEGINIF START='1' THENWCLKCOU<="00000000";ELSIF WCLK'EVENT AND WCLK='1' THENIF T60S='1' THENWCLKCOU<="00000000";ELSEWCLKCOU<=WCLKCOU+'1'; --距离计算,单位为m END IF;END IF;END PROCESS ;--等待标志判别进程PROCESS(WCLKCOU,T60S) ISBEGINIF T60S'EVENT AND T60S='1' THENIF WCLKCOU<="11001000" THEN --WCLKCOU<=200DDBZ<='1'; --等待ELSEDDBZ<='0'; --行驶END IF;END IF;END PROCESS ;END ARCHITECTURE ART;3.里程计算模块LCJS的VHDL源程序--LCJS.VHD LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY LCJS IS PORT(START, DDBZ, WCLK: IN STD_LOGIC; XSLC: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); LCBZ,JFBZ:OUT STD_LOGIC); ENDENTITY LCJS; ARCHITECTURE ART OF LCJS IS SIGNALBMS:STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL BMS1: INTEGER RANGE 0 TO 99999; SIGNAL JFBZ1: STD_LOGIC; BEGIN --里程计算及标志产生进程PROCESS(START,WCLK)运行结果说明系统联合调试成功后,可将单片机程序通过编程器固化到单片机中,并插入到EDA实验开发系统中的单片机插座上,将VHDL设计经过综合适配后的网表对CPLD/FPGA进行编程下载,输入相关的信号,并进行有关性能指标的测试,直到满足系统的设计要求为止。

相关主题