出租车计费器课程设的计报告.doc

上传人:本田雅阁 文档编号:2098695 上传时间:2019-02-13 格式:DOC 页数:21 大小:328.05KB
返回 下载 相关 举报
出租车计费器课程设的计报告.doc_第1页
第1页 / 共21页
出租车计费器课程设的计报告.doc_第2页
第2页 / 共21页
出租车计费器课程设的计报告.doc_第3页
第3页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《出租车计费器课程设的计报告.doc》由会员分享,可在线阅读,更多相关《出租车计费器课程设的计报告.doc(21页珍藏版)》请在三一文库上搜索。

1、电子技术课程设计出租车计费器的设计 学院:电子信息工程学院班级:姓名:学号:指导教师:日期:2009年12月08日出租车计费器设计一、 设计任务与要求设计并制作一台出租车计费系统,要求如下:1实现计费功能,计费标准为:按行程里程收费,起步价为700元,在车行3公里后再按22元/公里计费,当计费器达到或超过20元时,每公里加收50的车费。2实现模拟功能:能模拟汽车启动、停止、暂停、加速的状态3设计动态扫描电路,将车费和里程显示出来,各有两位小数。二、 总体框图(1) 系统总体结构输入信号模块片选信号产生模块数据转换模块动态描述/译码/数码管显示模块数码管控制电路出租车计费器的组成如上图所示,各部

2、分主要功能包括输入信号模块对车轮传感器传送的脉冲信号进行计数,并以高低脉冲模拟出租汽车启动,停止,暂停,加速按钮,具有输入信号作用;数据转换器模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额均用4位LED数码管显示 。(2)其流程图如下图所示:开始输入行车里程数xx0 and x3 and x=100)then a:=1; aa:=0; else a:=0; end if; if(lc300)then null; elsif(chf=2000 and a=1)then chf:=chf+

3、330; end if; end if; chefei=chf; luc=100则a:=1,aa:=0,否则a:=0,如果chf2000 and a=1则chf:=chf+330;以上各状态表示汽车在三公里以外车费在二十元以内的状态、车费在二十元以外的状态。结束进程,结束结构体。jifei模块的时序仿真图:时序仿真图分析: 图中的stop为汽车停止输入端,上升沿有效;start为汽车启动输入端,上升沿有效;pause为汽车暂停输入端,上升沿有效;js为汽车加速输入端,上升沿有效。CLK为时钟源信号;chefei为汽车车费输出端,luc为汽车路程输出端。由图可知:当stop,Start,paus

4、e,js全为高电平时路程按5的速度增加,车费为700.当路程增加到300时,车费变为920,以后路程每增加100,车费增加220。模块生成图 : (2)x模块此模块为数据转换模块,功能是将计费模块产生的车费与路程的模拟量转换成数字量并输出,它是一个模为10的加法计数器,可将计费模块输出的车费和路程转换成4位的十进制数。其中DACLK为时钟信号,ASCORE、BSCORE连接计费模块的CHEFEI和LUC,输出为2个4位的十进制数,可以分别表示路程和车费情况。当车运行于不同状况时,此模块会将不同的车费与路程状况转换为数字量并输出。x模块的源程序:library ieee;use ieee.std

5、_logic_1164.all;use ieee.std_logic_unsigned.all;entity x is port(daclk:in std_logic; ascore,bscore:in integer range 0 to 8000; age,ashi,abai,aqian,bge,bshi,bbai,bqian:out std_logic_vector(3 downto 0);end x;architecture rt1 of x isbegin process(daclk,ascore) variable comb1:integer range 0 to 8000; va

6、riable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0); begin if (daclkevent and daclk=1)then if(comb1ascore)then if(comb1a=9 and comb1b=9 and comb1c=9)then comb1a:=0000; comb1b:=0000; comb1c:=0000; comb1d:=comb1d+1; comb1:=comb1+1; elsif(comb1a=9 and comb1b=9)then comb1a:=0000; comb1b:=000

