您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页自动售饮料机的设计

自动售饮料机的设计

来源:步遥情感网


EDA课程设计报告

自动售饮料机的设计

院 系: 专 业: 学 号: 姓 名: 指导教师:

信息工程学院

第1页

目 录

一 、课程设计目的········································3 二、课程设计题目描述及要求·································3 三、课程设计报告内容·······································3 四、设计总结和心得体会·····································8

第2页

自动售饮料机的设计 一、课程设计目的:

通过这次课程设计对自己以前学过的知识加以巩固,再次熟悉EDA设计软件QuartusII的使用方法,掌握EDA的设计流程,更加熟练进行综合、仿真、调试、分配管脚、下载等操作,并再次基础上初步学会如何设计一个工程,与实际生活结合起来,既锻炼自己的动手能力,又锻炼了自己的思维能力,为以后进行工程实际问题的研究打下设计基础。 二、课程设计题目描述及要求:

自动售饮料机的题目描术及功能要求:

(1)、该系统能完成货物信息存储,进程控制,硬币处理,余额计算,

显示等功能。

(2)、该系统可以管理四种货物,每种的数量和单价在初始化时输入,

存储器中存储。用户可以用硬币进行购物,按键进行选择。 (3)、系统根据用户输入的货币,判断钱币是否够,钱币足够则根据顾

客的要求自动售货,钱币不够则给出提示并退出。 (4)、系统自动的计算出应找钱币余额、库存数量并显示。

三、课程设计报告内容: 3.1、设计原理及方案论证:

本次课程设计中自动售饮料机存储四种饮料,价钱分别为2元、2.5元、3元、3.5元,每种饮料存储9瓶。该售货机有复位和选择功能,通过reset键复位,number键确定购买数量,sel键选择饮料,coin1,coin05键进行投币一元和五角,按get键进行购买,并且还能用数码管显示所购买饮料的单价及其剩余数量,显示投币总数及购买数量,并能找钱。通过程序编写,综合仿真测试,对设计方案进行了论证。

3.2、系统设计描述: (1)程序代码: module

sell(clk,reset,sel,coin05,coin1,get,item,act05,act1,TOT1,TOT2,PRE1,PRE2,NUM,number,SYS);

第3页

parameter p1=4'b0100,p2=4'b0101,p3=4'b0110,p4=4'b0111;// 设置四种饮料价格 input clk,reset,sel,coin05,coin1,get; input [3:0]number; output item,act05;

output [3:0]act1,NUM,TOT1,PRE1,PRE2,TOT2,SYS; reg item,act05; reg c; reg [2:0]Q;

reg [3:0]TOT2,PRE2,NU1,NU2,NU3,NU4,SYS; reg [3:0]a,p,act1,TOT1,NUM,PRE1; reg [4:0]totle,m,TOT; integer i;

always @ (posedge clk) begin

if(reset)// 高电平进行复位 begin

item=0;act05=0;act1=0;TOT=0;PRE1=0;PRE2=0;NUM=0;totle=0;m=0;NU1=4'b1001;NU2=4'b1001;NU3=4'b1001;NU4=4'b1001; end else begin

if(sel) //四种饮料可以进行循环选择 begin a=number; if(Q>4) Q=0; else if(Q<1) Q=0; Q=Q+1;

if(Q==1) begin p=p1;SYS=NU1; end if(Q==2) begin p=p2;SYS=NU2; end if(Q==3) begin p=p3;SYS=NU3; end

第4页

if(Q==4) begin p=p4;SYS=NU4; end end totle=0; a=number;

for(i=1;i<=17;i=i+1)// for循环语句计算所购买饮料总价 if(a>=1&sel!=1) begin

totle=totle+p; a=a-1; end

TOT2=TOT[0];//对投币总数及饮料单价译码为五角的个数 TOT1[3:0]=TOT[4:1];//将投币总数的高四位译码为一元的个数 PRE1[2:0]=p[3:1];//对价格进行译码 PRE2=p[0];

if(TOT2==0) TOT2=4'b0000; if(TOT2==1) TOT2=4'b0101;

if(PRE2==0) PRE2=4'b0000;

if(PRE2==1) PRE2=4'b0101; NUM=number; m=0; item=0; act05=0; act1=0;

if(coin05) TOT=TOT+1; if(coin1) TOT=TOT+2; if(get) begin

if(SYS第5页

item=0; end else begin

if(TOT>totle) //投钱大于饮料总价则输出饮料并找钱 begin item=1;

m=TOT-totle; 将要找的钱送给一个变量m TOT=0; end

else if(TOT==totle) //投钱等于饮料总价输出饮料不找钱 begin item=1; TOT=0; end else

begin//否则不输出饮料, 找钱 item=0; m=TOT; TOT=0; end end c=m[0];

act1[3:0]=m[4:1]; if(c!=0) act05=1;

else act05=0;//显示每种饮料剩余数量

if(p==p1&item==1) begin NU1=NU1-number;SYS=NU1; end if(p==p2&item==1) begin NU2=NU2-number;SYS=NU2; end if(p==p3&item==1) begin NU3=NU3-number;SYS=NU3; end if(p==p4&item==1) begin NU4=NU4-number;SYS=NU4; end end

第6页

end end endmodule (2)、原理框图:

(3)、仿真波形:

(3)、电路连接图:

第7页

(4):管脚分配:

(5):

第8页

注释:按reset键复位,按sel键一次选择第一种饮料,按number键2次表示够买2瓶,然后按coin键投币五元,按get键进行购买,购买成功后item灯亮表示输出饮料,数码管NUM显示购买数量,SYS显示该饮料剩余数量,act1显示找钱一元,TOT1、TOT2显示投币总数,PRE1,PRE2显示所购买的饮料单价。 3.3、系统设计工作进程:

这次课程设计我和刘远一组,第一周主要进行程序编写修改,综合及波形仿真,经过多次调试修改,最终波形仿真成功。第二周主要分配管脚、编译下载及功能仿真,解决在其中遇到的问题,最后在老师的指导下又增加了一些其他功能,再次改写程序,综合仿真下载完成整个课程设计。这次设计整个过程两人都参与,一起分析并解决问题,并各自独操作了整个过程,每人都学到了很多知识。 3.4、设计和调试过程中出现的问题及解决方法: 课程设计中遇到的问题主要有:

(1)、程序编写错误:由于程序语法错误导致综合不成功,为此多次修改程序直至综合成功;

(2)、波形仿真错误:主要由于程序编写逻辑错误,很多功能都不能仿真出来,例如按get键后,一直找钱、输出饮料,为此我们添加act05=0、act1=0、item=0

第9页

等语句使该问题得到解决;利用for语句循环在一个clk内计算购买饮料的总价。 (3)、功能仿真中也遇到了一些问题,最终通过多次尝试使问题得到了解决。 四、设计总结和心得体会

通过这次课程设计了解到自己有很多知识还没有学会,思维能力有待提高,这次课程设计与实际生活相联系,通过学习进一步了解到一个工程的设计流程。再次熟练了QuartusII软件的使用方法及其综合、波形仿真、管脚分配、编译下载、功能仿真的整个过程,知道了自动售饮料机是如何设计的,为自己以后的学习打下了基础。

第10页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务