自动售卖邮票机设计.docx

上传人:b****5 文档编号:29867128 上传时间:2023-07-27 格式:DOCX 页数:9 大小:168.29KB
下载 相关 举报
自动售卖邮票机设计.docx_第1页
第1页 / 共9页
自动售卖邮票机设计.docx_第2页
第2页 / 共9页
自动售卖邮票机设计.docx_第3页
第3页 / 共9页
自动售卖邮票机设计.docx_第4页
第4页 / 共9页
自动售卖邮票机设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

自动售卖邮票机设计.docx

《自动售卖邮票机设计.docx》由会员分享,可在线阅读,更多相关《自动售卖邮票机设计.docx(9页珍藏版)》请在冰豆网上搜索。

自动售卖邮票机设计.docx

自动售卖邮票机设计

《EDA技术实用教程》

自动售邮票机

设计报告

题目:

自动售邮票机课程设计

学院:

专业:

班级:

姓名:

学号:

指导教师:

题目要求

 

设计一个自动售邮票机,用开关电平信号模拟投币过程,每次投一枚硬币,机器能自动识别硬币金额只有1元和5角两种。

设定票价为2.5元,每次售一张票。

购票时先投入硬币,当投入的硬币总金额达到或超过票的面值时,机器发出指示,这时可以按取票键取出票。

如果所投硬币超过票的面值则会提示找零钱,取完票以后按找零键则可以取出零钱。

其他要求:

1)通过LCD2004显示;

2)能够选择不同面值的邮票。

1.题目分析

本次实验所要完成的任务是实现邮票的自动销售。

机器有2.5元和3元的两种面值邮票,首先进入选票阶段,需要选择所购邮票的面值,用拨码开关L8选择需要购买的邮票面值。

选定后进入投币阶段,有四个拨码开关,组成7种状态。

接着进入确认阶段,查看输入金额是否足够,若不够点亮LED1灯提示“金额不足”。

当输入金额达到所需票价时,点亮LED2提示邮票输出。

当输入金额超过所需票价时,点亮LED2、LED3提示邮票输出,找零。

四个拨码开关状态代表:

S0:

0000输入0.0元

S1:

0001输入0.5元

S2:

0010输入1.0元

S3:

0011输入1.5元

S4:

0100输入2.0元

S5:

0101输入2.5元

S6:

0110输入3.0元

 

2、原理框架

 

不是

足够

 

3、程序

程序简介:

1、变量含义:

clk时钟

choose选择邮票面值

k1k2k3k4四个拨码开关输入金额键

en使能

dat八位数据

ok可以取票

warning警告金额不足

change找零

2、主程序如下:

//利用verilog驱动LCD2004

//本实验是用LCD2004显示英文。

(LCD带字库)

modulelcd2004(choose,clk,k1,k2,k3,k4,rs,rw,en,dat,ok,

waring,change);

inputchoose,clk,k1,k2,k3,k4;//系统时钟输入20MHz

output[7:

0]dat;//LCD的8位数据口

outputrs,rw,en;//LCD的控制脚

outputok,waring,change;

rege;

reg[7:

0]dat;

regrs;

reg[15:

0]counter;

reg[5:

0]current,next;

regclkr;

reg[1:

0]cnt;

regx,y,z;

always@(posedgeclk)

begin

counter=counter+1'b1;

if(counter==16'h000f)

clkr=~clkr;

end

always@(posedgeclkr)

begin

current=next;

case(current)

set0:

beginrs<=0;dat<=8'h38;next<=set1;end

//*设置8位格式,4行,5*8

set1:

beginrs<=0;dat<=8'h0C;next<=set2;end

//*整体显示,关光标,不闪烁*/

set2:

beginrs<=0;dat<=8'h06;next<=set3;end

//*设定输入方式,增量不移位*/

set3:

beginrs<=0;dat<=8'h01;next<=set41;end

//*清除显示*/

 

set41:

beginrs<=0;dat<=8'h80;next<=dat0;end

//显示第一行

dat13:

if((k1==0)&&(k2==0)&&(k3==0)&&(k4==0))

beginif(choose==0)

Beginrs<=1;dat<="2";next<=dat14;end

elseif(choose==1)

beginrs<=1;dat<="3";next<=dat14;end

end

elseif((k1==0)&&(k2==0)&&(k3==0)&&(k4==1))

beginif(choose==0)

beginrs<=1;dat<="2";next<=dat14;end

elseif(choose==1)

beginrs<=1;dat<="3";next<=dat14;end

end

elseif((k1==0)&&(k2==0)&&(k3==1)&&(k4==0))

beginif(choose==0)

beginrs<=1;dat<="2";next<=dat14;end

elseif(choose==1)

beginrs<=1;dat<="3";next<=dat14;end

end

elseif((k1==0)&&(k2==0)&&(k3==1)&&(k4==1))

beginif(choose==0)

beginrs<=1;dat<="2";next<=dat14;end

elseif(choose==1)

beginrs<=1;dat<="3";next<=dat14;end

end

elseif((k1==0)&&(k2==1)&&(k3==0)&&(k4==0))

beginif(choose==0)

beginrs<=1;dat<="2";next<=dat14;end

elseif(choose==1)

beginrs<=1;dat<="3";next<=dat14;end

end

elseif((k1==0)&&(k2==1)&&(k3==0)&&(k4==1))

beginif(choose==0)

beginrs<=1;dat<="2";next<=dat14;end

elseif(choose==1)

beginrs<=1;dat<="3";next<=dat14;end

end

elseif((k1==0)&&(k2==1)&&(k3==1)&&(k4==0))

beginif(choose==0)

beginrs<=1;dat<="2";next<=dat14;end

elseif(choose==1)

beginrs<=1;dat<="3";next<=dat14;end

end

 

nul:

beginrs<=0;dat<=8'h00;//把液晶的E脚拉高

if(cnt!

=2'h2)

begin

e<=0;next<=set0;cnt<=cnt+1'b1;

end

else

begin

next<=nul;e<=1;

end

end

default:

next<=set0;

endcase

end

assignen=clkr|e;

assignrw=0;

assignok=x;

assignwaring=y;

assignchange=z;

endmodule

 

4、顶层原理图

5、引脚分配

6、设计总结

经过这次对自动售邮票机的设计,让我们对EDA设计有了更一步的认识,同时也对EDA这门课程有了更深入的了解。

这次设计让我们了解了关于自动售邮票机的原理与设计理念。

在这次设计中我们受益匪浅.对QuartusⅡ软件运用更加熟练。

在摸索该如何设计程序使之实现所需功能的过程中,培养了我们的设计思维,增加了实际操作能力,总的来说这次收获不小,基本能够做到学以致用。

当然这个设计存在许多的不足,还需要进一步的修改与完善。

这次设计提高了我们的逻辑思维能力,使我们在程序的改写和运用上有了很大的进步。

加深了我们对Verilog硬件语言的认识。

另外,我们还更加充分的认识到,EDA这门课程在科学发展中的至关重要性。

查阅参考书的独立思考的能力以及培养非常重要,我们在设计时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。

相互讨论共同研究也是很重要的,经常出现一些问题,经过讨论和资料的查询最终得到了解决。

锻炼了我们的团队合作精神及分工合作的能力。

最后应感谢王老师的辛勤指导下,能让我们在困境中找到解决难题的办法,并且对EDA有了更深刻的认识,同时在王老师身上学到了很多设计中适用的方法。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1