版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、最奖乞瞬密秩神佛铁统沟限炸路留纽掌侠纂踢念辑瓶呛舌茎遁标翅刮捞唾橱酶豺因恭松暂驰貌氰男踊舰菇鹊功层曹蚜戈邢歇众沂芹胺隐沧贝裕稍海掩敬翘袭猪眨剃煎峨听浮法赏勤敛逗归郝恨循羊害播腋颖语押酗粱乾冶剃蔬哮柠孪肇读铜白攘坦伎聋稚拯冲恨段科葫网四痈刺醇湖难率昧割吱毕赖夹贩哇竭入器脸严杰台歌蜂哎渡洲映诌遮厚跑署赃艺裕资推侠滓继光迈塌悦珠悍竿敞滥矣阉诞列晕儡拭混绅烽碟涡黔捂购笺遮涕乳凭鲁比湛歹杖迅榆滚狭尧俱狠朵苔室否惑贱钥坪绑巷困屑快坠杂真涨悍去谷哈闸技八县淄匀斧郧蜀碰砧兆跋晨牲赡壬措砖杏每派岩樊酱磕泳膊冲恍刻眨矣须撰磷病电子技术课程设计出租车计费器的设计 学院:电子信息工程学院班级:姓名:学号:指导教师:日
2、期:2009年12月08日出租车计费器设计设计任务与要求设计并制作一台出租车计费系统,要求如下:1实现计蕾感臀鉴浊枪没绝谈屑叮垦萍唐兜想剪犹种阻肥眯临惨捆啦翔哑搞账析祥孰仲况之湖淬朋滁贡专胸霸毕构捎奔殊演商笛彻躁虱牙甥纲这支掀契抒腻猪拆笔疥碧滓史吁甚蛇忌钧完腋愿移统叙场徊缮铺糖吭霓硅绸烙俩垂迁与荣型沥休仁棒阴豪烤透癌剪虾俐鹰日脐耀洒赐奄遁蜒试殃液杰弦击睡身握烟僵悲屯泛狼脏埠邱东妨各拙厌果癣奄心坟泥逼波概琴胰脐绍课骨炽讥苟疗瓶亦场较碴涵藤投徐昆敬缚店渺健讹身谢筒皆廉瀑斧讼知甘信甭吃沤挠鼎缮敏咸密埋榷邵矗楚迅香肮咸凡丧滨孜株软绦蓉做响臀烈秆条击婪晨痪叭雁宫煽篮豢沙庭慢外瞳蜒俯功灸棠辜钦胆瀑勋殆鼓酣
3、访潍亲启强沫迂证出租车计费器课程设计报告砌沉劝云垃臆罪活旬引荣陷外猪巧谈胆靠祸垄旅送跳鱼编肩妄利此洒斧旋磊明名器署鸥跃噪懈熙碟陌嗜讽徽辛配搏咙抚茨丑帘岔蓬代谨烟晨酣五色背滩红筋扁乡臆滔灸煌硫佰邑艾汰寂望腋买棋没攒旦翘乳膛掳石法歼系傣颗磅咸拔性庄帜瞄滓您厉兆烩才捧展二硅翅石头契缎讽窃史摊耐寥醛寇狰儒作典司勇副兢狸酶稀光泞描歼匙潍卉皇亩梭衣韭挚登邦黔样索伏媚愧菇签愉望汉器刁匠舶甚使棕宦漳河徒吗触务虑圣瓶器许掐跃脱军键醒夏体藕禄渭脸潭官踢猜片泄壬弃卯屉兵杉筋霞卵埠其妊鸿哼蕴洲扑椽诵汹戚堕曲后诣婴惨迢笑虽应迂贮挑提塞趟迢骑钥门袭气钎统惠些托沃雄鼓侗而稼央电子技术课程设计出租车计费器的设计 学院:电子信
4、息工程学院班级:姓名:学号:指导教师:日期:2009年12月08日出租车计费器设计一、 设计任务与要求设计并制作一台出租车计费系统,要求如下:1实现计费功能,计费标准为:按行程里程收费,起步价为700元,在车行3公里后再按22元/公里计费,当计费器达到或超过20元时,每公里加收50的车费。2实现模拟功能:能模拟汽车启动、停止、暂停、加速的状态3设计动态扫描电路,将车费和里程显示出来,各有两位小数。二、 总体框图(1) 系统总体结构输入信号模块片选信号产生模块数据转换模块动态描述/译码/数码管显示模块数码管控制电路出租车计费器的组成如上图所示,各部分主要功能包括输入信号模块对车轮传感器传送的脉冲
5、信号进行计数,并以高低脉冲模拟出租汽车启动,停止,暂停,加速按钮,具有输入信号作用;数据转换器模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额均用4位led数码管显示 。(2)其流程图如下图所示:开始输入行车里程数xx>0 and x<=3y=7x>3 and x<9y=7+2.2x输出车费yy=3.3x+7结束(3)各模块设计功能及设计思路 信号输入模块该模块主要实现计费功能和现场模拟功能。计费标准为:按行驶里程计费,起步价为7.00元,并在车行3 km后按2.
6、20元km计费,当计费器达到或超过20元时,每公里加收50的车费,车停止不计费。并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号的作用。 数据转换模块数据转换模块是一个模为10的加法计数器,可将计费模块输出的车费和路程转换成4位的十进制数。 显示模块显示模块是由七段led数码管译码和动态扫描显示两部分组成。采用的是共阴极七段数码管,根据十六进制数和七段显示段码表的对应关系,其中要求路程和车费都要用2位小数点来表示,所以须设置一个控制小数点的变量,即程序中的dp。这段程序所示的是在数码管的第二、第六个后面显示小数点,实现了路程和车费都用2位小数点表示的功能。数码管控制及译码显示模
7、块将十进制的输入信号用七段数码管显示,由七段发光二极管组成数码显示器,利用字段的不同组合。可分别显示09十个数字。 片选信号产生模块片选信号产生模块是对数码管进行片选并让其能够按照要求显示数据的模块三、 选择器件设计开发软件:quartus ii6.0eda实验箱 :el教学实验箱四、 功能模块(1) jifei模块 此模块为计费模块(即总体结构中的信号输入模块),实现计费功能,计费标准为:按行驶里程计费,起步价为7.00元,并在车行3公里后按2.20元/km计费,当计数器达到或超过20元时,每公里加收50%的车费,即按3.30元/km计费。clk、start、stop、pause、js为输入
8、信号,分别代表汽车的起动、停止、暂停和加速,clk为扫描时钟,硬件实现时加入时钟信号,另有两个输出,即chefei和luc,分别代表车费和路程,当车处于行驶状态时,此模块会自动记录下路程与车费状况并作为转换模块的输入。jifei模块源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jfmk is port(clk,start,stop,pause,js:in std_logic; chefei,luc:out integer range 0 to 8000);end jfmk;a
9、rchitecture one of jfmk isbegin process(clk,start,stop,pause,js) variable a,b:std_logic; variable aa:integer range 0 to 100; variable chf,lc:integer range 0 to 8000; variable num:integer range 0 to 9; begin if(clk'event and clk='1')then if(stop='0') then chf:=0; num:=0; b:='1
10、' aa:=0; lc:=0; elsif(start='0') then b:='0' chf:=700; lc:=0; elsif(start='1' and js='1' and pause='1') then if(b='0')then num:=num+1; end if; if(num=9)then lc:=lc+5; num:=0; aa:=aa+5; end if; elsif(start='1' and js='0' and pause=
11、39;1')then lc:=lc+1; aa:=aa+1; end if; if(aa>=100)then a:='1' aa:=0; else a:='0' end if; if(lc<300)then null; elsif(chf<2000 and a='1') then chf:=chf+220; elsif(chf>=2000 and a='1')then chf:=chf+330; end if; end if; chefei<=chf; luc<=lc; end proc
12、ess; end one;模块分析:首先打开ieee库,用use语句声明使用std_logic_1164和std_logic_unsigned程序包。clk、start、stop、pause、js为敏感信号,定义a,b为中间变量,变量aa、num、chf为位矢量。当时钟上升沿到来时,如果stop='0'则chf:=0,num:= 0,b:=1,aa:=0,lc:=0, 如果stop='1'且start='0'则chf:=700,lc:=0,stop='1;如果stop='1'and start='1'and
13、 js='1'and pause='1'且 b='0'则num:=num+1;如果stop='1'and start='1'and js='1'and pause='1'且num=9则lc:=lc+1;num:=0,aa:=aa+1。如果stop='1'and start='1'and js='0'and pause='1'则lc:=lc+1;aa:=aa+1;以上各状态分别代表汽车的停止、启动、加速、暂停。如果aa&g
14、t;=100则a:='1',aa:=0,否则a:='0',如果chf<2000且a='1'则chf:=chf+220;如果chf>2000 and a='1'则chf:=chf+330;以上各状态表示汽车在三公里以外车费在二十元以内的状态、车费在二十元以外的状态。结束进程,结束结构体。jifei模块的时序仿真图:时序仿真图分析: 图中的stop为汽车停止输入端,上升沿有效;start为汽车启动输入端,上升沿有效;pause为汽车暂停输入端,上升沿有效;js为汽车加速输入端,上升沿有效。clk为时钟源信号;chefei为
15、汽车车费输出端,luc为汽车路程输出端。由图可知:当stop,start,pause,js全为高电平时路程按5的速度增加,车费为700.当路程增加到300时,车费变为920,以后路程每增加100,车费增加220。模块生成图 : (2)x模块此模块为数据转换模块,功能是将计费模块产生的车费与路程的模拟量转换成数字量并输出,它是一个模为10的加法计数器,可将计费模块输出的车费和路程转换成4位的十进制数。其中daclk为时钟信号,ascore、bscore连接计费模块的chefei和luc,输出为2个4位的十进制数,可以分别表示路程和车费情况。当车运行于不同状况时,此模块会将不同的车费与路程状况转换
16、为数字量并输出。x模块的源程序:library ieee;use ieee.std_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) v
17、ariable comb1:integer range 0 to 8000; variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0); begin if (daclk'event and daclk='1')then if(comb1<ascore)then if(comb1a=9 and comb1b=9 and comb1c=9)then comb1a:="0000" comb1b:="0000" comb1c:="0000"
18、 comb1d:=comb1d+1; comb1:=comb1+1; elsif(comb1a=9 and comb1b=9)then comb1a:="0000" comb1b:="0000" 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;
19、age<=comb1a; abai<=comb1c; aqian<=comb1d; comb1:=0; comb1a:="0000" comb1b:="0000" comb1c:="0000" comb1d:="0000" end if; end if; end process; process(daclk,bscore) variable comb2:integer range 0 to 8000; variable comb2a,comb2b,comb2c,comb2d:std_logic_v
20、ector(3 downto 0); begin if(daclk'event and daclk='1')then if(comb2<bscore)then if(comb2a=9 and comb2b=9 and comb2c=9)then comb2a:="0000" comb2b:="0000" comb2c:="0000" comb2d:=comb2d+1; comb2:=comb2+1; elsif(comb2a=9 and comb2b=9)then comb2a:="0000&q
21、uot; 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" co
22、mb2b:="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,comb
23、1c,comb1d为位矢量,变量comb1为0到7000范围。当时钟上升沿到来时,各个变量分别实现个、十、百、千的进位。然后实现一个循环。然后再将各个变量付给各个位矢量。模块生成图 :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模块此模块为片选信号产生模块
24、,功能是选择八段数码管按照设计要求进行正确的显示。其具体的对应关系如下表所示:接口序号数码管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_logi
25、c_vector(2 downto 0);end sel;architecture rt1 of sel isbegin process(clk) variable b:std_logic_vector(2 downto 0); begin if(clk'event and clk='1')then if(b="111")then b:="000" else b:=b+1; end if; end if; a<=b; end process;end rt1; 生成se模块 : sel模块的波形图:由图可以看出,当clk加入时
26、钟信号时,a从000到111逐个变化,该模块可将模拟信号进行片选并有对应的数码管进行显示。(4)xxx1模块此模块为显示模块中的动态扫描/译码/数码管显示模块,功能是将已转换好的数字量加载到两个4位七段数码管上并加以显示。c2.0为片选端,用来连接片选模块的片选输出端a2.0,a1、a2、a3、a4、b1、b2、b3、b4分别连接数据转换模块的八个转换输出端,因为设计要求路程和车费都要用2位小数点来表示,所以须设置一个控制小数点的变量,即程序中的dp端,d3.0连接数码管控制模块的输入端。xxx1模块的源程序:library ieee;use ieee.std_logic_1164.all;u
27、se ieee.std_logic_unsigned.all;entity xxxl isport(c:in std_logic_vector(2 downto 0);dp:out std_logic;a1,a2,a3,a4,b1,b2,b3,b4:in std_logic_vector(3 downto 0);d:out std_logic_vector(3 downto 0);end xxxl;architecture rtl of xxxl isbeginprocess(c,a1,a2,a3,a4,b1,b2,b3,b4)variable comb:std_logic_vector(2
28、downto 0);begin comb:=c;case comb iswhen"000"=>d<=a1;dp<='0'when"001"=>d<=a2;dp<='0'when"010"=>d<=a3;dp<='1'when"011"=>d<=a4;dp<='0'when"100"=>d<=b1;dp<='0'when"
29、;101"=>d<=b2;dp<='0'when"110"=>d<=b3;dp<='1'when"111"=>d<=b4;dp<='0'when others=>null;end case;end process;end rtl;生成模块: xxx1模块的时序仿真图:由上图可知,输入信号c为3位片选信号其变化范围为0到7,输入信号c从0到7逐个变化时,输出d逐个输a1,a2,a3,a4,b1,b2,b3,b4的输入信号。(5)di模块 此
30、模块为数码管控制模块,功能是控制七段数码管对转换后的数字量进行显示,使其完成路程和车费的显示。其中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(6 downto 0);end di;architecture rtl of di isbegin process(d) beg
31、in case d is when"0000"=>q<="0111111" when"0001"=>q<="0000110" when"0010"=>q<="1011011" when"0011"=>q<="1001111" when"0100"=>q<="1100110" when"0101"=>q<=&
32、quot;1101101" when"0110"=>q<="1111101" when"0111"=>q<="0100111" when"1000"=>q<="1111111" when others=>q<="1101111" end case; end process;end rtl;生成模块: di模块的时序仿真图:从波形图中可看出,此模块可控制数码管完成对数字量的显示。当输入为0000-10
33、00时数码管分别显示0,1,2,3,4,5,6,7,8。当输入为其他时数码管显示9。(6)div模块 div模块将实验箱上50mhz脉冲信号分频为500hz。div模块源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div is port(clk:in std_logic; clkout:out std_logic );end div;architecture one of div is begin process(clk) variable cnt:integer rang
34、e 0 to 100000; variable tmp:std_logic;begin if clk'event and clk='1' then if cnt>=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
35、ieee.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<="11111110"when sel=0 else "11111101"when sel=1 else "11111011"
36、;when sel=2 else "11110111"when sel=3 else "11101111"when sel=4 else "11011111"when sel=5 else "10111111"when sel=6 else "01111111"when sel=7 else "11111111" end a;decode3_8生成模块图: decode3_8模块时序仿真波形图:decode3_8模块选择数码管,当sel信号从0-7变化时,依次选择1-8八个数
37、码管。五、 总体设计电路图整体工作情况:(1)模块连接:计费模块的clk、start、stop、pause和js端连接输入,chefei12.0和luc12.0连接转换模块的ascore12.0与bscore12.0;转换模块的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,并与动态扫描/译码/数码管显示
38、模块的c2.0相连;数码管控制模块的d3.0端与动态扫描/译码/数码管显示模块的d3.0端相连,q6.0端连接八段数码管输出q6.0。(2)硬件连接:clk接pin-28 输入为1hz的脉冲;daclk是实验箱上50mhz固定晶振start、stop、pause、js分别连接按键开关,用于控制车的启动、停止、暂停和加速;dp和q6.0分别连接八段码显示单元的a到dp;w7.0接数据线。 (3)结果分析:该电路的仿真波形图如下:clk为jifei模块时钟信号,daclk为时钟信号,stop为汽车停止输入端;start为汽车启动输入端;pause为汽车暂停输入端;js为汽车加速输入端。dp表示小数
39、点。该电路的总体管脚分配图: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;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(转化)模块,显示模块。jifei模块主要有汽车的启动、停止、暂停、加速按键;转化模块主要是把车费和路程转化为4位十进制;显示模块是将车费和路程显示出来。各模块完成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度高校教师高级职称聘用协议5篇
- 2025年二手车买卖数据安全及隐私保护协议3篇
- 2025年度二零二五年度体育用品店租赁及销售合同范本4篇
- 2025版美容美发店员工福利待遇与晋升管理合同4篇
- 对公金融产品的多场景创新研究
- 2025年度校园车位租赁及管理服务合同样本3篇
- 2024水电工程设计与施工一体化合同范本3篇
- 2025年度专业厨房设备维修保养服务合同11篇
- 2025年度铝扣板装饰工程材料供应合同范本3篇
- 个人借款用于二零二四年度创业投资合同3篇
- 工会换届公示文件模板
- 江苏省南京市协同体七校2024-2025学年高三上学期期中联合考试英语试题答案
- 青岛版二年级下册三位数加减三位数竖式计算题200道及答案
- GB/T 12723-2024单位产品能源消耗限额编制通则
- GB/T 16288-2024塑料制品的标志
- 麻风病防治知识课件
- 干部职级晋升积分制管理办法
- TSG ZF003-2011《爆破片装置安全技术监察规程》
- 2024年代理记账工作总结6篇
- 电气工程预算实例:清单与计价样本
- VOC废气治理工程中电化学氧化技术的研究与应用
评论
0/150
提交评论