語言的洗衣機控制器設(shè)計_第1頁
語言的洗衣機控制器設(shè)計_第2頁
語言的洗衣機控制器設(shè)計_第3頁
語言的洗衣機控制器設(shè)計_第4頁
語言的洗衣機控制器設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、目 錄一、目的2二、內(nèi)容及要求21、設(shè)計的主要內(nèi)容22、設(shè)計的主要要求3三、原理31基于狀態(tài)機的控制電路設(shè)計32洗衣機控制器的工作原理3(1)洗衣機的工作狀態(tài)3(2)全自動洗衣過程4(3)單獨執(zhí)行某個洗衣程序4(4)設(shè)計思路5四、步驟及仿真圖7五、程序設(shè)計10(1)時鐘分頻模塊···························

2、;·····························10(2)數(shù)碼管顯示11(3)定時器電路12。(4)預(yù)置時間和編碼電路···············

3、··································13(5)時序電路13(6)譯碼器14六、心得體會14七、參考文獻15一、目的 1 學(xué)習(xí)掌握全自動洗衣機的控制原理。2 掌握基于有限狀態(tài)機的控制電路設(shè)計方法.二、內(nèi)容及要求1、設(shè)計的主要內(nèi)容:

4、設(shè)計一個全自動洗衣機控制器電路,實現(xiàn)對洗衣機的全自動控制。 根據(jù)全自動洗衣機的控制原理設(shè)計一個控制電路, 使之能夠控制全自動洗衣機完成整個 工作過程。洗衣機工作過程分為兩種情況: (1)全部自動完成 當(dāng)按下復(fù)位按鈕時,洗衣機上電,控制電路復(fù)位到初始狀態(tài)(默認(rèn)水位為“中”;使用 ) 者可根據(jù)衣服的多少,按下水位控制按鈕,改變水位設(shè)置,以控制上水時加水的多少;當(dāng)按 下啟動/暫停按鈕時,洗衣機開始洗衣的第一個操作:進水閥門打開,開始上水,并根據(jù)水 位設(shè)置(高、中、低、少)歷時不同的時間timeadd(8s、7s、6s、5s) ;然后進水閥門關(guān)閉, 電機開始運轉(zhuǎn),開始洗衣過程,并歷時 9s;然后電機停

5、止運轉(zhuǎn),排水閥門打開,開始排水, 并根據(jù)水位設(shè)置(高、中、低、少)歷時不同的時間timedrain(7s、6s、5s、4s) ;然后排水 閥門關(guān)閉,進水閥門打開,開始第二次上水,并歷時timeadd當(dāng)甩干結(jié)束后,整個洗衣 過程完成,揚聲器發(fā)出持續(xù) 15 秒的急促的“嘀嘀”音,提示用戶洗衣結(jié)束。正常運行狀態(tài) 下全自動洗衣機工作過程:空閑(idle)第一次加水(water1)7s洗衣(wash)9s第一次排水(drain1)6s第二 次加水(water2)7s漂洗(rinse)9s第二次排水(drain2)6s甩干(dry)5s蜂鳴 15s 。 洗衣機整個工作過程可分為 9 個狀態(tài),運用有限狀態(tài)機

6、的設(shè)計思想來實現(xiàn)。 (2)人工干預(yù)在每個工作狀態(tài)下,如果想要洗衣機暫停工作,可按下啟動/暫停按鈕,則洗衣機立刻 暫停當(dāng)時的操作。比如,在第一次加水過程中,若按下啟動/暫停按鈕,則進水閥門立刻關(guān) 閉,暫停上水,計時暫停;當(dāng)再次按下啟動/暫停按鈕,則進水閥門又打開,并繼續(xù)計時, 直到加水滿 timeadd 后,進入洗衣過程。 洗衣機功能設(shè)置: 打開洗衣機蓋/合上洗衣機蓋:當(dāng)洗衣機在甩干過程中,若打開洗衣機蓋,則洗衣機 應(yīng)立即暫停工作,停止電機運轉(zhuǎn)和排水;只有合上洗衣機蓋,洗衣機才能繼續(xù)工作。因此洗 衣機控制器有一個 open_door 輸入信號,并根據(jù)此信號控制洗衣機的動作。 水位控制:有一個水位

