简易地铁自动售票系统设计方案 下载本文

内容发布更新时间 : 2024/11/8 14:36:13星期一 下面是文章的全部内容请认真阅读。

Tnumber <=\ --数码管显示1 when \代表选择2张车票 totalmoney := totalmoney+ 2*Tm; num:=2; Tnumber <=\ --数码管显示2 when \代表选择3张车票 totalmoney := totalmoney+ 3*Tm; num:=3; -- 最多购3张票 Tnumber <=\ --数码管显示3 when others =>null; end case; if totalmoney /=0 then next_state := inputmoney; -- 选票结束,进入投币状态 else next_state := selticket; -- 未选票,停留在选票状态 end if ; end if; when inputmoney => -- 进行投币 State<=\等待放入钱币状态 if Moneyn(0)='1' then --下载时所用投币按键1元 -- if Money(0)='1' then --仿真时所用投币按键1元 castmoney := castmoney+1; --投币钱数计数增加1 Minput<=minput+\投币数码管显示增加1 elsif Moneyn(1)='1' then --下载时所用投币按键5元 -- elsif Money(1)='1' then --仿真时所用投币按键5元 castmoney := castmoney+5; --投币钱数计数增加5 Minput<=minput+\投币数码管显示增加5 elsif Moneyn(2)='1' then --下载时所用投币按键10元 -- elsif Money(2)='1' then --仿真时所用投币按键10元 castmoney := castmoney+10;--投币钱数计数增加10 Minput<=minput+\投币数码管显示增加10 -- 连续投币,并进行累加 end if; if (Cancelkey='1') then -- 投币期间取消操作,直接进入找零状态退还所投钱币 MoneyInputAlarm<='0'; restmoney:=castmoney; next_state:=givechange; else if (castmoney -- 出票 State<=\等待出票状态 case num is when 0 =>null; when 1 => Tout <='1'; -- 每个时钟周期出一张票 num :=num-1; --出票数减1 Toutnum<=toutnum+\数码管显示出票数加1 when 2 => num :=num-1; --出票数减1 Tout <='1'; Toutnum<=toutnum+\数码管显示出票数加1 when 3 => num := num-1; --出票数减1 Tout <='1'; Toutnum<=toutnum+\数码管显示出票数加1 end case; if (num=0)then restmoney :=castmoney-totalmoney; next_state :=givechange; -- 出票结束,余额找出 else next_state :=ticketout; -- 继续出票 end if ; -- beep<='1'; -- --蜂鸣器工作 beep<='0' after 500ms; --延时500ms蜂鸣器停止工作 when givechange => -- 余额找出,按从大到小原则退钱(10元,5元,1元) State<=\等待找零状态 Tout<='0'; empty:='0'; if(restmoney>=5)then -- 5元 restmoney:=restmoney-5;--找零减5 Mout<=\找零数码管显示加5 Changeout<=changeout+\ elsif(restmoney>=1)then -- 1元 restmoney:=restmoney-1;--找零减1 Mout<=\找零数码管显示加1 Changeout<=changeout+\ else Mout<=\ empty:='1'; -- 余额找出结束标志 end if ; if empty='1' then -- 找零结束,回到选站状态 -- next_state :=selstyle; -- totalmoney:=0; -- castmoney:=0; -- else next_state := givechange; -- 继续找零 end if ; -- beep<='1'; -- --蜂鸣器工作 beep<='0' after 500ms; --延时500ms蜂鸣器停止工作 -- when others => -- 其他任何情况,均回到选站状态 -- next_state := selstyle; if rebuy='1' then --再次购票 next_state := selstyle; State<=\各种清零 Tstyle <=\ Tout<='0'; Mout<=\