亲爱的网友们,对于出租车计价器程序设计与原理图和出租车计价器设计,很多人可能不是很了解。因此,今天我将和大家分享一些关于出租车计价器程序设计与原理图和出租车计价器设计的知识,希望能够帮助大家更好地理解这个话题。

本文目录一览

出租车计价器程序设计与原理图

用单片机好做,但如果用模拟电路和数字电路来搭建这样复杂的功能,恐怕做出来要比现有的成本计价器大几十倍,而且耗电巨大,成本更高,何必要这样做呢?只因为没有学到就要这样不计成本的浪费吗?
如果是急求的话,可以花钱招一个懂单片机的人来搞,没有人能提供不用单片机的电路的,太复杂了,不可能实现。

首先要看里程传感器的输出是模拟的还是数字的。
无论何种里程传感器,
可以用数字积分器,简单些;也可以用模拟积分器,这样设计和调试的难度就很大。

返回目录

出租车计价器设计

实验任务及要求
1.能实现计费功能,计费标准为:按行驶里程收费,起步费为10.00元,并在车行3公里后再按1.6元/公里,车暂停时,停车一分钟之后开始加价,每分钟增加2.5元。
2.实现预置功能:能预置起步费、每公里收费、车行加费里程。
3.实现模拟功能:能模拟汽车启动、停止、暂停等状态。
4.设计动态扫描电路:将车费及暂停时间显示出来。
5.用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
6.综合仿真验证,并通过有关波形确认电路设计是否正确。
7.完成电路全部设计后,通过GW48系统实验箱下载验证设计的正确性。
二、实验原理

图1出租车计价器流程图
图2系统结构图
接口部分定义如下:
输入:clk_240,系统时钟,频率为240Hz;
Start,启动信号,当start=1时,汽车启动,开始计价;当start=0时,清零;
Stop,暂时计时信号,当stop-1时,中途暂停,开始计时;当stop=0时,再次出发;
Fin,汽车车速脉冲信号,是一个与随着车速变化而变化的脉冲信号。
输出:cha2,cha1,cha0,分别为价钱的十位,个位和角位;
Km1,km0,分别为行驶公里数的十位,个位;
Min0,暂时分钟数输出。
接口部分源程序如下:
port(clk_240:instd_logic;--频率为240Hz的时钟
start:instd_logic;--计价使能信号
stop:instd_logic;--等待信号
fin:instd_logic;--公里脉冲信号
cha2,cha1,cha0:outstd_logic_vector(3downto0);--费用数据
km1,km0:outstd_logic_vector(3downto0);--公里数据
min0:outstd_logic_vector(3downto0));--等待时间
计价部分原理如下:
起步价10元,3公里内10元,超出3公里部分,每公里1.6元,车暂停时,2分钟内不加价,超出2分钟部分,每分钟2.5元;
计费部分源程序如下:
feipin:process(clk_240,start)
begin
ifclk_240'eventandclk_240='1'then
ifstart='0'thenq_15<=0;q_16<=0;f_15<='0';f_16<='0';f_1<='0';f<='0';
else
ifq_15=15thenq_15<=0;f_15<='1';--此IF语句得到频率为15Hz的信号
elseq_15<=q_15+1;f_15<='0';
endif;
ifq_16=14thenq_16<=0;f_16<='1';--此IF语句得到频率为16Hz的信号
elseq_16<=q_16+1;f_16<='0';
endif;
ifq_1=239thenq_1<=0;f_1<='1';--此IF语句得到频率为1Hz的信号
elseq_1<=q_1+1;f_1<='0';
endif;
ifen1='1'thenf<=f_15;--此IF语句得到计费脉冲f
elsifen0='1'thenf<=f_16;
elsef<='0';
endif;
endif;
endif;
endprocess;

process(f_1)
begin
iff_1'eventandf_1='1'then
ifstart='0'then
w<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";
elsifstop='1'then
ifw=59thenw<=0;--此IF语句完成等待计时
ifm0="1001"thenm0<="0000";--此IF语句完成分计数
ifm1<="101"thenm1<="000";
elsem1<=m1+1;
endif;
elsem0<=m0+1;
endif;
ifm1&m0>"0000001"thenen1<='1';--此IF语句得到en1使能信号
elseen1<='0';
endif;
elsew<=w+1;en1<='0';
endif;
elsiffin='1'then
ifk0="1001"thenk0<="0000";--此IF语句完成公里脉冲计数
ifk1="1001"thenk1<="0000";
elsek1<=k1+1;
endif;
elsek0<=k0+1;
endif;
ifk1&k0>"00000010"thenen0<='1';--此IF语句得到en0使能信号
elseen0<='0';
endif;
elseen1<='0';en0<='0';
endif;
cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0;--费用数据输出
km1<=k1;km0<=k0;min1<='0'&m1min0<=m0;--公里数据、分钟数据输出
endif;
endprocess;

process(f,start)
begin
ifstart='0'thenc3<="0000";c2<="0001";c1<="0000";c0<="0000";
elsiff'eventandf='1'then
ifc0="1001"thenc0<="0000";--此IF语句完成对费用的计数
ifc1="1001"thenc1<="0000";
ifc2="1001"thenc2<="0000";
ifc3<="1001"thenc3<="0000";
elsec3<=c3+1;
endif;
elsec2<=c2+1;
endif;
elsec1<=c1+1;
endif;
elsec0<=c0+1;
endif;
endif;
endprocess;
endbehav;

返回目录

总结:以上就是本站针对你的问题搜集整理的答案,希望对你有所帮助。