數(shù)字電路實(shí)驗(yàn)洗衣機(jī)程序設(shè)計(jì)_第1頁(yè)
數(shù)字電路實(shí)驗(yàn)洗衣機(jī)程序設(shè)計(jì)_第2頁(yè)
數(shù)字電路實(shí)驗(yàn)洗衣機(jī)程序設(shè)計(jì)_第3頁(yè)
數(shù)字電路實(shí)驗(yàn)洗衣機(jī)程序設(shè)計(jì)_第4頁(yè)
數(shù)字電路實(shí)驗(yàn)洗衣機(jī)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)字電路與邏輯設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目: 洗衣機(jī)控制器設(shè)計(jì) 一、洗衣機(jī)控制器要求設(shè)計(jì)制作一個(gè)全自動(dòng)洗衣機(jī)的控制器:_ 洗衣機(jī)的工作步驟為洗衣、漂洗和脫水三個(gè)過程,工作時(shí)間分別為:洗衣20秒,漂洗30 秒,脫水15 秒;_ 用一個(gè)按鍵實(shí)現(xiàn)洗衣程序的手動(dòng)選擇:A、單洗滌;B、單漂洗;C、單脫水;D、漂洗和脫水;E、洗滌、漂洗和脫水全過程;_ 用顯示器件顯示洗衣機(jī)的工作狀態(tài)(洗衣、漂洗和脫水),并倒計(jì)時(shí)顯示每個(gè)狀態(tài)的工作時(shí)間,全部過程結(jié)束后,應(yīng)提示使用者;_ 用一個(gè)按鍵實(shí)現(xiàn)暫停洗衣和繼續(xù)洗衣的控制,暫停后繼續(xù)洗衣應(yīng)回到暫停之前保留的狀態(tài);_ 選做:三個(gè)過程的時(shí)間有多個(gè)選項(xiàng)供使用者選擇。_ 選做:可以預(yù)約洗衣

2、時(shí)間。_ 選做:自擬其它功能。二、系統(tǒng)設(shè)計(jì)基本思想電路由模式選擇、計(jì)數(shù)器、報(bào)警模塊以及譯碼驅(qū)動(dòng)電路和數(shù)字顯示電路等模塊組成。1、模式選擇模塊五種洗衣模式可供用戶選擇,模式選擇模塊將用戶的選擇信息傳遞到控制模塊。2、減計(jì)數(shù)計(jì)數(shù)器模塊計(jì)數(shù)器洗衣以倒計(jì)時(shí)模塊的方式提示用戶當(dāng)前剩余的洗衣時(shí)間,該計(jì)數(shù)器能讀取不同的模值進(jìn)行計(jì)數(shù)。計(jì)時(shí)單位為一秒鐘。3、譯碼和數(shù)碼顯示電路譯碼和數(shù)碼顯示電路是將計(jì)時(shí)狀態(tài)直觀清晰地反映出來(lái),被人們的視覺器官所接受。顯示器件選用LED 七段數(shù)碼管。在譯碼顯示電路輸出的驅(qū)動(dòng)下,顯示出清晰、直觀的數(shù)字符號(hào)。4、報(bào)警模塊當(dāng)系統(tǒng)運(yùn)行到“報(bào)警”狀態(tài)時(shí),蜂鳴器將會(huì)報(bào)警,時(shí)間為5 秒。4、分頻

3、器模塊設(shè)計(jì)一個(gè)大小合適的分頻器使得系統(tǒng)能夠正確的實(shí)現(xiàn)一秒的計(jì)時(shí)。三、總體設(shè)計(jì)圖以及轉(zhuǎn)移圖流程圖示:狀態(tài)選擇開始信號(hào)輸入變量A為1YESNO進(jìn)行洗滌變量B為1YESNO進(jìn)行漂洗變量C為1YES進(jìn)行脫水NO完成洗衣后報(bào)警提示完成總體邏輯設(shè)計(jì)圖:控制器分頻器OSC時(shí)間計(jì)數(shù)器洗滌漂洗脫水譯碼時(shí)間顯示ClkClk1料庫(kù)Clk2T15 T20T25Cnt clr報(bào)警Pause 狀態(tài)選擇譯碼狀態(tài)轉(zhuǎn)移圖示:WAITA1進(jìn)行洗滌進(jìn)行漂洗A0B=1B0B1進(jìn)行脫水A0B=0C1C0完成洗衣報(bào)警提示管腳設(shè)計(jì)圖:仿真情況:簡(jiǎn)要說(shuō)明:本次仿真執(zhí)行的是第五個(gè)狀態(tài)即洗滌、漂洗和脫水全過程。通過此仿真可以發(fā)現(xiàn)當(dāng)輸出選擇模式信

