北郵簡易電磁爐控制器的設(shè)計與實現(xiàn)實驗報告【整理版】.doc_第1頁
北郵簡易電磁爐控制器的設(shè)計與實現(xiàn)實驗報告【整理版】.doc_第2頁
北郵簡易電磁爐控制器的設(shè)計與實現(xiàn)實驗報告【整理版】.doc_第3頁
北郵簡易電磁爐控制器的設(shè)計與實現(xiàn)實驗報告【整理版】.doc_第4頁
北郵簡易電磁爐控制器的設(shè)計與實現(xiàn)實驗報告【整理版】.doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)字電路與邏輯設(shè)計綜合實驗實驗報告 目錄 一、設(shè)計課題的任務(wù)要求二、系統(tǒng)設(shè)計基本思想三、仿真波形及波形分析:四、實驗結(jié)果及分析:五、元器件清單及資源利用情況六、故障及問題分析七、實驗總結(jié)和心得體會八、源程序 數(shù)電設(shè)計綜合實驗微波爐控制器一、設(shè)計課題的任務(wù)要求設(shè)計制作一個簡易微波爐控制器?!净疽蟆?1、烹飪模式選擇:電磁爐的烹飪模式有火鍋、煎炒、爆炒、煲湯和蒸燉五檔可選。用 一個按鍵(BTN7 )實現(xiàn)烹飪檔位的選擇(按下此鍵依上述順序依次變化),用點陣 顯示當(dāng)前的烹調(diào)檔位(火鍋顯示 H 、煎炒顯示 J 、爆炒顯示 B 、煲湯顯示 T 和蒸燉 顯示 Z ),烹調(diào)檔位的選擇按鍵同時也是加熱的開始按鍵,即烹調(diào)檔位選定的同時電磁爐就以最大功率開始加熱,沒有選擇時電磁爐處于停止?fàn)顟B(tài),點陣不顯示。 2、火力調(diào)節(jié):電磁爐的火力分5檔可調(diào):1900W-1500W-1100W-600W-100W,用數(shù)碼管 DISP3-DISP0 顯示當(dāng)前的火力,用兩個按鍵(BTN6 和 BTN5 )實現(xiàn)火力的增加或減少,烹調(diào)過程中,除爆炒模式外,其它模式均可以隨時可以調(diào)節(jié)火力,爆炒模式只能以最高功率加熱。 3、定時功能:用一個按鍵(BTN4 )實現(xiàn)定時設(shè)置,按下定時鍵,蜂鳴器響一聲,每按一次定時鍵,定時時間以 5-10-30-60 秒鐘的順序依次遞增,定時設(shè)定完畢后,電磁爐開始倒計時。用數(shù)碼管 DISP5 和 DISP4 顯示定時檔位和倒計時的過程,倒計時時間到后,電磁爐自動停止加熱并關(guān)機。 4 、不進(jìn)行定時操作時,電磁爐以默認(rèn)加熱時間進(jìn)行加熱。蒸燉模式的默認(rèn)時間為20秒鐘;爆炒模式的默認(rèn)時間是 3 秒鐘,爆炒 3 秒鐘后自動返回煎炒模式;其他模式的默認(rèn)時間為 90 秒。 5、用點亮的發(fā)光二極管 LD4 表示開機加熱,熄滅表示關(guān)機。 6、 設(shè)置關(guān)閉鍵,任何時候按下關(guān)閉鍵即可將電磁爐關(guān)機。 提高要求:用8個LED燈作為加熱進(jìn)度顯示條,隨著加熱時間的增加勻速增加點亮LED燈的個數(shù),無論加熱時間是多長,最后都必須將8個LED燈全部點亮。增加燒烤功能,用一個鍵選擇微波或燒烤功能,用一個數(shù)碼管指示當(dāng)前處于微波還是燒烤功能。燒烤火力和加熱時間要求與微波功能相同。二、系統(tǒng)設(shè)計基本思想1、【設(shè)計過程】 1)審題,初步確定思路。2)畫出流程圖,狀態(tài)轉(zhuǎn)移圖。3)用VHDL語言進(jìn)行編程。適時對程序進(jìn)行修改。4)編譯成功后,進(jìn)行仿真,觀察波形圖。5)將程序下載到實驗板上,調(diào)試各功能。6)通過計算機仿真和下載調(diào)試,發(fā)現(xiàn)問題,返回原程序進(jìn)行修改。7)進(jìn)行總體的調(diào)試,并驗收。 2、【設(shè)計思路】 電路由烹飪模式選擇模塊、火力調(diào)節(jié)模塊、定時模塊、倒計時模塊、分頻器模塊,關(guān)機模塊,譯碼和數(shù)碼顯示電路,點陣顯示電路等模塊組成。1、 烹飪模式選擇模塊電磁爐的烹飪模式有火鍋、煎炒、爆炒、煲湯和蒸燉五檔可選。通過按鍵的次數(shù)來控制。將模式信息傳遞到點陣顯示模塊。2、火力調(diào)節(jié)模塊電磁爐的火力分 5 檔可調(diào):1900W-1500W-1100W-600W-100W,將火力信息傳遞到數(shù)碼顯示模塊。3、定時模塊定時時間以 5-10-30-60 秒鐘的順序依次遞增。將倒計時信息傳遞到數(shù)碼顯示模塊。4、倒計時模塊微波爐以數(shù)碼管顯示的方式提示用戶當(dāng)前剩余的加熱時間。從默認(rèn)時間或者已調(diào)定時時間開始,依次減少1秒鐘。5、分頻器模塊將系統(tǒng)時鐘分頻,設(shè)計一個大小合適的分頻器使得系統(tǒng)能夠正確的實現(xiàn)一秒的計時以及數(shù)碼管和點陣顯示掃描的掃描時鐘。6、關(guān)機模塊當(dāng)?shù)褂嫊r結(jié)束時,會自動關(guān)機。當(dāng)然,按下關(guān)機鍵的時候,也可以隨時關(guān)機7、譯碼和數(shù)碼顯示電路譯碼和數(shù)碼顯示電路是將計時狀態(tài)直觀清晰地反映出來,被人們的視覺器官所接受。顯示器件選用LED 七段數(shù)碼管。在譯碼顯示電路輸出的驅(qū)動下,依次顯示,只是掃描頻率很高,所以在人的視覺里可以看到穩(wěn)定顯示的數(shù)字符號。8、點陣顯示電路點陣的row為低電平, col為高電平的時候,相應(yīng)的點才可以亮。在這里逐行進(jìn)行掃描,掃描頻率很高,所以在我們看來就是靜止顯示所有的亮點。 3、【微波爐邏輯劃分方塊圖】 4、【狀態(tài)轉(zhuǎn)移圖】1) 烹飪模式狀態(tài)轉(zhuǎn)移圖2)火力調(diào)節(jié)狀態(tài)轉(zhuǎn)移圖3)倒計時狀態(tài)轉(zhuǎn)移圖5、【流程圖】 三、仿真波形及波形分析:通過仿真軟件QUATUSII進(jìn)行仿真。1) 烹飪模式選擇模塊 當(dāng)modelSel第一次出現(xiàn)上升沿的時候,開機,同時點陣顯示H當(dāng)modelSel第二次出現(xiàn)上升沿的時候,點陣顯示J之后如果繼續(xù)設(shè)置modelSel的上升沿的話,就可以實現(xiàn),五中模式的循環(huán)轉(zhuǎn)換。 )火力調(diào)節(jié)如果fireDown出現(xiàn)上升沿的時候,火力下調(diào)如果fireUp出現(xiàn)上升沿的時候,火力上調(diào) 3)倒計時調(diào)節(jié)每當(dāng)timeset出現(xiàn)上升沿的時候,將會改變數(shù)碼管的較高兩位,5-10-30-60,然后繼續(xù)回到5循環(huán)。 4)power為1 的時候表示按下關(guān)機鍵,所有的數(shù)碼管,點陣,led都滅掉了 四、實驗結(jié)果及分析:1)開機 2)選擇烹飪模式 3)火力調(diào)節(jié) 5)調(diào)節(jié)倒計時 6)爆炒模式轉(zhuǎn)換為煎炒模式 7)關(guān)機(BTN7) 五、元器件清單及資源利用情況(1)實驗器材1 計算機;2 EDA 開發(fā)板及相應(yīng)元器件。(2)資源利用情況 邏輯原件:15%,引腳使用:32%。總體來說還是可以的。六、故障及問題分析1. 【問題】剛開始點陣顯示不了?!窘鉀Q方案】后來發(fā)現(xiàn),只有row=0,col=1的時候,相應(yīng)的點才會亮。2. 【問題】實驗中遇到的最大的問題,就是產(chǎn)生不了倒計時。一直都顯示00。思路都檢查了好多遍。【解決方案】在分頻上出錯了。分頻當(dāng)時是進(jìn)行2499999次循環(huán)。后來改成24999之后發(fā)現(xiàn)倒計時可以用了。一直以為是倒計時部分寫錯了,花費了好多時間。3.【問題】在設(shè)置關(guān)機鍵的時候,每次關(guān)機,再開機,不能恢復(fù)到初始狀態(tài),而是停留在關(guān)機前的狀態(tài)?!窘鉀Q方案】解決方案通過Power和ModelSel鍵控制,如果有按鍵,就恢復(fù)狀態(tài)。4.【問題】蜂鳴器剛開始是響的,但是加上消抖后,就不響了?!窘鉀Q方案】也有改過代碼,但是一直沒有成功。七、實驗總結(jié)和心得體會在本次的數(shù)字電路綜合實驗中,我選擇的題目是設(shè)計實現(xiàn)微波爐控制器。覺得電磁爐挺有意思的,心想,一定要好好去做這個實驗。但是,看到那么多功能還是有點懵的。第一次實驗,老師讓我們畫流程圖,一點一點的去理思路。后來終于覺得自己可以開動了。第一次實驗結(jié)束后,我便開始寫一些小段程序,比如說,數(shù)碼管顯示,點陣顯示等等小程序。第二次實驗結(jié)束的時候,我的小程序大部分可以運行了。第三次實驗的時候,發(fā)現(xiàn)我的數(shù)碼管顯示電路加上就開始出錯。解決了一整天都沒有成功。后來只能放棄,開始了一個新的思路,就是按部就班的,按照最簡單的思路去寫代碼。第四次實驗就要驗收了,可是我的倒計時出了問題,一直顯示不了,上面的故障分析中也有提到。后來又一點點的改代碼,一點點的去驗證。最后終于發(fā)現(xiàn)是我的分頻有問題。書上寫的是循環(huán)2499999次,所以從來沒覺得是分頻有問題,一直找別的原因,浪費了很多時間??赡軐嶋H與理論還是有一定差距的。之后又花了點時間,處理了一些小細(xì)節(jié)。最終驗收成功。這次的經(jīng)驗教訓(xùn)還是挺多的。一、如果我能把我的代碼分塊寫的話,出現(xiàn)問題的時候也不會牽一發(fā)動全身。沒有分塊,每一個問題,解決的時候都很困難。二、分頻問題。要根據(jù)實際的板子時鐘頻率去寫代碼。而不是把書上的理解了,就照搬過來。很多時候都是要聯(lián)系實際的。三、代碼優(yōu)化問題。這次代碼寫的挺冗長的,因為問題多,解決完的時候都需要馬上驗收了,所以很多代碼,完全可以寫得更簡單的。這次代碼有386行??偟脕碚f,實驗還是成功的,遇到了好多問題,也有讓我焦頭爛額的時候。但是我還是堅持了下來。我想,在實驗成功的那一剎那,那些努力都得到了見證。 八、參考文獻(xiàn)數(shù)字電路與邏輯設(shè)計實驗教程北京郵電大學(xué)電路實驗中心jumpjump=0;END CASE; end if; end process p1;p2:process(clk,COUNT2,setge,setshi,led,modelsel,timeset,state,beef1)begin if(clkevent and clk = 1) thenIF (timeset=1 OR sig =1) THENge=setge;shi=setshi; finish=0;end if;if COUNT2 = 49999 then COUNT2 = 0;else COUNT2 = COUNT2 + 1;end if;if(COUNT2 = 49999) then clock2 = 1;else clock2 = 0;end if;IF(clock2= 1) THEN beef=beef1;IF (led=1) THENIF(ge = 0 AND shi /= 0) THEN ge=9;shi=shi-1;ELSIF (ge = 0 AND shi = 0) THEN finish=1;ELSE ge=ge-1;END IF; END IF;end if;end if;END PROCESS p2;p3:PROCESS(clk,power,led) -電源控制BEGINIF(clkEVENT AND clk=1) THEN IF modelSel=1 THEN led=1;ELSIF (power=1 or finish=1) THEN led=0;END IF; powerled=led;END IF;END PROCESS p3;p4:PROCESS(clk,modelSel,led,jump) -烹飪模式選擇BEGINIF(clkEVENT AND clk=1) THEN temp2 =modelSel;IF(power=1 or finish=1) THEN state=s0;END IF; IF(led=1) THEN IF(jump=1) THEN state IF(modelSel=1 and temp2=0) THEN state=s1;ELSE state IF(modelSel=1 and temp2=0) THEN state=s2;ELSE state IF(modelSel=1and temp2=0) THEN state=s3;ELSE state IF(modelSel=1 and temp2=0) THEN state=s4;ELSE state IF(modelSel=1 and temp2=0) THEN state=s0;ELSE state=s4;END IF;END CASE;END IF;END IF;END IF;END PROCESS p4;p5:PROCESS(clk,state,led) -點陣顯示BEGINIF(clkEVENT AND clk=1) THEN IF(led=0) THEN row=11111111; col CASE fun1_tmp3 IS WHEN 0=fun1_tmp3=1; -H col=00000000; rowfun1_tmp3=2; col=00000000; rowfun1_tmp3=3; col=00100100; rowfun1_tmp3=4; col=00100100; rowfun1_tmp3=5; col=00111100; rowfun1_tmp3=6; col=00100100; rowfun1_tmp3=7; col=00100100; rowfun1_tmp3=0; col=00000000; row -J CASE fun1_tmp3 IS WHEN 0=fun1_tmp3=1; col=00000000; rowfun1_tmp3=2; col=00111100; rowfun1_tmp3=3; col=00010000; rowfun1_tmp3=4; col=00010000; rowfun1_tmp3=5; col=00010000; rowfun1_tmp3=6; col=00010100; rowfun1_tmp3=7; col=00011000; rowfun1_tmp3=0; col=00000000; row -B CASE fun1_tmp3 IS WHEN 0=fun1_tmp3=1; col=00000000;rowfun1_tmp3=2; col=00011110; rowfun1_tmp3=3; col=00100010; rowfun1_tmp3=4; col=00100010; rowfun1_tmp3=5; col=00011110; rowfun1_tmp3=6; col=00100010; rowfun1_tmp3=7; col=00100010; rowfun1_tmp3=0; col=00011110; row -T CASE fun1_tmp3 IS WHEN 0=fun1_tmp3=1; col=00000000; rowfun1_tmp3=2; col=01111100; rowfun1_tmp3=3; col=00010000; rowfun1_tmp3=4; col=00010000; rowfun1_tmp3=5; col=00010000; rowfun1_tmp3=6; col=00010000; rowfun1_tmp3=7; col=00000000; rowfun1_tmp3=0; col=00000000; row CASE fun1_tmp3 IS WHEN 0=fun1_tmp3=1; col=00000000; rowfun1_tmp3=2; col=00111110; rowfun1_tmp3=3; col=00010000; rowfun1_tmp3=4; col=00001000; rowfun1_tmp3=5; col=00000100; rowfun1_tmp3=6; col=00111110; rowfun1_tmp3=7; col=00000000; rowfun1_tmp3=0; col=00000000; row=11111110; END CASE; END CASE; END IF;END IF;END PROCESS p5;p6:PROCESS(clk,led,state,fireUp,fireDown) -火力選擇BEGINIF (clkEVENT AND clk = 1) THENtemp3=fireUp;temp4=fireDown;IF(power=1or finish=1)THEN fire=f0;END IF;IF(led=1) THEN IF(state=s2) THEN fire IF (fireUp=1 and temp3=0) THEN fire =f0; ELSIF(fireDown=1 AND temp4=0 ) THEN fire =f1; ELSE fire IF (fireUp=1 AND temp3=0) THEN fire =f0; ELSIF(temp4=0 AND fireDown=1) THEN fire =f2;ELSE fire IF (fireUp=1 AND temp3=0) THEN fire =f1; ELSIF(temp4=0 AND fireDown=1) THEN fire =f3; ELSE fire IF (fireUp=1 AND temp3=0) THEN fire =f2; ELSIF(temp4=0 AND fireDown=1) THEN fire =f4; ELSE fire IF (fireUp=1 AND temp3=0) THEN fire =f3; ELSIF(temp4=0 AND fireDown=1) THEN fire =f4; ELSE fire =f4;END IF;END CASE; END IF;END IF;END IF;END PROCESS p6;p8:PROCESS(clk,timeset,led) -時間設(shè)置BEGINIF (clkEVENT AND clk = 1) THENtemp1 IF(timeset=1 and temp1=0) THEN pre_time=t1;beef1=1;else pre_time=t0;beef1 IF(timeset=1 and temp1=0) THEN pre_time=t2;beef1=1;else pre_time=t1;beef1 IF(timeset=1 and temp1=0) THEN pre_time=t3;beef1=1;else pre_time=t2;beef1 IF(timeset=1 and temp1=0) THEN pre_time=t0;beef1=1;else pre_time=t3;beef1=0;END IF;END CASE;IF(modelSel=1)THEN pre_time=t3;end if;END IF;END IF;END PROCESS p8; p9:PROCESS(clk,led,pre_time,state,jump,timeset)-默認(rèn)時間modelSel state fun1=1 BEGINIF

溫馨提示

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

評論

0/150

提交評論