计可分为三个进程:60S 周期性跳变信号产生进程,每分钟行驶距离计算进程,等待标
志判别进程。等待标志判别进程就是比较每分钟 WCLK 脉冲个数与等待状态 WCLK 脉
冲临界个数 200 的大小,从而确定 DDBZ 的赋值。
里程计算模块 LCJS:根据速度传感器脉冲信号 WCLK 和等待标志 DDBZ,对出租
车行驶的里程数 XSLC 进行计算,同时发出里程标志信号 LCBZ 和里程计费标志信号
JFBZ。如果 LCBZ=1,说明行驶距离超过 2㎞,里程计费启动;如果 LCBZ=0,说明没
超过 2㎞,按起价计费,每行驶 1㏎应计费 1 次,并且计费的启动信号应是某一时刻,
因此每行驶 1㎞,计费标志信号 JFBZ 应跳变 1 次。该模块的 VHDL 程序设计可分为两
个进程:里程计算及标志产生进程,产生计费信号进程。产生计费信号进程就是每行驶
10 百米(即 1㎞)JFBZ 由低电平 0 变为 1,经过一个系统时钟周期后 JFBZ 又回复到低
电平 0,里程计费模块 LCJF 就是在 JFBZ 脉冲信号的上升沿到来时进行计费的加法操作。
里程计费模块 LCJF:在计费标志信号 JFBZ,等待标志信号 DDBZ,里程标志信号
LCBZ 和时段标志信号 SDBZ 等信号的控制下,计算行驶里程超过 2㎞以上里程的费用
LCFY。该模块的 VHDL 程序是通过由多个条件控制的加法进程来完成里程计费的,里
程计费的条件是在 DDBZ=0,并且在 JFBZ 的上升沿根据 SDBZ 分别进行加法计费操作。
当 SDBZ=1 时,表示在 06:00~23:00 时段,其单价 SD1 为 1.4 元/㎞;当 SDBZ=0 时,
表示其他时段,其单价 SD2 为 1.8 元/㎞。如果 LCBZ=1,说明行驶距离超过 2㎞,里程
计费启动;如果 LCBZ=0,说明没超过 2㎞,按起价计费。
等待计时模块 DDJS:在等待标志信号 DDBZ 和基准时钟信号 CLK1HZ 的控制下,
进行等待时间 DDSJ 的计算,其中 DDSJ 的低 8 位表示等待时间的秒数,DDSJ 的高 8
位表示等待时间的分钟数,同时根据等待时间的长短发出一个熄灯标志信号 XDBZ。当
等待时间小于等于 1 小时,XDBZ=0,等待时间显示灯亮;当等待时间大于 1 小时,
XDBZ=1,等待时间显示不亮。该模块的 VHDL 程序是通过一个多层嵌套的加法进程来
完成等待计时的。
等待计费模块 DDJF:在等待标志信号 DDBZ 和熄灯标志信号 XDBZ 控制下,进行
等待费用 DDFY 的计费操作。该模块的 VHDL 程序包括两个进程:60S 周期性跳变信
号产生进程,等待费用计算进程。等待费用计算的条件是在 DDBZ=1 并且在 60S 周期
性跳变信号 T60S 的上升沿,根据 XDBZ 分别进行加法计费操作。当 DDBZ=1 且
XDBZ=0 时,按 1 元/5 分钟,即 20 分/分钟计费;当 DDBZ=0 且 XDBZ=1 时,按 20 元
/小时,即 33 分/分钟计费。
输出数据选择模块 SCXZ:根据单片机发出的数据传输选择控制信号 SEL,选择有
关计算处理结果传输给单片机。
3 硬件及软件实现
3.1 传感器
传感器通常是指能感受并能按一定规律将所感受的被测非电量(包括物理量、化学
量、生物量等)转换成便于处理与传输的电量(一般为电量,也有少数为其他物理量,如光信
号)的器件或装置。
光电传感器是把光信号转换为电信号的传感器,光电传感器的种类极多。它们共同
的特点是响应速度快,易于实现非接触测量,非常适于与计算机接口。
3.1.1 光电传感器电路设计