- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
第1章总体设计思路 1
1.1系统总体结构 1
1.2 各模块设计功能及设计思路 2
第二章 各模块功能 3
2.1 jifei模块 3
2.2 x模块 6
2.3 sel模块 10
2.4 xxx1模块 12
2.5 di模块 14
2.6 div模块 15
2.7 decode3_8模块 17
第3章 总体电路图 18
3.1、模块连接: 18
3.2、硬件连接: 19
3.3、结果分析: 19
第4章 硬件实现 22
第5章 总结 23
第6章 参考文献 24
第1章总体设计思路
1.1系统总体结构
图1.1 系统总体框图
出租车计费器的组成如上图所示,各部分主要功能包括输入信号模块对车轮传感器传送的脉冲信号进行计数,并以高低脉冲模拟出租汽车启动,停止,暂停,加速按钮,具有输入信号作用;数据转换器模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额均用4位LED数码管显示 。
1.2 各模块设计功能及设计思路
信号输入模块
实现计费功能和现场模拟功能。计费标准为:按行驶里程计费,起步价为7.00元,并在车行3 km后按2.20元/km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号的作用。
数据转换模块
数据转换模块是一个模为10的加法计数器,可将计费模块输出的车费和路程转换成4位的十进制数。
显示模块
显示模块是由七段LED数码管译码和动态扫描显示两部分组成。采用的是共阴极七段数码管,根据十六进制数和七段显示段码表的对应关系,其中要求路程和车费都要用2位小数点来表示,所以须设置一个控制小数点的变量,即程序中的dp。这段程序所示的是在数码管的第二、第六个后面显示小数点,实现了路程和车费都用2位小数点表示的功能。数码管控制及译码显示模块将十进制的输入信号用七段数码管显示,由七段发光二极管组成数码显示器,利用字段的不同组合。可分别显示0~9十个数字。片选信号产生模块片选信号产生模块是对数码管进行片选并让其能够按照要求显示数据的模块
第二章 各模块功能
2.1 jifei模块
此模块为计费模块(即总体结构中的信号输入模块),实现计费功能,计费标准为:按行驶里程计费,起步价为7.00元,并在车行3公里后按2.20元/km计费,当计数器达到或超过20元时,每公里加收50%的车费,即按3.30元/km计费。CLK、START、STOP、PAUSE、JS为输入信号,分别代表汽车的起动、停止、暂停和加速,CLK为扫描时钟,硬件实现时加入时钟信号,另有两个输出,即CHEFEI和LUC,分别代表车费和路程,当车处于行驶状态时,此模块会自动记录下路程与车费状况并作为转换模块的输入。
jifei模块源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jfmk is
port(clk,start,stop,pause,js:in std_logic;
chefei,luc:out integer range 0 to 8000);
end jfmk;
architecture one of jfmk 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(clkevent 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:=700;
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
文档评论(0)