7、控制按鈕,逐次按動它,水位可以在高、中、低、少這 4 檔 間切換,以控制上水時加水的多少。 洗衣模式選擇:有一個洗衣模式選擇按鈕,在洗衣機上電后開始啟動之前,按動此 按鈕,可以選擇洗衣機單獨執(zhí)行不同的洗衣程序:浸泡、洗滌、漂洗、脫水(甩干) ;若不 按此按鈕,則默認(rèn)全程自動執(zhí)行浸泡、洗滌、漂洗、甩干這 4 個程序。2、設(shè)計的主要要求:(1)根據(jù)設(shè)計題目要求編寫相應(yīng)程序代碼。(2)畫出洗衣機控制器包括不同洗衣模式的完整的狀態(tài)轉(zhuǎn)移圖。(3)對編寫的VHDL程序代碼進行編譯和仿真。(4)總結(jié)設(shè)計內(nèi)容。三、原理1 基于狀態(tài)機的控制電路設(shè)計有限狀態(tài)機(FSM,F(xiàn)inite State Machine)是

8、一種重要的時序邏輯電路單元,尤其適 合于設(shè)計數(shù)字系統(tǒng)的控制模塊。 狀態(tài)機可以認(rèn)為是組合邏輯和寄存器邏輯的特殊組合, 它一 般包括兩個部分:組合邏輯部分和寄存器部分。組合邏輯部分又包括次態(tài)邏輯和輸出邏輯, 分別用于狀態(tài)譯碼和產(chǎn)生輸出信號; 寄存器部分用于存儲狀態(tài)。 狀態(tài)機的次態(tài)是現(xiàn)態(tài)及輸入 信號的函數(shù),輸出信號根據(jù)狀態(tài)機的現(xiàn)態(tài)或輸入信號而定。 根據(jù)輸出信號產(chǎn)生方法的不同,狀態(tài)機可分為兩類:摩爾(Moore)型狀態(tài)機和米里 (Mealy)型狀態(tài)機。對于 Moore 型狀態(tài)機,其輸出只為狀態(tài)機當(dāng)前狀態(tài)的函數(shù),而與輸入 無關(guān)。而對于 Mealy 型狀態(tài)機,其輸出不僅與狀態(tài)機當(dāng)前狀態(tài)有關(guān),而且與輸入有關(guān)

9、。 實用的狀態(tài)機一般都設(shè)計為同步時序電路,它在時鐘信號的觸發(fā)下,完成各狀態(tài)之間 的轉(zhuǎn)移,并產(chǎn)生相應(yīng)的輸出。 采用 Verilog HDL 語言實現(xiàn)基于狀態(tài)機的控制電路設(shè)計, 就是在時鐘信號的觸發(fā)下, 完 成兩項任務(wù): (1)用 case 或 if-else 語句描述出狀態(tài)的轉(zhuǎn)移, (2)描述狀態(tài)機的輸出信號(通 常是控制信號) 。2 洗衣機控制器的工作原理(1)洗衣機的工作狀態(tài)洗衣機有 9 個工作狀態(tài)分別為:空閑(idle) 、第一次加水(water1) 、洗衣(wash) 、第 一次排水(drain1) 、第二次加水(water2) 、漂洗(rinse) 、第二次排水(drain2) 、甩干

10、(dry) 、 蜂鳴(beep) 。 (2)全自動洗衣過程最簡單的操作是在洗衣機上電后(默認(rèn)水位為“中”,通過水位控制按鈕設(shè)置好合適的 ) 水位,然后按下start_pause啟動/暫停按鈕,使洗衣機全自動完成整個洗衣過程,此時洗衣機控制器狀態(tài)轉(zhuǎn)移圖如圖 1所示。 圖1 洗衣機控制器狀態(tài)轉(zhuǎn)移圖start_p ause rst idle m=0 , w=0 d=0 15s beep m=0,d=0 speaker water1 w=1 m=0 , 7s wash m=1 w=0 , 浸泡 9s 甩干 5s dry m=1,d=1 w=0 6s drain2 d=1 w=0, m=0 9s rin

11、se m=1 w=0,d=0 7s drain1 d=1 w=0, m=0 6s water2 w=1 m=0,d=0 洗滌 漂洗圖 1 全自動洗衣機控制器的狀態(tài)轉(zhuǎn)移圖 。 一旦按下 rst 按鈕, 則電路復(fù)位到初始狀態(tài), 控制信號 m=0, w=0, d=0。 當(dāng)按下 start_pause 啟動/暫停按鈕時,則進入 water1 狀態(tài),w = 1,使進水閥門打開,開始上水,并歷時 7s。然 后轉(zhuǎn)移到下一狀態(tài)wash,w = 0,使進水閥門關(guān)閉;同時 m = 1,使電機開始運轉(zhuǎn),開始 洗衣過程,并歷時 9s。再轉(zhuǎn)移到下一狀態(tài)drain1,直到當(dāng)甩干結(jié)束后,整個洗衣過 程完成,揚聲器發(fā)出持續(xù)

