【正文】
同時也感謝學(xué)院為我提供良好的做課程設(shè)計的環(huán)境。鳴謝:在這次課程設(shè)計的撰寫過程中,我得到了許多人的幫助。其次,在動手能力方面,很多時候我都是知識不能夠結(jié)合實踐,所以很多時候我都不知道應(yīng)該怎么樣開始,不過此次由于有了老師的詳細(xì)講解,所以,我能夠很快知道接下來應(yīng)該做什么,有什么作用,得出什么結(jié)果。這畢竟不是好方法,不可取。找了同學(xué)都沒法解決問題,最后只能找了老師,老師調(diào)試了幾次之后,改動了防抖程序中的resetn=clk AND resetmp1 AND (NOT resetmp2)。而在投幣階段,因為會多次投幣?;旧蠈崿F(xiàn)數(shù)碼管顯示的時間和剛開始實現(xiàn)軟件過程所花的時間是一樣的。圖21i) 之后,按下BTN1,Rebuy,代表再次購票,LD7亮,進入第一個狀態(tài)state=00001,系統(tǒng)數(shù)據(jù)清零,Selstyle,等待選擇票種狀態(tài),6個數(shù)碼管顯示000000;圖22j) 在c),d),e)之后,如果想取消交易,撥下?lián)艽a開關(guān)SW1,此時,LD3亮,系統(tǒng)進入找零狀態(tài),如,在d)之后取消,自動找零,LD1亮,代表找零出5元,DISP0顯示5,代表找出零錢5元,6個數(shù)碼管顯示630505;圖23k) 整個購票過程結(jié)束。;LD7亮,系統(tǒng)進入第一個狀態(tài)state=00001,系統(tǒng)所有數(shù)據(jù)清零,Selstyle,等待選擇票種狀態(tài),6個數(shù)碼管顯示000000;圖15b) 選擇車票種類,BTN7,BTN6,BTN5分別代表2元車票,4元車票,6元車票,按下相應(yīng)按鈕后(此次選6元),數(shù)碼管DISP5顯示數(shù)字6,LD6亮,系統(tǒng)進入第二個狀態(tài)state=00010,Selticket,等待選擇購票數(shù)量狀態(tài),6個數(shù)碼管顯示600000;圖16c) 選擇車票數(shù)量,SW7,SW6,SW5分別代表1張票,2張票,3張票,撥下相應(yīng)的撥碼開關(guān)(此次選擇3張),數(shù)碼管DISP4顯示數(shù)字3,LD5亮,系統(tǒng)進入第三個狀態(tài)state=00100,Inputmoney,等待放入錢幣狀態(tài),LD0亮,MoneyInputAlarm代表錢幣不足,6個數(shù)碼管顯示630000;圖17d) 投入錢幣,BTN4,BTN3,BTN2,分別代表投入1元,5元,10元,按下相應(yīng)鍵位后(第一次按下5元),數(shù)碼管DISP3顯示數(shù)字0,DISP2顯示數(shù)字5,代表投入5元,錢幣不足,系統(tǒng)依舊停留在第三個狀態(tài)state=00100,LD5依舊亮,LD0依舊亮,MoneyInputAlarm亮代表錢幣不足,6個數(shù)碼管顯示630500,等待放入錢幣;圖18e) 第二次投入錢幣,BTN4,BTN3,BTN2,分別代表投入1元,5元,10元,按下相應(yīng)鍵位后(第二次按下10元),數(shù)碼管DISP3顯示數(shù)字1,DISP2顯示數(shù)字5,代表投入10元,加上第一次投入的5元,數(shù)碼管顯示15,但錢幣依舊不足(6*3=185+10=15),判斷CastmoneyTotalmoney,系統(tǒng)依舊停留在第三個狀態(tài)state=00100,LD5依舊亮,LD0依舊亮,MoneyInputAlarm亮代表錢幣不足,6個數(shù)碼管顯示631500,等待放入錢幣;圖19f) 第三次投入錢幣,BTN4,BTN3,BTN2,分別代表投入1元,5元,10元,按下相應(yīng)鍵位后(第三次按下5元),數(shù)碼管DISP3顯示數(shù)字2,DISP2顯示數(shù)字0,代表投入5元,加上第一次、第二次投入的5元,數(shù)碼管顯示20,錢幣足夠(6*3=185+10+5=20),判斷CastmoneyTotalmoney, LD0滅,MoneyInputAlarm滅代表錢幣已足,6個數(shù)碼管顯示632000。resetn= resetmp1 and (not resetmp2)。 then resetmp2=resetmp1。architecture b of keyin issignal resetmp1,resetmp2:std_logic。entity keyin is 投幣按鍵防抖port(clk_in1:in std_logic。end process p2。139。end if。event and clk_in2=39。 clk_out2:outstd_logic)。File Name : Description : Help to achieve the function of auto ticket sellingLimition : NoneSystem : Soft : Author : ChenDawenRevision : Version ,20121031LIBRARY IEEE。039。end process p1。 thenif temp=1999 thentemp=0。architecture a of div_2k issignaltemp:integer range 0 to 1999。 end process。 end if。Minput=00000。totalmoney:=0。 各種清零Tstyle=1111110。 if rebuy=39。 蜂鳴器工作 beep=39。 else next_state := givechange。139。 empty:=39。elsif(restmoney=1)then 1元 restmoney:=restmoney1。039。 延時500ms蜂鳴器停止工作when givechange = 余額找出,按從大到小原則退錢(10元,5元,1元) State=10000。139。next_state :=givechange。139。139。 每個時鐘周期出一張票num :=num1。 when ticketout = 出票 State=01000。039。elseif (castmoneytotalmoney)then 比較投幣總額與車票總額MoneyInputAlarm=39。) then 投幣期間取消操作,直接進入找零狀態(tài)退還所投錢幣MoneyInputAlarm=39。投幣錢數(shù)計數(shù)增加10Minput=minput+01010。139。139。 投幣錢數(shù)計數(shù)增加1Minput=minput+00001。139。 未選票,停留在選票狀態(tài) end if 。 數(shù)碼管顯示3 when others =null。 Tnumber=1101101。 計算票價 num:=1。 等待選擇購票數(shù)量狀態(tài)if (Cancelkey=39。 if Tm/=0 then next_state := selticket。 010代表選擇單價2元車票 when 100 = Tm:=6。 000代表未選擇 when 001 = Tm:=2。 數(shù)碼管顯示0Changeout=0000 。Tstyle=1111110。039。 then以下為系統(tǒng)復(fù)位初始化 Tout=39。139。event and clk_tmp=39。 車票單價 variable totalmoney,castmoney,restmoney: integer range 0 to 27。 end case。03 when 10 = Toutnum0 =1101101。00 when others = null 。04 when 0011 = Changeout0 =1111001。08 when 0111 = Changeout0 =1110000。 end case。Minput2 =0110000。Minput2 =1111001。Minput2 =1011011。Minput2 =1110000。Minput2 =1111011。Minput2 =0110000。Minput2 =1111001。Minput2 =1011011。Minput2 =1110000。Minput2 =1111011。Minput2 =0110000。Minput2 =1111001。Minput2 =1011011。Minput2 =1110000。 when others = NULL 。 when 2 = SG = Minput1 。 end if。139。end case 。 A = 4 。 A = 2 。 A = 0 。 u4:keyin port map(clk_in1=CLK_tmp2,reset=money(0),resetn=moneyn(0))。 輸出零錢數(shù)顯示signal Changeout:std_logic_vector(3 downto 0)。 投入金額個位顯示signal Minput:std_logic_vector(4 downto 0)。signal Tstyle:std_logic_vector(6 downto 0)。 定義系統(tǒng)轉(zhuǎn)換狀態(tài) (等待選擇票種狀態(tài), 等待選擇購票數(shù)量狀態(tài), 等待放入錢幣狀態(tài), 出票狀態(tài), 找零狀態(tài)) signal clk_tmp:std_logic。reset:instd_logic。 ponent div