自动售货机课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥学院

课程设计报告

题目:自动售货机课程设计

系别:电子信息与电气工程系

专业:通信工程

班级:

学号:___

姓名:

导师:

日期: 2016.5.30 成绩:

一、引言

本次课程设计研究自动售货机的主要功能模块,主要包括商品选择模块、余额计算模块、退币模块,由于条件上的限制,对投币模块中的货币检测未进行处理。相应的主要功能有选择货物,购买,出货找零,显示,延时和时控功能。通过使用VHDL语言,基于FPGA可编程芯片,并通过使用QUARTUSⅡ软件进行程序设计,模拟仿真,功能验证,以更好的来理解和掌握自动售货机控制系统的工作原理和设计方法,以及学习和掌握基于EDA的电子产品设计方法,进一步加深对VHDL语言以及QUARTUSⅡ软件、FPGA可编程芯片的认识与了解。

二、项目要求

设计一个自动售货机控制程序,它的投币口每次可以投入1元、2元、5元,且规定投入1元或2元后不得再投入5元。当投入总值等于或超过设定值(4元),售货机就自动送出货物并找回多余的钱。

1、基本要求按照上面要求,编写程序,实现售单一商品的功能。

2、扩展要求:在基本要求的基础上,完善电路,实现售多个商品的功能(设定值应该相应增加)。

三、设计方案

本售货机可销售两种商品,单价分别为3元和4元。投币口每次可以投入1元、2元、5元,且规定投入1元或2元后不得再投入5元,投入总额为3元时,不能再投入2元或者5元,当投入总值超过设定值3元或者4元的情况下,选择商品一或者商品二,售货机就自动送出货物并找回多余的钱。

四、项目代码及其分析

VHDL程序代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ZDSHJ IS

PORT(CLK,RESET:IN STD_LOGIC;

DIN:IN STD_LOGIC_VECTOR(2 DOWNTO 0);

COMB_OUTPUTS,GIVE_CHANGE:OUT STD_LOGIC); END ENTITY;

ARCHITECTURE behav OF ZDSHJ IS

TYPE FSM_ST IS (S0,S1,S2,S3,S4,S5);

SIGNAL current_state,next_state:FSM_ST; BEGIN

REG:PROCESS(CLK)BEGIN

IF RESET='1' THEN current_state<=s0;

ELSIF CLK'EVENT AND CLK='1' THEN

current_state<=next_state;

END IF;

END PROCESS REG;

COM:PROCESS( DIN,current_state)

BEGIN

CASE current_state IS

WHEN s0=>COMB_OUTPUTS<='0';

GIVE_CHANGE<='0';

IF DIN="001" THEN next_state<=s1;

ELSIF DIN="010" THEN next_state<=s2; ELSIF DIN="101" THEN next_state<=s5; ELSE next_state<=s0;

END IF;

WHEN s1=>COMB_OUTPUTS<='0';

GIVE_CHANGE<='0';

IF DIN="001" THEN next_state<=s2;

ELSIF DIN="010" THEN next_state<=s3; ELSE next_state<=s1;

END IF;

WHEN s2=>COMB_OUTPUTS<='0';

GIVE_CHANGE<='0';

IF DIN="001" THEN next_state<=s3;

ELSIF DIN="010" THEN next_state<=s4; ELSE next_state<=s2;

END IF;

WHEN s3=>COMB_OUTPUTS<='0';

GIVE_CHANGE<='0';

IF DIN="001" THEN next_state<=s4;

ELSIF DIN="010" THEN next_state<=s5; ELSE next_state<=s3;

END IF;

WHEN s4=>COMB_OUTPUTS<='1';

GIVE_CHANGE<='0';

next_state<=s0;

WHEN s5=>COMB_OUTPUTS<='1';

GIVE_CHANGE<='1';

next_state<=s0;

END CASE;

END PROCESS COM;

END behav;

程序分析:

DIN=00表示未投币;

DIN=01表示投币一元;

DIN=10表示投币两元;

DIN=11表示投币五元;

Y1为货物控制信号:Y1=1表示出货,Y1=0表示不出货。

Y2为找零以及五元投币口开闭信号:

Y2=00表示不找零并打开五元投币口,允许投入五元;

Y2=01表示找零一元并打开五元投币口,允许投入五元;

Y2=11表示不找零并关闭五元投币口,不允许投入五元;

S0表示初始状态,还没有收到投币;

S1表示收到一元投币的状态;

S2表示收到两元投币的状态;

S3表示收到三元投币的状态

仿真波形:

自动售货机仿真波形(一)

分析1:通过上图波形可以看出,当DIN=1时,即投币1通过上图波形可以看出,当DIN=2时,元,前三个脉冲来临时,即投币金额为1元、2元、3元,状态分别为s1,s2,s3,COMB_OUTPUTS和GIVE_CHANGE都是显示为0。当第四个脉冲来临时,即投币金额为4元时,则COMB_OUTPUTS显示为1,GIVE_CHANGE显示为0,

相关文档
最新文档