12、15 秒的急促的“嘀嘀”音,提示用戶洗衣結(jié)束,控制器又返回到 初始狀態(tài)。 (3)單獨執(zhí)行某個洗衣程序 但有時候,人們可能需要單獨執(zhí)行某個洗衣程序,如洗滌或脫水,這時可以在洗衣前通 過按動洗衣模式選擇按鈕來選擇不同的洗衣程序。 在這種情況下, 洗衣機控制器的狀態(tài)轉(zhuǎn)移 圖就會比圖 1更復(fù)雜一些,下面加以詳細說明。 首先在 idle 狀態(tài)下,當(dāng)按下啟動/暫停按鈕時,控制器要根據(jù)不同的洗衣模式跳轉(zhuǎn)到不 同的狀態(tài):若默認(rèn)是全自動洗衣程序或選擇浸泡程序,則跳轉(zhuǎn)到 water1;若選擇洗滌程序, 則跳轉(zhuǎn)到 wash;若選擇漂洗程序,則跳轉(zhuǎn)到 water2;若選擇甩干,則跳轉(zhuǎn)到 dry。而當(dāng)洗衣機執(zhí)行完相應(yīng)的

13、洗衣程序后,則所有控制信號、計時器應(yīng)清零,同時控制器應(yīng) 返回初始狀態(tài)。因此,在 water1 狀態(tài)下,當(dāng)加好水時控制器不是直接跳轉(zhuǎn)到 wash,而是要 先判斷洗衣模式是否為浸泡程序,若是,則跳轉(zhuǎn)到 idle;若不是,才直接跳轉(zhuǎn)到 wash。同 理,在 drain1 狀態(tài)下,當(dāng)排完水時控制器不是直接跳轉(zhuǎn)到 water2,而是要先判斷洗衣模式是 否為洗滌程序,若是,則跳轉(zhuǎn)到 idle;若不是,才直接跳轉(zhuǎn)到 water2。在 drain2 狀態(tài)下,當(dāng) 排完水時控制器不是直接跳轉(zhuǎn)到 dry,而是要先判斷洗衣模式是否為漂洗程序,若是,則跳 轉(zhuǎn)到 idle;若不是,才直接跳轉(zhuǎn)到 dry。(4)設(shè)計思路洗衣

14、機控制器系統(tǒng)結(jié)構(gòu)圖如圖 2所示,將整個設(shè)計劃分為兩個子模塊:時鐘分頻子模 塊和洗衣機狀態(tài)控制器子模塊。 圖2 洗衣機控制器系統(tǒng)結(jié)構(gòu)圖(1)時鐘分頻子模塊 clkdiv.v將系統(tǒng)時鐘 50MHz 分頻為 1KHz, 再將 1KHz 分頻為 1Hz, 以產(chǎn)生洗衣結(jié)束時的提示蜂 鳴音 speaker=clk_1Hz&clk_1KHz&alarm(每間隔 1s 產(chǎn)生一個音頻為 1KHz 的提示音) 。 1Hz 的時鐘信號還作為洗衣機狀態(tài)控制器子模塊的輸入時鐘信號,驅(qū)動洗衣定時器計 數(shù)。(2)洗衣機狀態(tài)控制器子模塊 wash_ctrl.v 設(shè)計時,首先應(yīng)畫出狀態(tài)轉(zhuǎn)移圖并仔細分析,明確在每

