1、淮阴工学院EDA出租车计费课程设计实验六 出租车计费器的设计一、实验目的1、了解出租车计费器的工作原理。2、学会用 VHDL 语言编写正确的七段码管显示程序。3、数量掌握用 VHDL 编写复杂功能模块。4、进一步数量状态积在系统设计中的应用。二、实验内容本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价 3元,准行 1 公里,以后 1元/公里。 显示部分的七段码管扫描时钟选择时钟模块的 1KHz,电机模块的跳线选择“开”端,这样通过旋钮电机模块的电位器,即可达到控制电机转速的目的。另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。直流电机用来模拟出租车的
2、车轮子,没转动一圈认为是行走 1米,所以每旋转 1000 圈,认为车子前进 1公里。系统设计是需要检测电机的转动情况,每转一周,计米计数器增加 1。七段码管显示要求为前 4个显示里程,后 3个显示费用。三、程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-entity K is port( Clk : in std_logic; -时钟输入 Rst : in std_logic; -复位输入 Motor : in std_logic;
3、 -电机脉冲输入 Display : out std_logic_vector(6 downto 0); -七段码管显示输出 SEG_SEL : out std_logic_vector(7 downto 0) -七段码管扫描驱动 ); end K;-architecture behave of K is signal Disp_Temp : integer range 0 to 15; signal del : std_logic_vector(2 downto 0); signal sel : std_logic_vector(7 downto 0); signal Disp_Decode
4、: std_logic_vector(6 downto 0); signal Meter1,Meter10,Meter100,Meter1K : integer range 0 to 9; signal Money1,Money10,Money100 : integer range 0 to 9; signal Old_Money1 : integer range 0 to 9; beginDisplay=Disp_Decode;SEG_SEL=sel; process(Motor) begin if(Rst=0) then Meter1=0; Meter10=0; Meter100=0; M
5、eter1K=0; elsif(Motorevent and Motor=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; end if; else Meter100=Meter100+1; end if; else Meter10=Meter10+1; end if; else Meter1=Meter1+1; end if; end if;
6、 end process; process(Clk) begin if(Rst=0) then Money1=0; Money10=0; Money100=0; elsif(Clkevent and Clk=1) then if(Meter1K1) then -里程小于1Km是显示基价 Money100=0; Money10=3; -起步价3元 Money1=0; Old_Money1=0; else Money1=Meter100; Old_Money1=Money1; if(Old_Money1=9 and Money1=0) then if(Money10=9) then Money10
7、=0; if(Money100=9) then Money100=0; else Money100=Money100+1; end if; else Money10=Money10+1; end if; end if; end if; end if; end process;process(Clk)variable dount:std_logic_vector(2 downto 0);beginif(Clkevent and Clk=1) then dount:=dount+1;end if;delDisp_Temp=Meter1K; selDisp_Temp=Meter100; selDis
8、p_Temp=Meter10; selDisp_Temp=Meter1; selDisp_Temp=10; selDisp_Temp=Money100; selDisp_Temp=Money10; selDisp_Temp=Money1; selDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_Decode=0000000; -全灭 end case; end process; end behave; 顶层文件四、编译仿真1.显示模块2.计费模块3.路程模块4.总的仿真图五、原理图PCB图六、下载测试,观察实验结果1.引脚绑定2.显示结果七、总结
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1