最新EDA课程设计出租车计费器Word下载.docx
《最新EDA课程设计出租车计费器Word下载.docx》由会员分享,可在线阅读,更多相关《最新EDA课程设计出租车计费器Word下载.docx(57页珍藏版)》请在冰豆网上搜索。
指导教师:
****
起止日期:
2012年5月28日至2012年6月8日
出租车计费器设计
摘要
随着我国社会经济的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普遍的交通工具。
出租车计费器是出租车营运收费的专用智能化仪表,是出租车市场规范化、标准化以及减少司机与乘客之间发生纠纷的重要设备。
一种功能完备、简单易用、计量准确的出租车计费器是加强出租车行业管理、提高服务质量的必备品。
本文介绍了出租车计费器系统在实际生产生活中的重要性,根据预定的设计要求和设计思路,采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路设计了一个实际的基于EP3C80F780C8N芯片的出租车计费系统,通过在QuartusⅡ8.1软件下进行模拟仿真,并进行相应的硬件下载调试,证明该出租车计费系统具有实用出租车计费器的基本功能,各技术指标符合预定标准,如能进一步完善,将可以实用化和市场化,具有一定实用性。
关键词:
出租车计费器;
现场可编程门阵列;
仿真
1设计目的1
2设计指标2
2.1课题2
2.2技术指标2
3VHDL简介2
4设计过程3
4.2出租车计费器原理4
4.3模块设计5
5出租车计费器的实现6
6出租车计费器的仿真结果17
7设计总结20
参考文献21
libraryieee;
22
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
23
--------------------------------------------------------------------23
entityouyangbois23
port(Clk:
instd_logic;
--时钟输入23
Rst:
--复位输入23
Motor:
--电机脉冲输入23
dn:
instd_logic;
Display:
outstd_logic_vector(7downto0);
--七段码管显示输出23
SEG_SEL:
bufferstd_logic_vector(2downto0);
--七段码管扫描驱动23
keyc:
outstd_logic_vector(3downto0);
--点阵列控制23
keyr:
outstd_logic_vector(15downto0)23
);
--点阵行显示23
endouyangbo;
architecturebehaveofouyangbois23
signalDisp_Temp:
integerrange0to15;
signalDisp_Decode:
std_logic_vector(7downto0);
signalMeter1,Meter10,Meter100,Meter1K:
integerrange0to9;
signalMoney1,Money10,Money100:
signalOld_Money1:
signalcdount:
std_logic_vector(3downto0);
signaldount:
std_logic_vector(8downto0);
signalS:
begin23
process(Motor,Rst)--计里程23
if(Rst='
0'
)then23
Meter1<
=0;
Meter10<
Meter100<
Meter1K<
elsif(Motor'
eventandMotor='
1'
if(Meter1=9)thenMeter1<
if(Meter10=9)thenMeter10<
if(Meter100=9)thenMeter100<
if(Meter1K=9)thenMeter1K<
else23
=Meter1K+1;
endif;
=Meter100+1;
=Meter10+1;
=Meter1+1;
24
endprocess;
process(Clk,Rst,dn)--计费模块24
begin24
)then24
Money1<
Money10<
Money100<
if(Meter10<
2andMeter100<
1andMeter1k<
1)then--里程小于2Km时显示起步价24
=6;
--起步价6元24
Old_Money1<
else24
if(dn='
andMeter100<
2andMeter1k<
0)then24
if(Old_Money1=9)thenOld_Money1<
---白天24
if(Money1=9)thenMoney1<
if(Money10=9)thenMoney10<
if(Money100=9)thenMoney100<
elseMoney100<
=Money100+1;
elseMoney10<
=Money10+1;
elseMoney1<
=Money1+1;
=Old_Money1+2;
---续程单价每公里2元24
if(dn=’0’and(Meter100>
1orMeter1k>
0))then---白天超过20km加收返程费24
=Old_Money1+3;
---加收返程费25
25
0)then25
---夜间25
else25
---续程单价每公里3元25
and(Meter100>
0))then---夜间超过20km加收返程费25
=Old_Money1+4;
---加收的返程费25
process(SEG_SEL)---显示25
begin25
case(SEG_SEL+1)is25
when"
000"
=>
Disp_Temp<
=Meter1K;
001"
=Meter100;
010"
=Meter10;
011"
=Meter1;
100"
=10;
26
101"
=Money100;
110"
=Money10;
111"
=Money1;
endcase;
process(Clk)26
begin26
if(Clk'
eventandClk='
)then--扫描累加26
SEG_SEL<
=SEG_SEL+1;
if(SEG_SEL=3)then26
Display<
=Disp_Decodeor"
1000000"
;
else2