出租车计费系统设计VHDL代码Quartus仿真

名称:出租车计费系统设计VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

出租车计费系统设计

设计要求:

设计一个模拟出租车计费的电路系统,具有以下功能

(1)能实现计费功能,计费标准为:按行驶路程收费,起步价为11元,并在车行3公里(3km)后按2元/公里收费。当总费用达到或超过40元时,每公里收费4元。当遇到红绿灯或客户有事需要停车等待时,则按时间收费计费单价为每20s收费1元。

(2)实现预置功能:能预置起步费、每公里收费、车行加费里程、计时收费

(3)实现模拟功能:能模拟汽车行驶、停止和暂停等状态

(4)将路程和车费显示出来,以十进制BCD码方式输出信号

要求2.jpg

1. 工程文件

2. 程序文件

原理图

代码

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

里程脉冲模块

控制模块

显示模块

1. 工程文件

2. 程序文件

原理图

代码

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图(顶层模块)

分频模块

状态机模块

数码管控制模块

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--控制模块
ENTITY ctrl IS
   PORT (
      clk               : IN STD_LOGIC;--时钟
      rst              : IN STD_LOGIC;--复位信号
      start_key              : IN STD_LOGIC;--启动信号,行程开始
      stop_key               : IN STD_LOGIC;--中途暂停
      pulse_in      : IN STD_LOGIC;--1公里脉冲
      mileage          : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--里程
      money      : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--合计费用
   );
END ctrl;
ARCHITECTURE behave OF ctrl IS
--定义状态
   TYPE state_type IS (S0,S1,S2,S3,S4,S5,S6);  -- 定义状态
   SIGNAL state: state_type;    -- 创建信号
   SIGNAL all_money   : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000";--总价钱
   SIGNAL all_mileage       : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000";--里程
   SIGNAL sec_10   : STD_LOGIC := '0';
   SIGNAL cnt : integer := 0;
BEGIN
--状态机
   PROCESS (clk, rst)
   BEGIN
      IF (rst = '0') THEN
         state <= S0;--复位
      ELSIF (clk'EVENT AND clk = '1') THEN
         CASE state IS
            WHEN S0 =>--空闲状态
               IF (start_key = '0') THEN--按下起动键start,汽车起动
                  state <= S1;
               ELSE
                  state <= S0;--空闲状态
               END IF;
            WHEN S1 =>--起步价状态
               IF (stop_key = '0') THEN--中途停车
                  state <= S4;
               ELSIF (all_mileage >= "0000000000000011") THEN--大于3.0公里
                  state <= S2;
               ELSE
                  state <= S1;
               END IF;
            WHEN S2 =>--车行驶 3.0公里后按每公里2元计费
               IF (all_money >= "0000000000101000") THEN--当总费用达到40元时,每公里按4元收费
                  state <= S3;
               ELSIF (stop_key = '0') THEN--中途停车
                  state <= S5;
               ELSE
                  state <= S2;
               END IF;
            WHEN S3 =>--当总费用达到40元时,每公里按4元收费
               IF (stop_key = '0') THEN--中途停车
                  state <= S6;
               ELSE
                  state <= S3;
               END IF;
            WHEN S4 =>--停车等待
               IF (start_key = '0') THEN--启动
                  state <= S1;
               ELSE
                  state <= S4;
               END IF;
            WHEN S5 =>--停车等待
               IF (start_key = '0') THEN--启动
                  state <= S2;
               ELSE
                  state <= S5;
               END IF;
            WHEN S6 =>--停车等待
               IF (start_key = '0') THEN--启动
                  state <= S3;
               ELSE
                  state <= S6;
               END IF;
            WHEN OTHERS =>
               state <= S0;
         END CASE;
      END IF;
   END PROCESS;
源代码

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

出租车计费系统源码 首次运行系统时,会自动进入系统设置界面,对系统运行时所需要的各项参数进行设置。 以下是对各项的解释: 起步范围,即起步价所包含的范围。 起步价,分为日间和夜间两个标准。(若该地区无日夜间区分,请设置相同数据) 单位公里,超出起步范围后,按照设定的每一单位公里加一次里程单价。 里程单价,每一单位公里所收价格,分为日间和夜间。(若该地区无日夜间区分,请设置相同数据) 单位时间,停车等待时,每单位时间增加一次等待单价。 (注:单位时间分钟必须为整数,否则无法修改) 等待单价,每一单位时间所收等待价格,分日夜间(若该地区无日夜间区分,请设置相同数据) 日间开始,日间标准时间段的开始时间。(格式 06:05) 日间结束,日间标准时间段的结束时间。(格式 20:30) (提示:日间标准时间段以外的时间段即为夜间标准时间段) 记录备份周期,每一个周期备份一次行车记录。(此版未提供此功能,请键入任意值,否则会出错) 记录删除周期,即数据库中只保留此周期之内的记录。(此版未提供此功能,请键入任意值,否则会出错) 车辆相关信息,请根据实际情况填写,它将用于显示给乘客看。 备注:收费标准一经设置,车主是无法更改的,只有管理员才有权限进行更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值