- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
七出租车模拟计费器
实验九 出租车模拟计费器
一、实验目的
1. 了解出租车计价器的工作原理,学会用硬件描述语言来建立出租车计价器的模块。
2. 利用该软件进行可编程逻辑器件设计,完成出租车计价器的逻辑仿真功能。
3. 使用编译器将设计实现,下载到 JDEE—10实验箱上进行调试和验证所设计的出租车
计价器的功能。
二、实验器材
1.Pentium—Ⅲ计算机 一台;
2.JDEE—10 实验箱 一只;
三、实验要求
计费器工作原理:
以上海地区的出租车计费器为例,计费标准是:
1. 在刚开始计费时,应有起步费计算。行驶里程不满3公里时,收费10元(包括等候时间
在内)。
2. 行驶里程满 3公里但不超过 10公里时,每公里收费2元,超过10公里,每公里收费3
元。
实现功能:
扳下计费拨码开关,计价器开始工作。此时,数码管显示“10”字样,同时显示行驶
里程。当里程超过 3 公里时,开始按每公里2 元计费。超过 10公里按每公里 3 元计费。
每过一公里改变数码管的显示。
四、方案设计和例程
首先是计程部分的显示。这里,直接用两个 10进制的计数器进行里程计数,然后输
出显示即可。
对于计价部分,可以内置计数器,当判断里程超过3 后,每次计数单位为加2;当里
程超过10后,每次计数单位为加3。这可以方便的用判断语句和DFF内置计数器嵌套实
现。
需要注意的是,由于计价改变的是费用的个位,因此内置一个10 进制的计数器,同
时在外部使用两个10进制的计数器。
计数脉冲通过对2048Hz进行11次分频得到。4MHz 的脉冲用来实现扫描显示。
下面给出部分源程序及顶层图:
计费处理模块 mainprocess.tdf
subdesign mainprocess
(
clk: input; %1Hz 信号输入
dlow[3..0],dhigh[3..0]: input; %输入里程
- 92 -
diglow[3..0],dighigh[3..0]: output; %里程输出(只处理计费,里程不变)
out[3..0]: output; %计费结果输出
clkout: output; %片选
)
variable
count[3..0]: dff; %内部计数器
begin
defaults
clkout=gnd; %默认值不选中
end defaults;
if dlow[]==h0 then %设置预制价格:10 元
if dhigh[]==h0 then
clkout=vcc;
end if; end if;
count[].clk=clk;
%3KmX10Km
if ((dlow[]=h3) and (dhigh[]==h0)) then
if count[].q==h8 thencount[].d=h0;clkout=vcc; %计到8, 下一个状态为10(每次加2)
else if count[].q==h9 thencount[].d=h1;clkout=vcc; 同时第二片选中。如果是9,下次
else count[].d=count[].q+2; 就显示11 (不大可能发生)。
end if; end if; end if;
%10Km
if dhigh[]=h1 then
if count[].q==h7 thencount[].d=h0;clkout=vcc; %每次状态加3,7+3=10
else
if count[].q==h8 thencount[].d=h1;clkout=vcc; %8+3=11
else
if c
文档评论(0)