自动售货机控制系统_第1页
自动售货机控制系统_第2页
自动售货机控制系统_第3页
自动售货机控制系统_第4页
自动售货机控制系统_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自动售货机控制系统一、 功能要求:1 自动售货机能销售三种商品:热狗1元、汉堡包2元、双层汉堡3元。设数量无限。2 自动售货机允许投入1元、2元、5元硬币。当总币值等于顾客需要的商品单价时,机器送出需要的商品,若大于时,机器除提供所需商品外,并将余币退出;若小于,则退出顾客投入的硬币,设计其内1元和2元的找零硬币无限。3 如投入的硬币达到或大于所要购买的商品价格,就不必再投入硬币了,自动售货机会发出一个指示信号使接受硬币的装置不再接受新的硬币。4 每次投币时间有限,设每次投币时间不超过60秒,在时间到时,总币值不足顾客购买的商品单价时,自动售货机按不足钱数处理,退还全部硬币,或者在设定时间内总

2、投币之不足顾客购买的商品单价时,若需要取消交易则可按取消键,售货机按不足钱数处理,退还全部硬币。5 当顾客完成一次购买或按错按钮后,需要设置一个重新开始按钮,使整个系统恢复到初始状态。6 顾客一次只能购买一种商品的一个i,若需要更多商品,需重复操作。二、顶层系统方案构思 1总体思想:自动售货机内有三种商品:热狗、汉堡包、双层汉堡,在自动售货机面板上设置三个按钮:A1、A4、A8分别表示上述三种选择,当顾客做出一次选择后,用一个reject1表示A1、A4、A8不再生效。设置三个按钮:coin1、coin2、coin5来表示投入的硬币是1元、2元、5元。当投入的硬币等于或大于顾客选择的商品价格时

3、设置的一拒绝投入显示灯reject2发光,使三个按钮coin1、coin2、coin5无效。当顾客确定某种商品且投入了足额的硬币,投币时限到时,同比窗口找零,用七段显示管闲事找零数,同时送出商品,指示灯out1亮。2分步实现:自动售货机控制系统共设三个状态,在每个状态中完成特定的功能。(1)初始状态A:当售货机通电,表示一次投币销售过程开始,顾客正常购买商品操作失误包括改变购买意向或不再购买,按start按钮重新进入初始状态:在初始状态A1、A4、A8生效,顾客可以根据自己的需要,选择其中一种商品(只限一种),进入下一状态。(2)投币状态B:此时,A1、A4、A8失效,reject1亮,表示投

4、入的硬币是1元、2元、5元的coin1、coin2、coin5生效。当投入硬币总额大于或等于商品价格时,进入下一状态:投币时间限制为30秒,超过时限,售货机拒绝接受投币,reject2亮。(3)找零出货状态:投币结束,售货机自动判别总钱数,若在时限到来时,总钱数少于顾客所需商品的单价,则使退钱驱动器工作,用七段显示器显示退还硬币数;若总钱数等于或大于顾客所需商品的单价,则使找零驱动器工作,用七段显示器显示找零的硬币,同时在送货口送出商品,显示灯out亮,出货、退钱或找零结束时表示一次自动售货过程完成,等待start信号的到来,以便开始下一次售货过程。售货机由外部提供统一1s的基准时钟CP和时钟

5、CP1。3划分逻辑电路模块(1)售货机的选择货物按钮A1(热狗)、A4(汉堡)、A8(双层汉堡)经同步消抖电路和编码电路转换成总线4位二进制数D0、D1、D2、D3,然后送入控制器。编码电路设置了一个使能端EN1,使电路进入A状态时有效,退出时无效。(2)由于售货机应梦自动计算投入的硬币数,为此用寄存器来记录并保存投入的总币值,称之为计钱器。他在电路处于投币状态时,接收外部来的A11、A21、A51信号,累计币值用总线4位二进制数B0、B1、B2、B3表示,它可与D0、D1、D2、D3比较,当比较结果B小于D时,说明投币总数小于货品单价,则退钱;当B等于D时,则出货口出现顾客购买的商品;当B大