15、個狀態(tài)下控制器要輸出哪些控 制信號,計數(shù)器該怎樣計數(shù);當(dāng)希望洗衣機暫停時,所有控制信號應(yīng)都變?yōu)?0,計數(shù)器暫停 計數(shù)。當(dāng)計數(shù)器正常計數(shù)到預(yù)定值時,應(yīng)跳轉(zhuǎn)到下一狀態(tài)。然后用 case 語句、if-else 語句對 狀態(tài)轉(zhuǎn)移和輸出進行描述。 信號定義: input clk_1KHz, clk_1Hz, rst, start_pause, mode, level, open_door; /* start_pause:啟動/暫停按鈕信號,高有效; mode:洗衣模式選擇信號,高有效。不按時,默認(rèn)全程 執(zhí)行浸泡、洗滌、漂洗、甩干這 4 個程序;每按一下,單獨選 擇浸泡,或洗滌,或漂洗,或甩干程序。 le

16、vel:水位控制信號(負脈沖) ,每按一下,循環(huán)選擇水 位(高、中、低、少) ; open_door: 洗衣機蓋打開信號 (負脈沖) 第一次按是 , “開 蓋” ,再按一次則是合蓋。 * */ output W, M, D; /W 是進水閥門控制信號,M 是引擎工作信號,D 是放水閥門 控制信號 output3:0 times; /定時計數(shù)器,用于洗衣各過程的定時計數(shù) output speaker; /洗衣結(jié)束提示音信號,驅(qū)動揚聲器發(fā)聲 output3:0 nextstate; /狀態(tài)機,描述洗衣機的狀態(tài)轉(zhuǎn)移過程 為方便設(shè)計,這里還定義了一些中間變量: reg3:0 modestate; /洗

17、衣模式計數(shù)器,0:默認(rèn)全自動洗程序,1:只執(zhí)行浸泡程序,2: 只執(zhí)行洗滌程序,3:只執(zhí)行漂洗程序,4:只執(zhí)行甩干程序。根據(jù)其值決定控制器從 idle 狀態(tài)應(yīng)跳轉(zhuǎn)到哪一狀態(tài)。 reg3:0 waterlevel;/水位計數(shù)器,用來控制加水時間,當(dāng)水位為高、中、低、少時其 值為 0、1、2、3。 reg3:0 timeadd; /加水時間計數(shù)器, 根據(jù)水位選擇控制加水時間, 當(dāng)水位為高、 中、 低、少時其值為 8s、7s、6s、5s。 reg3:0 timedrain; /排水時間計數(shù)器,根據(jù)水位選擇控制排水時間,當(dāng)水位為高、中、 低、少時其值為 7s、6s、5s、4s; reg doorstat

18、e; /洗衣機蓋的狀態(tài),為“1”表示蓋是打開的,為“0”表示蓋是合 上的。 reg start_pause_level;/將啟動/暫停脈沖信號轉(zhuǎn)換為相應(yīng)的高低電平信號。 reg alarm; /蜂鳴狀態(tài)信號,蜂鳴時 alarm 為“1” ,平時為“0” 整個模塊包括 8 大部分: 5 / 用 parameter 常量定義狀態(tài)機的狀態(tài),洗衣、漂洗、甩干和蜂鳴的時間長度 / 將啟動/暫停脈沖信號轉(zhuǎn)換為高低電平信號 always(posedge start_pause or posedge rst) / 洗衣模式選擇(對 modestate 賦值) always(posedge rst or pos

19、edge mode) / 水位控制(對 waterlevel 賦值) always(posedge rst or negedge level) /復(fù)位時默認(rèn)水位為“中” / open_door 信號控制 always(posedge rst or negedge open_door) / 根據(jù)水位選擇控制加水時間和排水時間 always(posedge clk_1KHz) begin case(waterlevel) endcase end / 狀態(tài)機輸出及狀態(tài)轉(zhuǎn)移 always(posedge clk_1Hz or posedge rst) begin if(rst) /控制信號清零,計數(shù)器

20、清零,狀態(tài)機回到空閑狀態(tài) else begin case(nextstate) idle: /(1)空閑狀態(tài) /根據(jù) modestate 的值判斷應(yīng)跳轉(zhuǎn)到哪個狀態(tài) water1 : /(2)第一次加水 begin if(!start_pause_level) begin end /暫停操作 else begin if(times<timeadd-1) begin end /若未加好水,則一直加水 else begin end /否則根據(jù) modestate 是否為 4'd1 判斷應(yīng)跳轉(zhuǎn)到空閑態(tài)或下一個狀態(tài) end end wash: /(3)洗衣 6 drain1: /(4)第一

21、次排水 /若未排完水,則一直排水 /否則根據(jù) modestate 是否為 4'd2 判斷應(yīng)跳轉(zhuǎn)到空閑態(tài)或下一個狀態(tài) water2: /(5)第二次加水 rinse: /(6)漂洗 drain2: /(7)第二次排水 /若未排完水,則一直排水 /否則根據(jù) modestate 是否為 4'd3 判斷應(yīng)跳轉(zhuǎn)到空閑態(tài)或下一個狀態(tài) dry: /(8)甩干 beep: /(9)蜂鳴 endcase end end / speaker 信號輸出 assign speaker=clk_1Hz&clk_1KHz&alarm;四、步驟及仿真圖(1)在上面的代碼提示 框架中完成核心子

