出租车计费器区分白天晚上设计VHDL代码Quartus EP4C实验箱

名称:出租车计费器区分白天晚上设计VHDL代码Quartus  EP4C实验箱(文末获取)

软件:Quartus

语言:VHDL

代码功能:

出租车计费器区分白天晚上

脉冲的个数除以10,代表这个轮子转了多少圈.

假设转一圈代表100米,转10圈是个一公里

白天一个价晚上一个价,白天起步价是8块,晚上起步价9块,是白天还是晚上拿个按键去区分,然后三公里以内就是起步价超过三公里,每增加一公里是增加一块钱,

等时,等个6秒就自动加1块钱

本代码已在EP4C实验箱验证,EP4C实验箱如下,其他开发板可以修改管脚适配:

EP4C实验箱.jpg

1.工程文件

2.程序文件

3.程序编译

4.RTL图

5.管脚分配

6.仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--显示模块
ENTITY display IS
   PORT (
      clk          : IN STD_LOGIC;--标准时钟,10hz 
      reset        : IN STD_LOGIC;--复位信号,高有效 
      
      wait_time    : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--等待时间
      totel_money  : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--费用
      mileage      : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--里程
      
DS1         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
DS2         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
DS3         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
DS4         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
DS5         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
DS6         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
   );
END display;
ARCHITECTURE trans OF display IS
--二进制转BCD码
COMPONENT b_to_bcd IS
   PORT (
      clk       : IN STD_LOGIC;
      rst_n     : IN STD_LOGIC;
      binary    : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
      state_en  : IN STD_LOGIC;
      BCD       : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
   );
END COMPONENT;
SIGNAL BCD_mileage_out   :  STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL BCD_totel_money_out   :  STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL BCD_wait_time_out :  STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL mileage_exd   :  STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL wait_time_exd   :  STD_LOGIC_VECTOR(15 DOWNTO 0);
   SIGNAL   Kmmoney_L    :  STD_LOGIC_VECTOR(3 DOWNTO 0);--合计费用 HML=xxx (BCD码显示)
   SIGNAL   Kmmoney_M    :  STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL   Kmmoney_H    :  STD_LOGIC_VECTOR(3 DOWNTO 0);
      
   SIGNAL   Kmcount_H    :  STD_LOGIC_VECTOR(3 DOWNTO 0);--总路程,里程范围为HL=0~99(BCD码显示)
   SIGNAL   Kmcount_L    :  STD_LOGIC_VECTOR(3 DOWNTO 0);
  
   SIGNAL   Kmtime_H    :  STD_LOGIC_VECTOR(3 DOWNTO 0);--总时间
   SIGNAL   Kmtime_L    :  STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
   
mileage_exd<="00000000" & mileage;
wait_time_exd<="00000000" & wait_time;
--二进制转BCD码
BCD_mileage : b_to_bcd 
   PORT MAP (      
      clk       =>clk,
      rst_n     =>reset,
      binary    =>mileage_exd,
      state_en  =>'1',
      BCD       =>BCD_mileage_out
   );
--二进制转BCD码
BCD_totel_money : b_to_bcd 
   PORT MAP (      
      clk       =>clk,
      rst_n     =>reset,
      binary    =>totel_money,
      state_en  =>'1',
      BCD       =>BCD_totel_money_out
   );
--二进制转BCD码
BCD_wait_time : b_to_bcd 
   PORT MAP (      
      clk       =>clk,
      rst_n     =>reset,
      binary    =>wait_time_exd,
      state_en  =>'1',
      BCD       =>BCD_wait_time_out
   );
源代码

点击下方的公众号卡片获取

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值