4、號(hào)change時(shí),洗衣機(jī)模式開始發(fā)生變化。輸入第一個(gè)change信號(hào)的時(shí)候進(jìn)入單洗滌狀態(tài),輸入第二個(gè)change信號(hào)進(jìn)入單漂洗狀態(tài),輸入第三個(gè)change信號(hào)進(jìn)入了單脫水的狀態(tài),輸入第四個(gè)change信號(hào)進(jìn)入了脫水和漂洗的狀態(tài),當(dāng)輸入最后一個(gè)change信號(hào)的時(shí)候進(jìn)入洗滌、漂洗和脫水的全狀態(tài)。而在選擇每個(gè)狀態(tài)的同時(shí)時(shí)間信號(hào)(q0、q1、q2、q3、q4、q5、q6)也發(fā)生變化,顯示出每個(gè)狀態(tài)時(shí)的時(shí)間。而設(shè)定的led燈(cat0、cat1)則依次閃亮。當(dāng)start開始后change信號(hào)不再起作用,而系統(tǒng)進(jìn)入了運(yùn)行狀態(tài),時(shí)間開始逐秒變化。當(dāng)程序最終運(yùn)行結(jié)束后,進(jìn)入報(bào)警狀態(tài),sound開始顯示為高電

5、平,而時(shí)間均為0。(特別說(shuō)明:由于本實(shí)驗(yàn)分2次去做,管腳設(shè)定的時(shí)候進(jìn)行了新建工程,代碼粘貼過去的,實(shí)體名字取得和第二周驗(yàn)收時(shí)候不一致,不是其他原因。)四、代碼示例LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY xiyiji ISPORT(START: INSTD_LOGIC;PAUSE: INSTD_LOGIC;-暫停信號(hào)CLOCK: INSTD_LOGIC;Q: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -數(shù)碼管顯示信號(hào)CAT: OUTSTD_LOGIC_VECTOR(5 DOWNTO 0) -數(shù)碼管選通信號(hào)); EN

6、D 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; -時(shí)間中間變量SIGNAL TIME: INTEGER RANGE 60 DOWNTO 0; -倒計(jì)時(shí)時(shí)間SIGNAL TMP: INTEGER RANGE 999 DOWNTO 0; -分頻變量SIGNAL MA: INTEGER RANGE 9 DOWNTO 0;

7、 -數(shù)碼管譯碼變量SIGNAL CLK: STD_LOGIC; -分頻時(shí)鐘輸出BEGINPROCESS(CLOCK)BEGINIF (CLOCK'EVENT AND CLOCK='1') THEN -分頻模塊TMP<=TMP + 1;IF (TMP=999) THENTMP<=0;CLK<= NOT CLK;END IF;END IF;END PROCESS;PROCESS (START,CLK,PAUSE,CHANGE)-洗衣控制進(jìn)程BEGINIF ( START = '0' ) THEN -開始前模式選擇模塊IF(CHANGE

8、9;EVENT AND CHANGE='1') THENCASE MODE ISWHEN "000"=>MODE<="001" WHEN "001"=>MODE<="010" WHEN "010"=>MODE<="100"WHEN "100"=>MODE<="110"WHEN "110"=>MODE<="111"WHEN

9、OTHERS=>MODE<="000"END CASE;END IF;STATE <= MODE;-選擇洗衣模式BUZZER <= '0'CASE STATE IS-設(shè)置模式時(shí)間以及中間變量的值WHEN "001" =>TEMP <= 0 ;TIME <= 20;WHEN "010" =>TEMP <= 0 ;TIME <= 25;WHEN "100" =>TEMP <= 0 ;TIME <= 15;WHEN "

