數(shù)字電路實驗-洗衣機程序設計.doc_第1頁
數(shù)字電路實驗-洗衣機程序設計.doc_第2頁
數(shù)字電路實驗-洗衣機程序設計.doc_第3頁
數(shù)字電路實驗-洗衣機程序設計.doc_第4頁
數(shù)字電路實驗-洗衣機程序設計.doc_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)字電路與邏輯設計實驗報告題目: 洗衣機控制器設計 一、洗衣機控制器要求設計制作一個全自動洗衣機的控制器:_ 洗衣機的工作步驟為洗衣、漂洗和脫水三個過程,工作時間分別為:洗衣20秒,漂洗30 秒,脫水15 秒;_ 用一個按鍵實現(xiàn)洗衣程序的手動選擇:A、單洗滌;B、單漂洗;C、單脫水;D、漂洗和脫水;E、洗滌、漂洗和脫水全過程;_ 用顯示器件顯示洗衣機的工作狀態(tài)(洗衣、漂洗和脫水),并倒計時顯示每個狀態(tài)的工作時間,全部過程結束后,應提示使用者;_ 用一個按鍵實現(xiàn)暫停洗衣和繼續(xù)洗衣的控制,暫停后繼續(xù)洗衣應回到暫停之前保留的狀態(tài);_ 選做:三個過程的時間有多個選項供使用者選擇。_ 選做:可以預約洗衣時間。_ 選做:自擬其它功能。二、系統(tǒng)設計基本思想電路由模式選擇、計數(shù)器、報警模塊以及譯碼驅動電路和數(shù)字顯示電路等模塊組成。1、模式選擇模塊五種洗衣模式可供用戶選擇,模式選擇模塊將用戶的選擇信息傳遞到控制模塊。2、減計數(shù)計數(shù)器模塊計數(shù)器洗衣以倒計時模塊的方式提示用戶當前剩余的洗衣時間,該計數(shù)器能讀取不同的模值進行計數(shù)。計時單位為一秒鐘。3、譯碼和數(shù)碼顯示電路譯碼和數(shù)碼顯示電路是將計時狀態(tài)直觀清晰地反映出來,被人們的視覺器官所接受。顯示器件選用LED 七段數(shù)碼管。在譯碼顯示電路輸出的驅動下,顯示出清晰、直觀的數(shù)字符號。4、報警模塊當系統(tǒng)運行到“報警”狀態(tài)時,蜂鳴器將會報警,時間為5 秒。4、分頻器模塊設計一個大小合適的分頻器使得系統(tǒng)能夠正確的實現(xiàn)一秒的計時。三、總體設計圖以及轉移圖流程圖示:狀態(tài)選擇開始信號輸入變量A為1YESNO進行洗滌變量B為1YESNO進行漂洗變量C為1YES進行脫水NO完成洗衣后報警提示完成總體邏輯設計圖:控制器分頻器OSC時間計數(shù)器洗滌漂洗脫水譯碼時間顯示ClkClk1料庫Clk2T15 T20T25Cnt clr報警Pause 狀態(tài)選擇譯碼狀態(tài)轉移圖示:WAITA1進行洗滌進行漂洗A0B=1B0B1進行脫水A0B=0C1C0完成洗衣報警提示管腳設計圖:仿真情況:簡要說明:本次仿真執(zhí)行的是第五個狀態(tài)即洗滌、漂洗和脫水全過程。通過此仿真可以發(fā)現(xiàn)當輸出選擇模式信號change時,洗衣機模式開始發(fā)生變化。輸入第一個change信號的時候進入單洗滌狀態(tài),輸入第二個change信號進入單漂洗狀態(tài),輸入第三個change信號進入了單脫水的狀態(tài),輸入第四個change信號進入了脫水和漂洗的狀態(tài),當輸入最后一個change信號的時候進入洗滌、漂洗和脫水的全狀態(tài)。而在選擇每個狀態(tài)的同時時間信號(q0、q1、q2、q3、q4、q5、q6)也發(fā)生變化,顯示出每個狀態(tài)時的時間。而設定的led燈(cat0、cat1)則依次閃亮。當start開始后change信號不再起作用,而系統(tǒng)進入了運行狀態(tài),時間開始逐秒變化。當程序最終運行結束后,進入報警狀態(tài),sound開始顯示為高電平,而時間均為0。(特別說明:由于本實驗分2次去做,管腳設定的時候進行了新建工程,代碼粘貼過去的,實體名字取得和第二周驗收時候不一致,不是其他原因。)四、代碼示例LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY xiyiji ISPORT(START: INSTD_LOGIC;PAUSE: INSTD_LOGIC;-暫停信號CLOCK: INSTD_LOGIC;Q: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -數(shù)碼管顯示信號CAT: OUTSTD_LOGIC_VECTOR(5 DOWNTO 0) -數(shù)碼管選通信號); END xiyiji;ARCHITECTURE washer OF xiyiji ISSIGNAL STATE: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL MODE: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL TEMP: INTEGER RANGE 45 DOWNTO 0; -時間中間變量SIGNAL TIME: INTEGER RANGE 60 DOWNTO 0; -倒計時時間SIGNAL TMP: INTEGER RANGE 999 DOWNTO 0; -分頻變量SIGNAL MA: INTEGER RANGE 9 DOWNTO 0; -數(shù)碼管譯碼變量SIGNAL CLK: STD_LOGIC; -分頻時鐘輸出BEGINPROCESS(CLOCK)BEGINIF (CLOCKEVENT AND CLOCK=1) THEN -分頻模塊TMP=TMP + 1;IF (TMP=999) THENTMP=0;CLKMODEMODEMODEMODEMODEMODE=000;END CASE;END IF;STATE = MODE;-選擇洗衣模式BUZZER TEMP = 0 ;TIME TEMP = 0 ;TIME TEMP = 0 ;TIME TEMP = 25 ;TIME TEMP = 40 ; TIME TEMP = 0 ;TIME TEMP= 0 ; TIME= 0;END CASE ;ELSE IF ( PAUSE = 0) THEN -設置暫停信號IF ( CLKEVENT AND CLK = 1 AND TIME/=0) THENTIME = TIME - 1 ; -時間自減IF ( TIME=1 ) THENSTATE =000;BUZZERSTATE = 110;TEMP STATE = 100;TEMP TEMP = 0 ;STATE = 000;END CASE;END IF;END IF;END IF;END IF;MODEEND = STATE; -中間變量賦值給結果變量END PROCESS;PROCESS (CLOCK,TIME)BEGINIF (CLOCK=1) THEN -提取十位數(shù)CAT q q q q q q q q q q modemodemodemodemodemode=000;end case;2、減計數(shù)計數(shù)器模塊計數(shù)器洗衣以倒計時模塊的方式提示用戶當前剩余的洗衣時間,該計數(shù)器能讀取不同的模值進行計數(shù)。計時單位為一秒鐘。首先,由于需要數(shù)碼管的顯示,又要實現(xiàn)單位為一秒鐘的倒計時所以必要對于系統(tǒng)時鐘的分頻器。主要過程是設計一個總的時間變量稱之為TIME,每個時鐘上升沿一到就對此變量減一,如此首先在系統(tǒng)內(nèi)部實現(xiàn)時間的自減。自減是在沒有暫停信號且開始信號為一的情況下進行的。另外我設計了一個中間變量,在不同的狀態(tài)對其進行不同的賦值,并使其與我設計的總時間變量進行比較,然后將比較結果送給模式的另一個中間變量即可實現(xiàn)洗衣過程中的狀態(tài)變化顯示。減計數(shù)器及其和中間量的比較的簡要代碼如下:if ( pause = 0) thenif ( clkevent and clk = 1 and time/=0) thentime = time - 1 ;if ( time=1 ) then state =000;buzzerstate = 110;temp state = 100;temp temp = 0 ;state = 000;end case;3、 譯碼和數(shù)碼顯示電路:譯碼和數(shù)碼顯示電路是將計時狀態(tài)直觀清晰地反映出來,被人們的視覺器官所接受。顯示器件選用LED 七段數(shù)碼管。在譯碼顯示電路輸出的驅動下,顯示出清晰、直觀的數(shù)字符號。首先,由于需要數(shù)碼管的顯示,又要實現(xiàn)單位為一秒鐘的倒計時所以必要對于系統(tǒng)時鐘的分頻器?;谏蟼€學期進行的基礎數(shù)字電路vhdl學習,分頻器是十分基礎的模塊易于設計。又因為需要通過兩位數(shù)碼管顯示當前倒計時的時間,同時當前倒計時的時間是兩位數(shù)所以利用倒計時時間TIME除以10可以得到時間的十位,再用其MOD十即可得到時間的個位,然后將要顯示的數(shù)與七段數(shù)碼管的七個管角相匹配,最后將這兩個數(shù)分別賦給兩個數(shù)碼管并使兩個數(shù)碼管交替顯示就實現(xiàn)了對于倒計時的譯碼電路,以下是譯碼和數(shù)碼顯示電路的簡要代碼:if (clock=1) then ma=time/10; cat=111101;else ma=time mod 10; cat q q q q q q q q q q = 1111110; end case;end process;4、報警模塊:報警模塊是洗衣機系統(tǒng)的最后一個模塊,即任何一個洗衣狀態(tài)執(zhí)行完成后倒計時為零時,系統(tǒng)運行到“報警”狀態(tài),蜂鳴器將會報警,時間為5 秒。其設計相對比較簡單,只是需要加入一個蜂鳴器信號BUZZER,并且使其再TIME倒計時總時間為零時,提供一個上升沿信號即可。五、器件清單硬件:1 計算機;2 直流穩(wěn)壓電源;3 EDA 開發(fā)板及相應元器件。軟件:Quartus的相應版本。六、遇到的情況本次數(shù)字電路的設計實驗是一次綜合性實驗,是對上學期數(shù)字電路實驗知識的全方位考察,所以在實驗的過程中不免遇到一些問題及故障。下面對實驗中所遇到的問題進行分析。首先對于本試驗的狀態(tài)轉換模塊的設計一開始沒有想到采用三位二進制數(shù)的表示方法,所以對于五種狀態(tài)只是采用了一個十進制的變量,但采用后發(fā)現(xiàn)這種表示方法對于實現(xiàn)洗衣過程中的狀態(tài)顯示將變得十分困難,后來經(jīng)過思考發(fā)現(xiàn)利用三位二進制數(shù)表示模式不但同樣易于轉換模式同時可以方便的用三個發(fā)光二極管顯示洗衣狀態(tài)。第二點就是在仿真的過程中,雖然需要觀察的幾個波形都十分符合預期,但是其中幾個波形的仿真圖會出現(xiàn)個別的冒險。盡管并不影響下載到EDA實驗板上的顯示效果,但并不十分完善。第三點就是下載到EDA實驗板上的問題,為了將數(shù)字顯示到七段數(shù)碼管上,需要將數(shù)字的七位譯碼連接到數(shù)碼管的七個管角,但連接后發(fā)現(xiàn)數(shù)字顯示完全錯誤,經(jīng)過分析所顯示出的錯誤圖形的七位譯碼發(fā)現(xiàn)本EDA實驗板的共陰數(shù)碼管的七個管角與所譯的七位碼正好反接了,后經(jīng)過調整即可正常顯示所需數(shù)字。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論