22、模塊wash_ctrl.v的設(shè)計。 (2)對核心子模塊 wash_ctrl.v 進行時序仿真。 仿真全程自動順序執(zhí)行浸泡、洗滌、漂洗、甩干這 4 個程序 當(dāng)rst信號來到時,所有的信號置零;當(dāng)start_pause信號有效時,進入加水狀態(tài);只要不 再按下start_pause按鈕,洗衣機將按照預(yù)定的時序自動完成洗衣的全過程。如圖3所示。 圖3 洗衣過程全部自動完成的仿真圖 仿真人工干預(yù)洗衣過程 在洗衣過程全部自動完成后,再分別給rst和start_pause一個正脈沖,模擬一次新的洗衣 過程。在洗衣狀態(tài)(wash)下,第二次按下start_pause按鈕,則M從“1”變?yōu)椤?” ,洗衣機 暫停

23、操作;稍后第三次按下start_pause按鈕時,則M從“0”變?yōu)椤?” ,洗衣機繼續(xù)操作。如 圖4所示。 圖4 人工干預(yù)洗衣過程的仿真圖 仿真選擇洗衣模式在人工干預(yù)洗衣過程結(jié)束后,再給rst一個正脈沖,模擬一次新的洗衣過程。當(dāng)?shù)谝淮?按下mode按鈕時,洗衣機進入浸泡程序操作;第二次按下mode按鈕時,洗衣機進入洗滌程 序。當(dāng)然,若依次按下mode按鈕時,洗衣機會依次進入漂洗、甩干程序(后兩個程序限于 篇幅不作圖解) 。如圖 5所示。仔細觀察modestate和nextstate的變化。 圖5 選擇洗衣模式的仿真圖 仿真進行水位控制 在上述洗衣過程結(jié)束后,再給 rst 一個正脈沖,模擬一次新

24、的洗衣過程。先給 level 一 個負脈沖,設(shè)置水位為低,再啟動;到第二次加水期間,給 level 一個負脈沖,設(shè)置水位為 少。觀察洗衣和漂洗過程中的加水時間和排水時間是否分別與設(shè)置的水位相一致。 圖6 設(shè)置水位分別為低和少時的仿真圖 仿真在甩干過程中,打開洗衣機蓋的現(xiàn)象 圖7 在甩干過程中,先后打開和合上洗衣機蓋時的仿真圖(3)設(shè)計頂層圖形文件(如圖 8所示) ,編譯。 注意這里用未消抖按鍵 9、按鍵 10(低有效) ,作為水位控制信號 level_n 與洗衣機蓋打 開信號 open_door_n 的控制鍵,因此還需要增加按鈕消抖模塊。 圖8 頂層圖形文件wash_top.bdt(4)進行引

25、腳鎖定。 輸入信號: clk(f=50MHz)接 Pin28; rst 接鍵 1(Pin233) ;start_pause 接鍵 4(Pin236) ;mode 接鍵 7(Pin239) ; level_n:水位控制信號,負脈沖有效,接鍵 9(Pin132) ; open_door_n:洗衣機蓋打開信號,負脈沖有效,接鍵 10(Pin128) 。 輸出信號: W 接發(fā)光二極管 D8(Pin168) ;M 接 D7(Pin167) 接 D6(Pin166) ;D ; times 3.0: 當(dāng)前狀態(tài)工作時間, 接數(shù)碼管 1, 從高位到低位分別接 Pin16、 Pin15、 Pin14、 Pin13

26、; nextstate3.0:當(dāng)前工作狀態(tài),接數(shù)碼管 2,從高位到低位分別接 Pin20、Pin19、Pin18、 Pin17; modestate3.0: 所選洗衣模式, 接數(shù)碼管 7, 從高位到低位分別接 Pin140、 Pin139、 Pin138、 Pin137; 10 waterlevel3.0:當(dāng)前水位檔位,接數(shù)碼管 8,從高位到低位分別接 Pin160、Pin159、 Pin158、Pin141; speaker 接 Pin174。 五、 程序設(shè)計(1)時鐘分頻模塊(2) 數(shù)碼管顯示(3)定時器電路 end(4)預(yù)置時間和編碼電路(5)時序電路(6)譯碼器六、心得體會課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.從選題到定稿,從理論到實踐,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論