10、110" =>TEMP <= 25 ;TIME <= 40;WHEN "111" =>TEMP <= 40 ; TIME <= 60;WHEN "000" =>TEMP <= 0 ;TIME <= 0;WHEN OTHERS =>TEMP<= 0 ; TIME<= 0;END CASE ;ELSE IF ( PAUSE = '0') THEN -設(shè)置暫停信號(hào)IF ( CLK'EVENT AND CLK = '1' AND TIME/=

11、0) THENTIME <= TIME - 1 ; -時(shí)間自減IF ( TIME=1 ) THENSTATE <="000"BUZZER<= '1'-蜂鳴信號(hào)啟動(dòng)ELSIF ( TIME = TEMP ) THEN -洗衣中模式的切換CASE STATE ISWHEN "111" =>STATE <= "110"TEMP <= 20;WHEN "110" =>STATE <= "100"TEMP <= 0;WHEN OTHER

12、S =>TEMP <= 0 ;STATE <= "000"END CASE;END IF;END IF;END IF;END IF;MODEEND <= STATE; -中間變量賦值給結(jié)果變量END PROCESS;PROCESS (CLOCK,TIME)BEGINIF (CLOCK='1') THEN -提取十位數(shù)CAT<="111110" -數(shù)碼管選通END IF;END PROCESS;process (MA) -將數(shù)字譯碼為七段共陰數(shù)碼管碼begin case MA iswhen 1 => q

13、<= "0110000" ;when 2 => q <= "1101101" ;when 3 => q <= "1111001" ;when 4 => q <= "0110011" ;when 5 => q <= "1011011" ;when 6 => q <= "1011111" ;when 7 => q <= "1110000" ;when 8 => q <=

14、"1111111" ;when 9 => q <= "1111011" ;when others => q <= "1111110"end case;end process;end washer; -洗衣機(jī)控制器結(jié)束首先根據(jù)實(shí)驗(yàn)題目的要求可以將洗衣機(jī)控制器分解成為如下的幾個(gè)模塊:洗衣機(jī)模式選擇、計(jì)數(shù)器、報(bào)警模塊以及譯碼驅(qū)動(dòng)電路和數(shù)字顯示電路。1、模式選擇模塊:總共五種洗衣模式可供用戶選擇,模式選擇模塊將用戶的選擇信息傳遞到控制模塊,這個(gè)模式選擇模塊將在洗衣機(jī)的開始按鍵start按下前進(jìn)行模式選擇?;舅悸肥敲坑?/p>