6、于D时,出商品并找零。设置reset信号,使在A状态时输出为高电平有效,计钱器清零;EN2为在C状态下投入硬币窗口有效。(3)电路中应有定时电路限制投币时间,设置定时时间为1min。一旦定时时间结束,定时电路给控制器送入一应答信号T,则电路状态可以发生转换。(4)配置一个CP信号发生器,它可作为控制器时钟信号源。如果令CP的周期为1s,则采用计数器作为定时电路时,该信号又可以当作定时电路的计数脉冲。(5)售货机系统输出。设置一个显示译码器,先是应找的余币;设置一个货物出口用发光二极管out1显示;分别设置reject1和reject2表示拒绝货物输入显示和拒绝接受硬币显示。现画出自动售货机的逻

7、辑模块划分图,如图1.1所示。startA1A2A3A3A11A3A21A3A51A3CPA3控制器XSK同步消抖编码计数器定时DEN1BresetEN2EN3TCOut1reject2reject3UccCP1三、自动售货机系统的VHDL程序实现1顶层实体的VHDL的程序library ieee;use ieee.std_logic_1164.all;entity auto isport(start,A1,A4,A8,A11,A21,A51,CP,CP1:IN std_logic; reject1,reject2,out1:out std_logic; A31,B31,C31,D31,E31

8、,F31,G31 :out std_logic);end auto;2顶层结构体VHDL的实现 architecture auto_arc of auto iscomponent ksy is port(A,B:in std_logic; C:out std_logic); end component; component xiaobian is port(A,B,C,D:in std_logic; E:out std_logic_vector(3 downto 0); end component; component counter is port(A,B,C,D,E,F:in std_lo

9、gic; G:out std_logic_vector(3 downto 0); end component; component timer is port(A,B:in std_logic; C:out std_logic); end component; component encoder is port(C:in std_logic_vector(3 downto 0); E,F,G,H,I,J,K:out std_logic); end component; component kongzhi is port(start,CP,T:in std_logic; E,G:in std_l

10、ogic_vector(3 downto 0); EN1,EN2,EN3,reset,out1:out std_logic; reject1,reject2:out std_logic; C:out std_logic_vector(3 downto 0); end component; signal A01,A04,A08,D0,D1,D2,D3,EN1,EN2,EN3,reset,T,W,X,Y,Z:std_logic; signal C:std_logic_vector(3 downto 0); signal E,G: std_logic_vector(3 downto 0); begi

11、n U0: ksy port map(A1,CP1,A01); U1: ksy port map(A4,CP1,A04); U2: ksy port map(A8,CP1,A08); U3: xiaobian port map(A01,A04,A08,EN1,E); U4: counter port map(A11,A21,A51,EN2,CP,reset,G); U5: timer port map(CP,EN3,T); U7: encoder port map(C,A31,B31,C31,D31,E31,F31,G31); U8: kongzhi port map(start,CP,T,E

12、,G,EN1,EN2,EN3,reset,out1,reject1,reject2,C);end auto_arc;自动售货机系统的符号框图如图1.2所示,系统的连接图如图1.4所示。 图1.2 图1.4 3 次级模块电路分析及VHDL实现(1)输入同步消抖电路 输入同步消抖电路符号如图5.1所示,VHDL程序如下:library ieee;use ieee.std_logic_1164.all;entity ksy isport(A,B:IN std_logic; C:out std_logic); 图1.5 end ksy;architecture ksy_arc of ksy is co

13、mponent kand2 is port(A,B:IN std_logic; C:out std_logic); end component; component knand2 is port(A,B:IN std_logic; C:out std_logic); end component;component kdf is port(A,B:IN std_logic; C,D:out std_logic); end component; signal T1,T2,T3,T4,T5,T6:std_logic;begin U0:knand2 port map(A,T1,T2); U1:knan

14、d2 port map(T2,T3,T1); U2:kdf port map(T2,B,T4,T3); U3:kdf port map(T4,B,T6,T5); U4:kand2 port map(T4,T5,C);end ksy_arc;(2)消抖编码电路如图1.6所示,它有四条输入四条输出,VHDL程序如下:library ieee;use ieee.std_logic_1164.all;entity xiaobian isport(A,B,C,D:IN std_logic; E: out std_logic_vector(3 downto 0);end xiaobian;architec

15、ture xiaobian_arc of xiaobian isbegin 图1.6 PROCESS(A,B,C,D)beginif(D=0)THENif(A=1)THENE=0001;elsif(B=1)THENE=0100;elsif(C=1)THENE=1000;ELSE E=0000;end if;end if;end process;END xiaobian_arc;(3)计数器电路 计数电路符号如图1.3所示,它有6条输入信号、4条输出信号,对投入的硬币数进行计数,其VHDL实现为:library ieee;use ieee.std_logic_1164.all;use ieee.

16、std_logic_arith.all;entity counter isport(A,B,C,D,E,F:IN std_logic; G: out std_logic_vector(3 downto 0);end counter;architecture counter_arc of counter is 图1.3beginPROCESS(A,B,C,D,E,F)beginif(F=1or D=0)then G=0000;elsif(Eevent and E=1)thenif(A=0 and B=0 and C=0)then G=0000;elsif(A=1 and B=0 and C=0)

17、then G=0001;elsif(A=0 and B=1 and C=0)then G=0010;elsif(A=1 and B=1 and C=0)then G=0011;elsif(A=0 and B=0 and C=1)then G=0101;elsif(A=1 and B=0 and C=1)then G=0110;elsif(A=0 and B=1 and C=1)then G=0111;elsif(A=1 and B=1 and C=1)then G=1000;end if;end if;end process;end counter_arc;(4)定时器电路定时电路对投币时间进

18、行限制,限制时间为60秒。电路符号如图1.7所示,其VHDL为:library ieee;use ieee.std_logic_1164.all;entity timer isport(A,B:IN std_logic; C: out std_logic);end timer;Architecture timer_arc of timer is 图1.7begin process(B,A)variable S: integer ;BEGINif(B=0)THEN C=0;S:=0;ELSIF(Aevent and A=1)THEN S:=S+1;if(S=60)thenC=1;end if;e

19、nd if;end process;END timer_arc;(5)控制电路控制电路是整个系统的核心,它是整个系统最有创见性的部分,如图1.9所示,VHDL实现如下:library ieee;use ieee.std_logic_1164.all;package state_pack istype state is(QA,QB,QC);end state_pack;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use work.stat

20、e_pack.all;entity kongzhi is 图1.9port(start,CP,T:in std_logic; E,G:in std_logic_vector(3 downto 0); EN1,EN2,EN3,reset,out1:out std_logic; reject1,reject2:out std_logic; C:out std_logic_vector(3 downto 0);end kongzhi;architecture kongzhi_arc of kongzhi is signal current_state:state:=QA; signal ab,ac,

21、ad:integer range 0 to 9;beginprocessbeginwait until CP=1and CPEVENT;if start=1 then current_state=QA; C=0000;reject1=1;reject2=1;out1=1; EN1=0;reset=1;EN2=0;EN3if E=0000then current_state=QA; C=0000;reject1=1;reject2=1;out1=1; EN1=1;reset=1;EN2=0;EN3=0;else current_stateif T=0and abad then current_s

22、tate=QB; C=0000;reject1=0;reject2=1;out1=1; EN1=0;reset=0;EN2=1;EN3=1;else current_stateif abad then C=G;reject1=1;reject2=0;out1=1; EN1=0;reset=0;EN2=0;EN3=0;else ac=ab-ad;reject1=1;reject2=1;out1=0; EN1=0;reset=0;EN2=0;EN3=0; C=conv_std_logic_vector(ac,4); end if; end case; end process;processbegin ab=conv_integer(G); ad=conv_integer(E);end process;end kongzhi_arc;(6)译码电路 此电路实现4位输入7位输出,输出接LED显示器,显示找零及退钱数。电路符号如图1.9所示,VHDL程序如下:library ieee;use ieee.std_logic_1164.all;entity encoder isport

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论