1 / 23
文档名称:

基于CPLD的出租车计费器.doc

格式:doc   页数:23页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于CPLD的出租车计费器.doc

上传人:精选文库 2015/12/23 文件大小:0 KB

下载得到文件列表

基于CPLD的出租车计费器.doc

相关文档

文档介绍

文档介绍:目录
第1章 设计总框图 1
第1节 系统框图 1
第2节 系统模块介绍 2
第2章 程序设计模块 3
1、 计费模块 3
2、 数据转换模块 6
3、 片选信号模块 11
4、 数码管控制显示模块 13
5、 显示模块 15
6、 数码管选择模块 17
第3章、总体电路设计 18
1、总体电路图 18
2、仿真分析 19
第4章、硬件实现 20
第5章、设计心得体会 21
参考文献 22
设计总框图
系统框图
输入信号模块
片选信号模块
数据转换模块
数码管控制电路
数码管显示模块
系统总框图
,各部分主要功能包括输入信号模块对车轮传感器传送的脉冲信号进行计数,并以高低脉冲模拟出租汽车启动,停止,暂停,加速按钮,具有输入信号作用;数据转换器模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额均用4位LED数码管显示。
系统模块介绍
1、信号输入模块
该模块主要实现计费功能和现场模拟功能。计费标准为:按行驶里程计费,,并在车行3 ,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号的作用。
2、数据转换模块
数据转换模块是一个模为10的加法计数器,可将计费模块输出的车费和路程转换成4位的十进制数。
3、显示模块
显示模块是由七段LED数码管译码和动态扫描显示两部分组成。采用的是共阴极七段数码管,根据十六进制数和七段显示段码表的对应关系,其中要求路程和车费都要用2位小数点来表示,所以须设置一个控制小数点的变量,即程序中的dp。这段程序所示的是在数码管的第二、第六个后面显示小数点,实现了路程和车费都用2位小数点表示的功能。数码管控制及译码显示模块将十进制的输入信号用七段数码管显示,由七段发光二极管组成数码显示器,利用字段的不同组合。可分别显示0~9十个数字。
4、片选信号模块
片选信号产生模块是对数码管进行片选并让其能够按照要求显示数据的模块。
程序设计模块
计费模块
此jifei模块为计费模块(即总体结构中的信号输入模块),实现计费功能,计费标准为:按行驶里程计费,,,当计数器达到或超过20元时,每公里加收50%的车费,。CLK、START、STOP、PAUSE、JS为输入信号,分别代表汽车的起动、停止、暂停和加速,CLK为扫描时钟,硬件实现时加入时钟信号,另有两个输出,即CHEFEI和LUC,分别代表车费和路程,当车处于行驶状态时,此模块会自动记录下路程与车费状况并作为转换模块的输入。
jifei模块程序:
library ieee;
use ;
use ;
entity jifei is
port(clk,start,stop,pause,js:in std_logic;
chefei,luc:out integer range 0 to 8000);
end jifei;
architecture one of jifei is
begin
process(clk,start,stop,pause,js)
variable a,b:std_logic;
variable aa:integer range 0 to 100;
variable chf,lc:integer range 0 to 8000;
variable num:integer range 0 to 9;
begin
if(clk'event and clk='1')then
if(stop='0') then
chf:=0;
num:=0;
b:='1';
aa:=0;
lc:=0;
elsif(start='0') then
b:='0';
chf:=1100;
lc:=0;
elsif(start='1' and js='1' and pause='1') then
if(b='0')then
num:=num+1;
end if;
if(num=9)then
lc:=lc+5;
num:=0;
aa:=aa+5;
end if;
elsif(start='1' and js='0' and pa