15、個(gè)脈沖模式改變一次,算上初始閑置模式共為六種其間進(jìn)行循環(huán)改變,通過case語(yǔ)句在start為零時(shí)每接到change信號(hào)的一次改變,通過三位二進(jìn)制數(shù)改變至下一狀態(tài)。如此即可實(shí)現(xiàn)循環(huán)形式的模式選擇模塊。其簡(jiǎn)要代碼如下:If(change'event and change='1') thencase mode iswhen "000"=>mode<="001" when "001"=>mode<="010" when "010"=>mode<

16、="100"when "100"=>mode<="110"when "110"=>mode<="111"when others=>mode<="000"end case;2、減計(jì)數(shù)計(jì)數(shù)器模塊計(jì)數(shù)器洗衣以倒計(jì)時(shí)模塊的方式提示用戶當(dāng)前剩余的洗衣時(shí)間,該計(jì)數(shù)器能讀取不同的模值進(jìn)行計(jì)數(shù)。計(jì)時(shí)單位為一秒鐘。首先,由于需要數(shù)碼管的顯示,又要實(shí)現(xiàn)單位為一秒鐘的倒計(jì)時(shí)所以必要對(duì)于系統(tǒng)時(shí)鐘的分頻器。主要過程是設(shè)計(jì)一個(gè)總的時(shí)間變量稱之為TIME,每個(gè)時(shí)鐘上升沿

17、一到就對(duì)此變量減一,如此首先在系統(tǒng)內(nèi)部實(shí)現(xiàn)時(shí)間的自減。自減是在沒有暫停信號(hào)且開始信號(hào)為一的情況下進(jìn)行的。另外我設(shè)計(jì)了一個(gè)中間變量,在不同的狀態(tài)對(duì)其進(jìn)行不同的賦值,并使其與我設(shè)計(jì)的總時(shí)間變量進(jìn)行比較,然后將比較結(jié)果送給模式的另一個(gè)中間變量即可實(shí)現(xiàn)洗衣過程中的狀態(tài)變化顯示。減計(jì)數(shù)器及其和中間量的比較的簡(jiǎn)要代碼如下:if ( pause = '0') thenif ( clk'event and clk = '1' and time/=0) thentime <= time - 1 ;if ( time=1 ) then state <="

18、;000"buzzer<= '1' elsif ( time = temp ) then case state iswhen "111" =>state <= "110"temp <= 20;when "110" =>state <= "100"temp <= 0;when others =>temp <= 0 ;state <= "000"end case;3、 譯碼和數(shù)碼顯示電路:譯碼和數(shù)碼顯示電路是將計(jì)時(shí)

19、狀態(tài)直觀清晰地反映出來(lái),被人們的視覺器官所接受。顯示器件選用LED 七段數(shù)碼管。在譯碼顯示電路輸出的驅(qū)動(dòng)下,顯示出清晰、直觀的數(shù)字符號(hào)。首先,由于需要數(shù)碼管的顯示,又要實(shí)現(xiàn)單位為一秒鐘的倒計(jì)時(shí)所以必要對(duì)于系統(tǒng)時(shí)鐘的分頻器?;谏蟼€(gè)學(xué)期進(jìn)行的基礎(chǔ)數(shù)字電路vhdl學(xué)習(xí),分頻器是十分基礎(chǔ)的模塊易于設(shè)計(jì)。又因?yàn)樾枰ㄟ^兩位數(shù)碼管顯示當(dāng)前倒計(jì)時(shí)的時(shí)間,同時(shí)當(dāng)前倒計(jì)時(shí)的時(shí)間是兩位數(shù)所以利用倒計(jì)時(shí)時(shí)間TIME除以10可以得到時(shí)間的十位,再用其MOD十即可得到時(shí)間的個(gè)位,然后將要顯示的數(shù)與七段數(shù)碼管的七個(gè)管角相匹配,最后將這兩個(gè)數(shù)分別賦給兩個(gè)數(shù)碼管并使兩個(gè)數(shù)碼管交替顯示就實(shí)現(xiàn)了對(duì)于倒計(jì)時(shí)的譯碼電路,以下是譯碼

20、和數(shù)碼顯示電路的簡(jiǎn)要代碼:if (clock='1') then ma<=time/10; cat<="111101"else ma<=time mod 10; cat<="111110"end if;process (ma)begincase ma is when 1 => q <= "0110000" ; when 2 => q <= "1101101" ; when 3 => q <= "1111001" ; wh

21、en 4 => q <= "0110011" ; when 5 => q <= "1011011" ; when 6 => q <= "1011111" ; when 7 => q <= "1110000" ; when 8 => q <= "1111111" ; when 9 => q <= "1111011" ; when others => q <= "1111110" end case;end process;4、報(bào)警模塊:報(bào)警模塊是洗衣機(jī)系統(tǒng)的最后一個(gè)模塊,即任何一個(gè)洗衣狀態(tài)執(zhí)行完成后倒計(jì)時(shí)為零時(shí),系統(tǒng)運(yùn)行到“報(bào)警”狀態(tài),蜂鳴器將會(huì)報(bào)警,時(shí)間為5 秒。其設(shè)計(jì)相對(duì)比較簡(jiǎn)單,只是需要加入一個(gè)蜂鳴器信號(hào)BUZZER,并且使其再TIME倒計(jì)時(shí)總時(shí)間為零時(shí),提供一個(gè)上升沿信號(hào)即可。五、器

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論