淮阴工学院EDA出租车计费课程设计.docx

上传人:b****6 文档编号:3607187 上传时间:2022-11-24 格式:DOCX 页数:10 大小:403.94KB
下载 相关 举报
淮阴工学院EDA出租车计费课程设计.docx_第1页
第1页 / 共10页
淮阴工学院EDA出租车计费课程设计.docx_第2页
第2页 / 共10页
淮阴工学院EDA出租车计费课程设计.docx_第3页
第3页 / 共10页
淮阴工学院EDA出租车计费课程设计.docx_第4页
第4页 / 共10页
淮阴工学院EDA出租车计费课程设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

淮阴工学院EDA出租车计费课程设计.docx

《淮阴工学院EDA出租车计费课程设计.docx》由会员分享,可在线阅读,更多相关《淮阴工学院EDA出租车计费课程设计.docx(10页珍藏版)》请在冰豆网上搜索。

淮阴工学院EDA出租车计费课程设计.docx

淮阴工学院EDA出租车计费课程设计

实验六出租车计费器的设计

一、实验目的

1、了解出租车计费器的工作原理。

2、学会用VHDL语言编写正确的七段码管显示程序。

3、数量掌握用VHDL编写复杂功能模块。

4、进一步数量状态积在系统设计中的应用。

二、实验内容

本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价3元,准行1公里,以后1元/公里。

显示部分的七段码管扫描时钟选择时钟模块的1KHz,电机模块的跳线选择“开”端,这样通过旋钮电机模块的电位器,即可达到控制电机转速的目的。

另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。

直流电机用来模拟出租车的车轮子,没转动一圈认为是行走1米,所以每旋转1000圈,认为车子前进1公里。

系统设计是需要检测电机的转动情况,每转一周,计米计数器增加1。

七段码管显示要求为前4个显示里程,后3个显示费用。

 

三、程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

--------------------------------------------------------------------

entityKis

port(Clk:

instd_logic;--时钟输入

Rst:

instd_logic;--复位输入

Motor:

instd_logic;--电机脉冲输入

Display:

outstd_logic_vector(6downto0);--七段码管显示输出

SEG_SEL:

outstd_logic_vector(7downto0)--七段码管扫描驱动

);

endK;

--------------------------------------------------------------------

architecturebehaveofKis

signalDisp_Temp:

integerrange0to15;

signaldel:

std_logic_vector(2downto0);

signalsel:

std_logic_vector(7downto0);

signalDisp_Decode:

std_logic_vector(6downto0);

signalMeter1,Meter10,Meter100,Meter1K:

integerrange0to9;

signalMoney1,Money10,Money100:

integerrange0to9;

signalOld_Money1:

integerrange0to9;

begin

Display<=Disp_Decode;

SEG_SEL<=sel;

process(Motor)

begin

if(Rst='0')then

Meter1<=0;

Meter10<=0;

Meter100<=0;

Meter1K<=0;

elsif(Motor'eventandMotor='1')then

if(Meter1=9)then

Meter1<=0;

if(Meter10=9)then

Meter10<=0;

if(Meter100=9)then

Meter100<=0;

if(Meter1K=9)then

Meter1K<=0;

else

Meter1K<=Meter1K+1;

endif;

else

Meter100<=Meter100+1;

endif;

else

Meter10<=Meter10+1;

endif;

else

Meter1<=Meter1+1;

endif;

endif;

endprocess;

process(Clk)

begin

if(Rst='0')then

Money1<=0;

Money10<=0;

Money100<=0;

elsif(Clk'eventandClk='1')then

if(Meter1K<1)then--里程小于1Km是显示基价

Money100<=0;

Money10<=3;--起步价3元

Money1<=0;

Old_Money1<=0;

else

Money1<=Meter100;

Old_Money1<=Money1;

if(Old_Money1=9andMoney1=0)then

if(Money10=9)then

Money10<=0;

if(Money100=9)then

Money100<=0;

else

Money100<=Money100+1;

endif;

else

Money10<=Money10+1;

endif;

endif;

endif;

endif;

endprocess;

process(Clk)

variabledount:

std_logic_vector(2downto0);

begin

if(Clk'eventandClk='1')then

dount:

=dount+1;

endif;

del<=dount;

endprocess;

process(del)

begin

case(del)is

when"111"=>Disp_Temp<=Meter1K;

sel<="10000000";

when"110"=>Disp_Temp<=Meter100;

sel<="01000000";

when"101"=>Disp_Temp<=Meter10;

sel<="00100000";

when"100"=>Disp_Temp<=Meter1;

sel<="00010000";

when"011"=>Disp_Temp<=10;

sel<="00001000";

when"010"=>Disp_Temp<=Money100;

sel<="00000100";

when"001"=>Disp_Temp<=Money10;

sel<="00000010";

whenothers=>Disp_Temp<=Money1;

sel<="00000001";

endcase;

endprocess;

process(Disp_Temp)--显示转换

begin

caseDisp_Tempis

when0=>Disp_Decode<="0111111";--0

when1=>Disp_Decode<="0000110";--1

when2=>Disp_Decode<="1011011";--2

when3=>Disp_Decode<="1001111";--3

when4=>Disp_Decode<="1100110";--4

when5=>Disp_Decode<="1101101";--5

when6=>Disp_Decode<="1111101";--6

when7=>Disp_Decode<="0000111";--7

when8=>Disp_Decode<="1111111";--8

when9=>Disp_Decode<="1101111";--9

when10=>Disp_Decode<="1000000";---

whenothers=>Disp_Decode<="0000000";--全灭

endcase;

endprocess;

endbehave;

 

顶层文件

四、编译仿真

1.显示模块

 

2.计费模块

 

3.路程模块

4.总的仿真图

 

五、原理图PCB图

 

 

 

六、下载测试,观察实验结果

1.引脚绑定

 

2.显示结果

 

七、总结

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

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1