7、0; comb1:=comb1+1; comb1c:=comb1c+1; elsif(comb1a=9)then comb1a:=0000; comb1b:=comb1b+1; comb1:=comb1+1; else comb1a:=comb1a+1; comb1:=comb1+1; end if; else ashi=comb1b; age=comb1a; abai=comb1c; aqian=comb1d; comb1:=0; comb1a:=0000; comb1b:=0000; comb1c:=0000; comb1d:=0000; end if; end if; end proce

8、ss; process(daclk,bscore) variable comb2:integer range 0 to 8000; variable comb2a,comb2b,comb2c,comb2d:std_logic_vector(3 downto 0); begin if(daclkevent and daclk=1)then if(comb2bscore)then if(comb2a=9 and comb2b=9 and comb2c=9)then comb2a:=0000; comb2b:=0000; comb2c:=0000; comb2d:=comb2d+1; comb2:=

9、comb2+1; elsif(comb2a=9 and comb2b=9)then comb2a:=0000; comb2b:=0000; comb2:=comb2+1; comb2c:=comb2c+1; elsif(comb2a=9)then comb2a:=0000; comb2b:=comb2b+1; comb2:=comb2+1; else comb2a:=comb2a+1; comb2:=comb2+1; end if; else bshi=comb2b; bge=comb2a; bbai=comb2c; bqian=comb2d; comb2:=0; comb2a:=0000;

10、comb2b:=0000; comb2c:=0000; comb2d:=0000; end if; end if; end process;end rt1;程序分析:首先打开ieee库,用use语句声明使用std_logic_1164和std_logic_unsigned程序包。定义实体,daclk、ascore、bscore为输入,age、ashi、abai、aqian、bge、bshi、bbai、bqian为输出位矢量。然后定义结构体,daclk、ascore、bscore为敏感信号,定义变量comb1a,comb1b,comb1c,comb1d为位矢量,变量comb1为0到7000范围。

11、当时钟上升沿到来时,各个变量分别实现个、十、百、千的进位。然后实现一个循环。然后再将各个变量付给各个位矢量。模块生成图 :X模块的时序仿真图时序仿真图的分析转换模块的时序仿真图如下图所示:可见能将路程和车费转换为4位的十进制数,便于8位数码管显示。由图可知:当ascore,bscore为13位二进制数,当ascore为0-9时age从0到9变化,当ascore为10时age等于0,ashi等于1。 当bscore为0-9时bge从0到9变化,当bscore为10时bge等于0,bshi等于1。(3)sel模块此模块为片选信号产生模块,功能是选择八段数码管按照设计要求进行正确的显示。其具体的对应

