【正文】
039。c_d22amp。c_u22amp。039。d22amp。139。139。139。139。139。139。139。039。039。039。039。139。139。039。039。139。139。139。039。139。039。139。139。039。039。139。139。039。139。039。139。139。039。039。139。139。139。139。039。039。139。139。039。039。139。139。139。139。039。139。139。139。139。139。139。139。139。039。039。139。139。039。139。139。039。139。139。附錄一 三層電梯控制的源程序library ieee;use ;use ;use ;entity dianti is port ( clk : in std_logic; full,deng,quick,clr : in std_logic; c_u1,c_u2: in std_logic; c_d2,c_d3: in std_logic; d1,d2,d3: in std_logic; g1,g2,g3: in std_logic; door : out std_logic_vector(1 downto 0); led : out std_logic_vector(6 downto 0); led_c_u:out std_logic_vector(2 downto 0); led_c_d:out std_logic_vector(2 downto 0); led_d : out std_logic_vector(2 downto 0); wahaha : out std_logic; ud,alarm : out std_logic; up,down : out std_logic ); end dianti;architecture behav of dianti issignal d11,d22,d33:std_logic; signal c_u11,c_u22:std_logic; signal c_d22,c_d33:std_logic; signal q:integer range 0 to 1; signal q1:integer range 0 to 6; signal q2:integer range 0 to 9; signal dd,cc_u,cc_d,dd_cc:std_logic_vector(2 downto 0); signal opendoor:std_logic; signal updown:std_logic; signal en_up,en_dw:std_logic; begin:process(clk)beginif clk39。通過這次畢業(yè)設計,無論從選題到定稿,從理論到實踐都使我學到了很多東西,它不僅可以鞏固以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。同時也提高了我解決實際問題的能力,培養(yǎng)自我創(chuàng)新意識。q1信號從1 跳到3,進入關門狀態(tài)。當電梯超重時,超重信號就進行報警。這表示當電梯首次關門失敗后(即deng首次賦值為1時),電梯便一直處于故障報警狀態(tài)下,直到技術員處理完故障后,用clr才可以清除其報警。觀察以下信號:wahaha、alarm、quick。電梯接受到deng、c_d3和d3電梯重新進入預備下降狀態(tài),并且c_d3和d3信號都可以對q2(q23時)進行清零處理。039。139。設電梯到達三樓時,響應請求(c_d3),開門載客進入預備下降狀態(tài)。(6)led_d:在電梯接收到d3后,賦值為100,表示梯內請求到達樓層編碼為100(三樓),電梯運行到達請求目的樓層(三樓)后,電梯賦值變?yōu)?00,表示請求樓層得到滿足或在待機。(4)Led_c_u:在電梯接收到c_u2后,賦值樓層編碼為010(二樓),表示二樓梯外有人請求上升,電梯運行到達請求發(fā)出的樓層(二樓)后,電梯賦值變?yōu)?00,表示上升請求得到滿足或在待機。(2)ud:從電梯接收請求信號后到電梯運行到三樓為止,賦值為1,表示電梯此時向上運行,其余時段都為0,表示電梯此時向下運行或者待機。觀察以下信號:up、ud、down、led_c_u、led_c_d、led_d。由于二樓并沒有請求,所以電梯不作停頓地下降到一樓。電梯到達二樓,載客繼續(xù)上升。(5)led_c_d:在電梯接收到c_d3后,賦值樓層編碼為100,表示梯外有人請求下降,電梯運行到達請求發(fā)出的樓層(三樓)后,電梯賦值變?yōu)?00,表示下降請求得到滿足。(4)led:電梯每運行到達一層時,都會有不同的信號輸出: 100111001000000110。(2)ud:從電梯接收c_d3到電梯接收d1為止,賦值為1,表示電梯此時向上運行,其余時間段都為0,表示電梯此時向下運行或者待機。觀察以下信號:up、ud、down、led、led_c_d、led_d。電梯處于一樓,接收到三樓的梯外下降請求(c_d3),于是電梯運行到三樓,中途經過二樓時不作停頓。 截止時間設置圖 單位時間設置(二)電梯運行情況仿真本設計的運行情況比較復雜,本文主要介紹以下兩種情況。 對clk信號賦值圖在進行仿真前,還需對仿真截止時間和最小單位時間進行一下調整。 添加節(jié)點信號4. 對輸入信號賦值通過編輯器左側的一些快捷按鈕對所加節(jié)點中的輸入信號進行相關的賦值后,就可對程序進行仿真,觀察輸出信號,得出結論。同樣是使用相同的文件名dianti,后綴則改為scf。通過“新建”按鈕,選擇“Waveform Editor file”。 在編譯完成以后,程序的調試結束。 設置頂層文件6. 程序編譯在“MAX+plusII”下拉按鈕里選擇”Compiler”,對程序進行編譯。 文本輸入保存界面5. 設置頂層文件在編譯前,需要把文件設置為頂層文件,或稱工程文件Project。因為是使用VHDL語言,所以文件后綴名須改成VHD。 程序輸入界面輸入完畢后,對程序進行保存。在選擇輸入路徑時,選擇“Text Editor File”以進行文本輸入。; 電梯外人下降請求信號并置 dd_cc=dd or cc_u or cc_d; 電梯內、外人請求信號進行綜合 end if; ud=updown; 電梯運動狀態(tài)顯示 led_d=dd; 電梯內人請求信號顯示led_c_u=cc_u; 電梯外人上升請求信號顯示led_c_d=cc_d; 電梯外人下降請求信號顯示end if; 四、程序調試打開MAX+plusII軟件。39。c_u11; 電梯外人上升請求信號并置 cc_d=c_d33amp。amp。d11; 電梯內人請求信號并置 cc_u=39。 then c_d33=c_d3; end if; dd=d33amp。 then c_d22=c_d2; 對電梯外人下降請求信號進行檢測和寄存elsif c_d3=39。 then c_u22=c_u2; end if; if c_d2=39。 then c_u11=c_u1; 對電梯外人上升請求信號進行檢測和寄存elsif c_u2=39。 then d33=d3; end if;if c_u1=39。 then d22=d2;elsif d3=39。 then d11=d1; 對電梯內人請求信號進行檢測和寄存 elsif d2=39。; 清除超載報警if d1=39。else q=1;alarm=39。139。039。139。139。139。139。139。139。139。139。039。039。139。139。039。139。139。039。139。139。 七段數(shù)字顯示器(3)請求信號處理在進程執(zhí)行單元里,對電梯在樓層時的操作情況作出了描述,例如:開門、關門延時、超載報警、故障報警以及電梯內的請求信號處理,具體說明如下::process(clk)beginif clk39。 then led=0010010; ”,led的賦值是根據(jù)七段式數(shù)字顯示器的發(fā)光段排列的,可見發(fā)光段是a、b、d、e、g段時,形成一個2字。; 有上升請求,則電梯進入預備上升狀態(tài) end if;在上述語句中的“elsif g2=39。; opendoor=39。; 有下降請求,則電梯進入預備下降