版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 電子信息科學(xué)與技術(shù) 專業(yè)課程設(shè)計任務(wù)書</p><p><b> 一. 設(shè)計說明</b></p><p> 根據(jù)要求可自動出售兩種貨物,本文設(shè)計的自動售貨機(jī)可銷售cola 和 pepsi兩種飲料:售貨機(jī)可識別1元和0.5元的兩種貨幣,在一次購買過程中,可購買一個或多個商品,系統(tǒng)會自動計算所需錢數(shù)和找零的錢數(shù)并自動找零。另外有3個發(fā)光二極管、
2、6個LCD數(shù)碼管:兩個用來顯示所需金額,兩個用來顯示已付金額,兩個用來顯示找零數(shù)。</p><p> 1.1.1 流程說明</p><p> 本文設(shè)計的自動售貨機(jī)當(dāng)通電時,表示一次銷售的開始。顧客選擇一種商品或多種商品后就進(jìn)入投幣狀態(tài)。若不投幣,則自動返回初始狀態(tài)。投幣后,系統(tǒng)自動計算所投錢數(shù)。若投幣夠,則出貨并找零。若投幣不夠,如果顧客沒有繼續(xù)投幣,則退幣并回到初始狀態(tài)。本系統(tǒng)的投幣
3、銷售流程圖如圖所示:</p><p> 1.1.2各模塊說明</p><p> 本文設(shè)計的自動售貨機(jī)總體分三個模塊:總控模塊,二進(jìn)制譯碼模塊、BCD碼譯碼模塊。</p><p> 總控模塊:總控模塊是本系統(tǒng)最重要的模塊,該模塊大體有5個輸入端口和6個輸出端口。其輸入端口包括clk、coin1(投入一元貨幣)、coin5(投入0.5元貨幣)、cola(選擇col
4、a)、pepsi(選擇pepsi),輸出端口有paid(已投入多少錢)、needed(還需多少錢)moneyout(找零)、success(燈亮表示交易成功)、failure(燈亮表示交易失?。howmoneyout(燈亮表示正在找零)。該模塊實現(xiàn)了本系統(tǒng)最重要的交易過程,包括選擇商品、投入貨幣,計算剩余金額,找零出貨等。</p><p> 二進(jìn)制譯碼模塊:該模塊有一個輸入端口和兩個輸出端口。輸入端口是一個
5、8位的二進(jìn)制數(shù)輸出端口bcd0、bcd1是兩個4位的BCD碼。該模塊的主要的功能是實現(xiàn)將主控模塊輸出的二進(jìn)制數(shù)(paid、needed、moneyout)轉(zhuǎn)換成BCD碼,以便輸出到七段數(shù)碼管上顯示出來。該模塊的原理是將一個8位的二進(jìn)制轉(zhuǎn)換成2個4位的BCD碼,分為高四位和低四位。</p><p> BCD碼譯碼模塊:該模塊有一個輸入端口和一個輸出端口</p><p> 1.1.3 程序
6、設(shè)計</p><p> 主控模塊完整程序如下:</p><p> Library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity shouhuoji is
7、</p><p> port(clk: in std_logic;</p><p> coin1:in std_logic;</p><p> coin5:in std_logic;</p><p> cola:in std_logic;</p><p> pepsi:in std_logic;</p&
8、gt;<p> paid:out std_logic_vector(7 downto 0);</p><p> needed:out std_logic_vector(7 downto 0);</p><p> success:out std_logic;</p><p> failure:out std_logic;</p>&
9、lt;p> showmoneyout:out std_logic;</p><p> moneyout:out std_logic_vector(7 downto 0));</p><p> end shouhuoji;</p><p> architecture behav of shouhuoji is</p><p>
10、 type state_type is (qa,qb,qe,qc,qg,qd,qf);--定義七個狀態(tài)</p><p> signal current_state :state_type:=qa;</p><p> signal q:integer range 0 to 100; </p><p><b> begin</b></p
11、><p> process(clk)</p><p> variable paidtemp:std_logic_vector(7 downto 0);--定義變量</p><p> variable neededtemp:std_logic_vector(7 downto 0);</p><p> variable backmoney:s
12、td_logic_vector(7 downto 0);</p><p> variable pricetemp:std_logic_vector(7 downto 0);</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p>
13、<p> case current_state is </p><p> when qa=>paidtemp:="00000000";neededtemp:="00000000";</p><p> backmoney:="00000000";pricetemp:="00000000"
14、;q<=0;</p><p> showmoneyout<='0';moneyout<="00000000";paid<="00000000";</p><p> needed<="00000000";failure<='0';success<='
15、;0';</p><p> if cola='1' or pepsi='1' then current_state<=qb;</p><p> if cola='1' then pricetemp:=pricetemp+"00001111";</p><p> neededtem
16、p:=pricetemp;</p><p><b> Else </b></p><p> pricetemp:=pricetemp+"00010100";</p><p> neededtemp:=pricetemp;</p><p><b> end if;</b>&
17、lt;/p><p><b> end if;</b></p><p> paid<=paidtemp;</p><p> needed<=neededtemp;</p><p> when qb=>if coin1='1' or coin5='1' then</
18、p><p> if coin1='1'then paidtemp:=paidtemp+"00001010";</p><p><b> else </b></p><p> paidtemp:=paidtemp+"00000101";</p><p><b&
19、gt; end if;</b></p><p> if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp;</p><p> neededtemp:="00000000";current_state<=qd;</p><p> else neededte
20、mp:=pricetemp-paidtemp;backmoney:="00000000";</p><p> current_state<=qc;q<=0;</p><p><b> end if;</b></p><p> paid<=paidtemp;</p><p>
21、needed<=neededtemp;</p><p><b> end if;</b></p><p> if q<8 then q<=q+1;</p><p> if cola='1' or pepsi='1'then q<=0;</p><p> if
22、 cola='1' then pricetemp:=pricetemp+"00001111";</p><p> neededtemp:=neededtemp+"00001111";</p><p><b> else </b></p><p> pricetemp:=pricete
23、mp+"00010100";</p><p> neededtemp:=neededtemp+"00010100";</p><p><b> end if;</b></p><p> paid<=paidtemp;</p><p> needed<=neede
24、dtemp;</p><p><b> end if;</b></p><p> else current_state<=qe;q<=0;</p><p><b> end if;</b></p><p> when qe=>failure<='1';
25、</p><p> if q<4 then q<=q+1;</p><p> else current_state<=qa;q<=0;</p><p><b> end if;</b></p><p> when qc=>if coin1='1' or coin5=&
26、#39;1' then</p><p> if coin1='1'then paidtemp:=paidtemp+"00001010";</p><p><b> else </b></p><p> paidtemp:=paidtemp+"00000101";</p&
27、gt;<p><b> end if;</b></p><p> if paidtemp>=pricetemp then</p><p> backmoney:=paidtemp-pricetemp;</p><p> neededtemp:="00000000";current_state<
28、;=qd;</p><p> else neededtemp:=pricetemp-paidtemp;backmoney:="00000000";</p><p> current_state<=qc;</p><p><b> end if;</b></p><p> paid<
29、=paidtemp;</p><p> needed<=neededtemp;</p><p><b> end if;</b></p><p> if coin1/='1'and coin5/='1' then</p><p> if q<10 then q<=
30、q+1;</p><p> else current_state<=qg;</p><p><b> end if;</b></p><p> else q<=0;</p><p><b> end if;</b></p><p> when qg=&g
31、t;failure<='1';</p><p> showmoneyout<='1';moneyout<=paidtemp;</p><p> current_state<=qf;q<=0;</p><p> success<='0';</p><p>
32、 when qd=>success<='1';</p><p> if backmoney>"00000000"then showmoneyout<='1';</p><p> moneyout<=backmoney;</p><p><b> end if;<
33、/b></p><p> current_state<=qf;q<=0;</p><p> when qf=>if q<4 then q<=q+1;</p><p> else current_state<=qa;q<=0;</p><p><b> end if;</b
34、></p><p><b> end case;</b></p><p><b> else </b></p><p><b> end if;</b></p><p> end process;</p><p> end behav;&
35、lt;/p><p> BCD譯碼模塊完整程序如下:</p><p> Library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity code1 is<
36、/p><p><b> port(</b></p><p> b:in std_logic_vector(7 downto 0);</p><p> bcd0:out std_logic_vector(3 downto 0);</p><p> bcd1:out std_logic_vector(3 downto 0
37、)</p><p><b> ) ;</b></p><p> end code1;</p><p> architecture one of code1 is</p><p><b> begin </b></p><p> process(b)</p&
38、gt;<p><b> begin</b></p><p><b> case b is</b></p><p> when"00000000"=>bcd0<="0000";bcd1<="0000";--譯碼“0”;</p><p
39、> when"00000001"=>bcd0<="0001";bcd1<="0000";--譯碼“1”;</p><p> when"00000010"=>bcd0<="0010";bcd1<="0000";--譯碼“2”;</p>&
40、lt;p> when"00000011"=>bcd0<="0011";bcd1<="0000";--譯碼“3”;</p><p> when"00000100"=>bcd0<="0100";bcd1<="0000";--譯碼“4”;</p>
41、;<p> when"00000101"=>bcd0<="0101";bcd1<="0000";--譯碼“5”;</p><p> when"00000110"=>bcd0<="0110";bcd1<="0000";</p>&
42、lt;p> when"00000111"=>bcd0<="0111";bcd1<="0000";</p><p> when"00001000"=>bcd0<="1000";bcd1<="0000";</p><p> wh
43、en"00001001"=>bcd0<="1001";bcd1<="0000";</p><p> when"00001010"=>bcd0<="0000";bcd1<="0001";</p><p> when"0000
44、1011"=>bcd0<="0001";bcd1<="0001";</p><p> when"00001100"=>bcd0<="0010";bcd1<="0001";</p><p> when"00001101"=&
45、gt;bcd0<="0011";bcd1<="0001";</p><p> when"00001110"=>bcd0<="0100";bcd1<="0001";</p><p> when"00001111"=>bcd0<=
46、"0101";bcd1<="0001";</p><p> when"00010000"=>bcd0<="0110";bcd1<="0001";</p><p> when"00010001"=>bcd0<="0111&q
47、uot;;bcd1<="0001";</p><p> when"00010010"=>bcd0<="1000";bcd1<="0001";</p><p> when"00010011"=>bcd0<="1001";bcd1<
48、;="0001";</p><p> when"00010100"=>bcd0<="0000";bcd1<="0010";譯碼“20”</p><p> when others=>null;</p><p><b> end case;</b
49、></p><p> end process;</p><p><b> end one;</b></p><p> 頂層模塊完整程序如下:</p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p>
50、<p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity top is</p><p> Port( clk1:in std_logic;</p><p> C1,C5,P1_5,P2:in
51、 std_logic;</p><p> paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:out</p><p> std_logic_vector(3 downto 0);</p><p> s,f,showout :out std_logic );</p><
52、;p><b> end top;</b></p><p> architecture one of top is</p><p> component shouhuoji</p><p> port ( clk:in std_logic;</p><p> coin1:in std_logic;<
53、/p><p> coin5:in std_logic;</p><p> cola:in std_logic;</p><p> pepsi:in std_logic;</p><p> paid:out std_logic_vector(7 downto 0);</p><p> needed:out std_
54、logic_vector(7 downto 0);</p><p> success:out std_logic;</p><p> failure:out std_logic;</p><p> showmoneyout:out std_logic;</p><p> moneyout:out std_logic_vector(7
55、downto 0)</p><p><b> ); </b></p><p> end component;</p><p> component code1</p><p><b> port(</b></p><p> b:in std_logic_vector
56、( 7 downto 0);</p><p> bcd0:out std_logic_vector(3 downto 0);</p><p> bcd1:out std_logic_vector(3 downto 0)</p><p><b> );</b></p><p> end component;<
57、/p><p> signal p,n,mo:std_logic_vector( 7 downto 0);</p><p> --signal s1,s2,s3,s4,s5,s6:std_logic_vector(3 downto 0);</p><p><b> begin </b></p><p> u0:shou
58、huoji--各模塊連接</p><p> port map(clk=>clk1,coin1=>C1,coin5=>C5,cola=>P1_5,pepsi=>P2,</p><p> success=>s,failure=>f,showmoneyout=>showout,paid=>p,needed=>n,moneyout=&
59、gt;mo);</p><p> u1:code1 port map(b=>p,bcd0=>paid_lcd0,bcd1=>paid_lcd1);</p><p> u2:code1 port map(b=>n,bcd0=>needed_lcd0,bcd1=>needed_lcd1);</p><p> u3:code1 p
60、ort map(b=>mo,bcd0=>Mout_lcd0,bcd1=>Mout_lcd1); </p><p><b> end one;</b></p><p> 1.1.4各模塊的連接</p><p> 各模塊的連接如圖所示:</p><p> 售貨機(jī)主控系統(tǒng)和譯碼器模塊圖&l
61、t;/p><p><b> 售貨機(jī)頂層模塊</b></p><p> 2、1 主控模塊的仿真</p><p> 上圖表示顧客選擇了pepsi飲料后,且投了2個一元的硬幣。Success為高電平,代表售貨機(jī)有飲料售出。且余額為0.</p><p> 上圖表示顧客選擇了pepsi飲料后,且投1個一元的硬幣和一個0.5元的
62、硬幣。failure為高電平,代表售貨機(jī)無飲料售出。且余額為已投的金額,將錢退還給顧客。.</p><p> 2.BCD碼譯碼的仿真</p><p> 上圖表示自動售貨機(jī)的譯碼系統(tǒng),上圖表示將8位數(shù)字轉(zhuǎn)換成4位BCD碼。</p><p> 3.TOP文件的仿真</p><p> 上圖表示顧客選擇了pepsi飲料后,且投了2個一元的硬幣
63、。Success為高電平,代表售貨機(jī)有飲料售出。且余額為0.</p><p> 上圖表示顧客選擇了pepsi飲料后,且投1個一元的硬幣和一個0.5元的硬幣。Failure 為高電平,代表售貨機(jī)無飲料售出。Showout為退幣指示燈。.Mout_lcd0和Mout_lcd1,顯示退幣的金額。Paided _lcd0 和Paided_lcd1 needed _lcd0 和needed_lcd1 分別顯示已付金額和還
64、需要的金額數(shù)。</p><p><b> 下載驗證</b></p><p> 在無數(shù)次的調(diào)試與修改中,下載驗證能夠?qū)崿F(xiàn)題目的要求</p><p> 4. 參考文獻(xiàn):[1] 焦素敏.EDA課程設(shè)計指導(dǎo)書.鄭州:河南工業(yè)大學(xué),2008</p><p> [2] 潘松,黃繼業(yè).EDA技術(shù)實用教程.北京:科學(xué)出版社,20
65、02</p><p> [3] 王國棟,潘松等.VHDL實用教程.成都:電子科技大學(xué)出版社,2000</p><p> [4] 張亦華,延明.數(shù)字電路EDA入門.北京:電子工業(yè)出版社,2003</p><p> [5] http://www.ele-diy.com/ 中國電子制作網(wǎng) 網(wǎng)站</p><p><b> 5.
66、心得體會</b></p><p> 自動售貨機(jī)系統(tǒng)的設(shè)計經(jīng)過一個星期的設(shè)計已經(jīng)全部完成,能按預(yù)期的效果進(jìn)行多次購買、找零出貨、并且在數(shù)碼管上顯示出已投貨幣的金額、還需金額、找零,同時有指示燈提示交易成功、交易失敗、正在找零。在自動售貨機(jī)系統(tǒng)的3個模塊中,最主要的是主控模塊,其次的還有二進(jìn)制譯碼模塊和BCD碼譯碼模塊。各模塊完成后,將它們組合成完整的自動售貨機(jī)系統(tǒng)。在設(shè)計過程中還需改進(jìn)的是。本文所用的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計自動售貨機(jī)的設(shè)計
- eda課程設(shè)計報告(自動售貨機(jī))
- eda課程設(shè)計---自動售貨機(jī)設(shè)計
- 自動售貨機(jī)電路eda課程設(shè)計
- eda課程設(shè)計---簡易售貨機(jī)
- eda課程設(shè)計---簡易售貨機(jī)
- 自動售貨機(jī)課程設(shè)計
- 自動售貨機(jī)課程設(shè)計
- 自動售貨機(jī)課程設(shè)計
- eda自動售貨機(jī)設(shè)計
- 自動售貨機(jī)的課程設(shè)計
- 自動售貨機(jī)的eda實現(xiàn)設(shè)計
- 自動售貨機(jī)課程設(shè)計--飲料自動售貨機(jī)控制系統(tǒng)設(shè)計
- plc自動售貨機(jī)課程設(shè)計
- 課程設(shè)計報告---自動售貨機(jī)
- plc課程設(shè)計---自動售貨機(jī)
- plc自動售貨機(jī)課程設(shè)計
- plc自動售貨機(jī)課程設(shè)計
- plc自動售貨機(jī)課程設(shè)計
- plc課程設(shè)計---自動售貨機(jī)
評論
0/150
提交評論