自动贩卖机控制系统自动贩卖机控制系统
综合训练项目四“自动贩卖机控制系统”
专 业: 自动化
班 级: 12-1班
姓 名: 白琼
学 号: 1205010102
指导教师: 谢国民
1.1??设计任务及要求?
目的和要求:
1、掌握应用门电路和触发器等实现时序逻辑电路-“自动贩卖机控制系统”的设计方法,完成矿泉水、茶饮料和咖啡等贩卖功能。
2、要求系统能够自动完成:投币识别-价格比较-选择商品-输出商品和退币过程。
3、自动贩卖机实际要求:①自动贩卖机可投入1元和0.5元两种硬币;②所售矿泉水为1元,饮料1.5元,咖啡2两元。③当钱币总额超过要买的商品时,可购买商品指示灯亮;按下选择键,输出商品;④购买商品后,系统自动计算剩余钱币,并找回剩余零钱。
成果形式:完成实现目标任务的状态图和状态转换卡诺图,提交比较方案以及电路原理图及仿真。
2.1设计方案
方案一
开关1和5分别表示投入1元和5角,投入一元钱的时候开关1会给计数器一个脉冲记录投入一元钱的个数。
同理,开关5可以记录投入5角钱的个数。
发光二极管表示矿泉水、茶饮料、咖啡和找5角钱。开关表示选择按键A表示矿泉水,两个B表示茶饮料并找钱,C表示咖啡,Space表示茶饮料。
3.1自动售货机功能控制模块的VHDL实现?
? 根据图2所示的状态转换图,用VHDL语言中的CASE_WHEN结构和IF_THEN_ELSE语句实现控制功能,源程序如下:?LIBRARY?IEEE;?USE?IEEE.STD_LOGIC_1164.ALL;
?ENTITY?ZIDONG?IS?PORT(A,B:IN?STD_LOGIC;
?clk:IN?STD_LOGIC;?Z,Y:OUT燬TD_LOGIC);
燛ND燴IDONG;
燗RCHITECTURE燽eha燨F燴IDON并找回剩余零钱G營S燭YPE爏tates營S(S0,S1,S2);
燬 IGNAL?state:states;?
SIGNAL?X:STD_LOGIC_VECTOR(1?DOWNTO?0);
?BEGIN?X<=A&B;?PROCESS(x,state)?BEGIN?IF?rising_edge(clk)?THEN?CASE?state?IS?WHEN?S0=>Z<='0';
Y<='0';
?IF(X="01")THEN?state<=s1;?
ELSIF(X="10")THEN?state<=s2;?
ELSE?state<=s0;???????????????????????????牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋
???????????????END?IF;
?WHEN?S1=>Z<='0';
Y<='0';?IF(X="01")THEN?state<=s2;?
ELSIF(X="10")THEN?state<=S0;?
Z<='1';Y<='0';?
ELSE?state<=s1;
?END?IF;?WHEN?S2=>Z<='0';Y<='0';
?IF(X="01")THEN?state<=S0;?
Z<='1';Y<='0';
?ELSIF(X="10")THEN?state<=s0;?Z<='1';
Y<='1';?
ELSE?state<=s2;?
END?IF;?
END?CASE;?
END?IF;?
END?PROCESS;
?END?beha;??????
牋?ND
自动售货机控制系统的VHDL实现?
?图3?利用MAX+PLUSII软件及VHDL语言编写控制芯片?
3.2、投币输入信号电路的设计与实现?
???A、B分别为一元硬币和五角硬币驱动信号,Z为饮料输出信号,Y为找钱输出信号。通过对程序分析和仿真可以看出,A和B的驱动信号的持续时间必须控制在clk时钟周期内,如果驱动信号时间太短,系统检测不到投币信号,时间太长,会误认为是两次或多次投币,造成误操作。因此,要使整个控制系统可靠运行,还必须设计专门投币输入信号处理电路。????自动售货机的所有信号均由同步时钟信号clk的正边沿触发。由于售货机的硬币接受器一般是一个机械设置装置,投币时产生的信号要比同步信号clk要慢得多,一般可持续好几个周期,必须对投币输入信号进行处理,使每一次投币时在clk脉冲周期内只能产生一个脉冲作为功能控制模块的投币驱动信号。基于上面的功能要求,设