出租车自动计费系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

东北石油大学课程设计2011年3月11日课程EDA技术课程设计题目出租车自动计费系统院系电子科学学院专业班级电子信息工程学生姓名学生学号指导教师1东北石油大学课程设计任务书课程EDA技术课程设计题目出租车自动计费系统专业姓名学号主要内容、基本要求、主要参考资料等主要内容:设计一个最大量程为99.99元的出租车自动计费,计费器具有行车里程计费、等候时间计费及起价三部分功能,并用数码管显示车费的数目。基本要求:1、设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为99.99元;2、行车里程单价1元/公里,等候时间单价0.5元/10分钟,起价3元(3公里起价)均能通过人工输入。3、行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用BCD码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置。例如单价是1.0元/公里,则脉冲当量为0.01元/脉冲。4、用LED显示行驶公里数,两个数码管显示收费金额。主要参考资料:[1]潘松著.EDA技术实用教程(第二版).北京:科学出版社,2005.[2]康华光主编.电子技术基础模拟部分.北京:高教出版社,2006.[3]阎石主编.数字电子技术基础.北京:高教出版社,2003.完成期限2011.3.11指导教师专业负责人2011年3月11日2一、总体设计思想1.基本原理本次设计首先在QuartusⅡ环境中对出租车自动计费器的各个部分利用VHDL这一硬件描述语言予以设计,生成模块。而整个设计的核心部分就在分频/计量模块,该模块完成的功能主要包括计费脉冲的产生,等待计时、计价、计程功能。随后运用QuartusⅡ中的仿真功能对其予以仿真,从仿真的结果中分析程序的正确性。待所有模块的功能正确之后,运用原理图搭建顶层电路并进行整体仿真直至达到最初的设计要求,最后再在实验箱上检验设计的正确与否。基于CPLD的出租车计费器的组成如下图所示。各部分主要功能包括:信号输入模块对车轮传感器传送的脉冲信号进行计数(每转一圈送一个脉冲),并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号作用;数据转换模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额均用4位LED数码管显示(2位整数,2位小数)。2.设计框图上电写入程序,后由RST(清零)信号置低电平开始。分别控制计时和计程EN开始或停止计费。计程和计费中每km或分钟发一次脉冲给计费模块。这三个模块的数据处理信息通过总线输送到显示模块。进行译码。译码输出位选和七段数码管显示信息。由外围电路:74ls138和八位七段数码管显示。前3位金额后四位为里程和计时。中间一位为F,实际可以使用特殊的数码管显示元。行车里程等车时间起步价BCD码比例乘法器BCD码比例乘法器比例(每转一圈送一个等车单价里程单价脉冲数求和计数器译码器显示器脉冲电路出租车计费器框图3二、设计步骤和调试过程1、总体设计电路计程模块是2个100进制计数器,输入的每10米一次脉冲经一次100进制计数获得每km一次的脉冲,由100进制计数输出为2个4位2进制BCD码。接显示模块,得到计程(0-99km)。计时部分:计算乘客的等待累计时间。等候时间计费需将等候时间转换成脉冲个数,用每个脉冲表示的金额与脉冲数相乘即得计费数,例如100个脉冲表示10分钟,而10分钟收费0。5元,则脉冲当量为0。05元/脉冲,如果将脉冲当量设置成与行车里程计费相同(0。01元/脉冲),则10分钟内的脉冲数应为500个。计程部分:计算乘客所行驶的公里数。计程器的量程为99km,满量程后自动归零。显示模块输入计费、计时,计程数据总线通过扫描脉冲选择一个BCD码进行译码,每扫描一次进行一位显示。所以扫描脉冲适当取高一点。考虑视觉暂留25帧乘8得200Hz以上为好。实际实验中使用了5859Hz。其他RST信号,每10米,1Hz,74ls38三位八线选择器,八位七段数码管由外围设备和电路提供。42、模块设计和相应模块程序2.1计数器原理:通过分别设计计程计费计时模块完成各自功能。2.2计程模块原理使用4位十进制计数器封装成为8位一百进制计数器。对于外部每10米的里程脉冲,经计数可以每km输出进位脉冲一次。再用一百进制计数器对其进行计数。通过对计数输出信号的译码可以得到里程显示。2.3计时模块原理使用1Hz的外部脉冲信号,使用5位60进制计数器。可以得到每分钟一次的脉冲输出。再使用一百进制计数器对其进行计数。通过对计数输出信号的译码可以得到时间显示。2.4计费模块原理5计费模块是设计中的关键模块,也是最难的模块。逻辑复杂,要求多。使用前两模块中的分钟信号作为时间输入,千米信号作为路程输入。使用2个特殊编写的10进制计数器对时间和里程计数。并且在里程计数设置ENT输出,在计费小于3元是钳制角金额输出为零。但是角计费照常只是不显示。在金额超过3元时显示。再使用一十进制计数器进行十元计数。2.5显示模块原理通过使用74ls138和七段数码管进行显示和显示位选择。这要求输出使用3位输出为位选,对其译码得到数码管地址,7位数据在相应数码管上显示相应的数据。2.6综合通过VHDL和原理图的混合设计完成对各模块的编写,连接。时间.LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYTAXIISPORT(CLK:INSTD_LOGIC;START:INSTD_LOGIC;STOP:INSTD_LOGIC;FIN:INSTD_LOGIC;CHA3,CHA2,CHA1,CHA0:OUTSTD_LOGIC_VECTOR(3DOWNTO0);KM1,KM0:OUTSTD_LOGIC_VECTOR(3DOWNTO0);MIN1,MIN0:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDTAXI;ARCHITECTUREBEHAVEOFTAXIIS6SIGNALQ_1:INTEGERRANGE0TO99;SIGNALW:INTEGERRANGE0TO59;SIGNALC3,C2,C1,C0:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALK1,K0:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALM1:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALM0:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALTEMP0,TEMP1:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALF_1:STD_LOGIC;SIGNALEN0,EN1:STD_LOGIC;BEGINFEIPIN:PROCESS(CLK,START)BEGINIFCLK'EVENTANDCLK='1'THENIFSTART='0'THENF_1='0';Q_1=0;ELSEIFQ_1=99THENQ_1=0;F_1='1';ELSEQ_1=Q_1+1;F_1='0';ENDIF;ENDIF;ENDIF;7ENDPROCESS;PROCESS(FIN)BEGINIFFIN'EVENTANDFIN='1'THENIFSTART='0'THENK1=0000;K0=0000;ELSIFSTOP='0'THENIFK0=1001THENK0=0000;IFK1=1001THENK1=0000;ELSEK1=K1+1;ENDIF;ELSEK0=K0+1;ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(F_1)BEGINIFF_1'EVENTANDF_1='1'THENIFSTART='0'THENW=0;8M1=0000;M0=0000;ELSIFSTOP='1'THENIFW=59THENW=0;IFM0=1001THENM0=0000;IFM1=0101THENM1=0000;ELSEM1=M1+1;ENDIF;ELSEM0=M0+1;ENDIF;ELSEW=W+1;ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENIFSTART='0'THENEN0='0';9EN1='0';ELSIFSTOP='0'THENEN0='0';IFK1&K000000011THENEN0='1';ELSEEN0='0';ENDIF;ELSIFSTOP='1'THENEN0='0';IFM1&M000000010THENEN1='1';ELSEEN1='0';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,START)VARIABLEC13,C15:INTEGER;BEGINIFSTART='0'THENC3=0000;C2=0000;C1=0101;C0=0000;C13:=0;C15:=0;TEMP0=0000;TEMP1=0000;ELSIFCLK'EVENTANDCLK='1'THENIF(EN0='1')THEN10IF(C1313)THENC13:=C13+1;IF(C13=1)THENTEMP0=K0;ENDIF;IFC0=1001THENC0=0000;IFC1=1001THENC1=0000;IFC2=1001THENC2=0000;IFC3=1001THENC3=0000;ELSEC3=C3+1;ENDIF;ELSEC2=C2+1;ENDIF;ELSEC1=C1+1;ENDIF;ELSEC0=C0+1;ENDIF;ELSIF(K0/=TEMP0)THENC13:=0;11ENDIF;ELSIF(EN1='1')THENIF(C1515)THENC15:=C15+1;IF(C15=1)THENTEMP1=M0;ENDIF;IFC0=1001THENC0=0000;IFC1=1001THENC1=0000;IFC2=1001THENC2=0000;IFC3=1001THENC3=0000;ELSEC3=C3+1;ENDIF;ELSEC2=C2+1;ENDIF;ELSEC1=C1+1;ENDIF;ELSEC0=C0+1;12ENDIF;ELSIF(M0/=TEMP1)THENC15:=0;ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(F_1)BEGINIFF_1'EVENTANDF_1='1'THENIFSTART='0'THENMIN1=0000;MIN0=0000;KM1=0000;KM0=0000;CHA3=0000;CHA2=0000;CHA1=0000;CHA0=0000;ELSEMIN1=M1;MIN0=M0;KM1=K1;KM0=K0;CHA3=C3;CHA2=C2;CHA1=C1;CHA0=C0;ENDIF;ENDIF;ENDPROCESS;ENDBEHAVE;133、仿真及仿真结果分析仿真图144、实验调试结果由仿真图可知,该程序可以实现任务书中所要求的计费系统的功能,包括行车里程计费、等候时间计费及起价三部分,并通过加法器计算出总费用。三、结论及心得体会这次的课程设计令我收获颇丰。设计的核心内容就是QuartusⅡ环境中,利用VHDL语言设计出基于CPLD的出租车自动计费器。整个设计过程中首先对数字电路这门课程有了更深的了解,因为课程设计本身要求将以前所学的理论知识运用到实际的电路设计当中去,在电路的设计过程中,无

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功