淮阴工学院EDA出租车计费课程设计.docx
- 文档编号:3607187
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:10
- 大小:403.94KB
淮阴工学院EDA出租车计费课程设计.docx
《淮阴工学院EDA出租车计费课程设计.docx》由会员分享,可在线阅读,更多相关《淮阴工学院EDA出租车计费课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
淮阴工学院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.显示结果
七、总结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 淮阴 工学院 EDA 出租车 计费 课程设计