12、关系如下表所示:接口序号数码管SEL2SEL1SEL0状态111第1位亮110第2位亮101第3位亮100第4位亮011第5位亮010第6位亮001第7位亮0XX第8位亮在该模块中CLK为时钟信号,A2.0为片选输出,用于选择数码管,连接译码显示模块的片选端C2.0。se模块的源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sel is port(clk:in std_logic; a:out std_logic_vector(2 downto 0);end sel;ar

13、chitecture rt1 of sel isbegin process(clk) variable b:std_logic_vector(2 downto 0); begin if(clkevent and clk=1)then if(b=111)then b:=000; else b:=b+1; end if; end if; ad=a1;dpd=a2;dpd=a3;dpd=a4;dpd=b1;dpd=b2;dpd=b3;dpd=b4;dpnull;end case;end process;end rtl;生成模块: xxx1模块的时序仿真图:由上图可知,输入信号C为3位片选信号其变化范

14、围为0到7,输入信号c从0到7逐个变化时,输出d逐个输a1,a2,a3,a4,b1,b2,b3,b4的输入信号。(5)di模块 此模块为数码管控制模块,功能是控制七段数码管对转换后的数字量进行显示,使其完成路程和车费的显示。其中D3.0连接动态扫描/译码/数码管显示模块的D3.0端,Q6.0连接七段数码管,利用其控制特性在数码管上显示出车费和路程。di模块的源程序:library ieee;use ieee.std_logic_1164.all;entity di isport(d:in std_logic _vector(3 downto 0); q:out std_logic_vector

15、(6 downto 0);end di;architecture rtl of di isbegin process(d) begin case d is when0000=qqqqqqqqqq=99999 thencnt:=0;tmp:=not tmp;else cnt:=cnt+1;end if;end if;clkout=tmp;end process;end one;div生成模块图:div模块时序仿真波形:div将时钟信号分频,使频率减小。(7) decode3_8模块 sel通过decode3_8模块选择数码管decode3_8模块源程序: LIBRARY ieee;use iee

16、e.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY decode3_8 IS PORT(SEL:IN std_logic_vector(2 downto 0); Q:OUT std_logic_vector(7 downto 0);END decode3_8;ARCHITECTURE a OF decode3_8 ISBEGIN Q=11111110when sel=0 else 11111101when sel=1 else 11111011when sel=2 else 11110111when sel=3 else 11

17、101111when sel=4 else 11011111when sel=5 else 10111111when sel=6 else 01111111when sel=7 else 11111111; END a;decode3_8生成模块图: decode3_8模块时序仿真波形图:decode3_8模块选择数码管,当sel信号从0-7变化时,依次选择1-8八个数码管。五、 总体设计电路图整体工作情况:(1)模块连接:计费模块的clk、start、stop、pause和js端连接输入,chefei12.0和luc12.0连接转换模块的ascore12.0与bscore12.0;转换模块的

18、daclk端连接输入,age3.0至bqian3.0连接动态扫描/译码/数码管显示模块的a13.0至b43.0;动态扫描/译码/数码管显示模块的C2.0连接片选输出SEL2.0,DP端连接输出DP,D3.0连接数码管控制模块的D3.0;片选信号产生模块的CLK端与输入信号相连,并连接转换模块的DACLK端,A2.0连接片选输出SEL2.0,并与动态扫描/译码/数码管显示模块的C2.0相连;数码管控制模块的D3.0端与动态扫描/译码/数码管显示模块的D3.0端相连,Q6.0端连接八段数码管输出Q6.0。(2)硬件连接:CLK接pin-28 输入为1hz的脉冲;daclk是实验箱上50Mhz固定晶

19、振START、STOP、PAUSE、JS分别连接按键开关,用于控制车的启动、停止、暂停和加速;DP和Q6.0分别连接八段码显示单元的a到dp;W7.0接数据线。 (3)结果分析:该电路的仿真波形图如下:clk为jifei模块时钟信号,daclk为时钟信号,stop为汽车停止输入端;start为汽车启动输入端;pause为汽车暂停输入端;js为汽车加速输入端。DP表示小数点。该电路的总体管脚分配图:clk:pin-28;daclk:pin-153;start:pin-4;stop:pin-5;pause:pin-6; js:pin-7;dp:pin-82;q6.0:pin-105;pin-104

20、;pin-101;pin-100; pin-85;pin-84;pin-83;W7.0:pin-86;pin-87;pin-88;pin-93;pin-94;pin-95;pin-98;pin-99;vga3.0:pin-162;pin-161;pin-164;pin-163;六、 硬件实现通过硬件下载,该电路可以完成硬件实现,芯片管脚定义可以直接用编辑pin文件。完成管脚定义后选择器件,编译后生成sof、pof文件。选择sof文件进行下载。通过对每一模块的仿真和下载,可以实现各个模块的逻辑功能,验证了各个模块的正确性。在出租车计费系统的5个模块中 ,重点在于jifei模块,x(转化)模块,显

21、示模块。jifei模块主要有汽车的启动、停止、暂停、加速按键;转化模块主要是把车费和路程转化为4位十进制;显示模块是将车费和路程显示出来。各模块完成后,在将它们组合成完整的出租车系统,在设计过程中还需要改进的是控制系统的纠错功能。出租车计费器系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。车暂时停止不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始。出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。实验表明:该计费器实现了按预置参数自动计费(最大计费金额为99.99元)、自动计程(最大计程公里数为99.99 km)等功能;能够实现起步价、每公里收费、车型及加费里程的参数预置(如:起步价7.00元;3 km后,2.20元/km;计费超过20.00元,每公里加收50的车费等),且预置参数可调范围广。由于采用CPLD大规模可编程逻辑器件,整机功耗小、抗干扰能力强、系统稳定、工作可靠、升级方便。七、 出租车计费器课程设计的心得体会

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1