北郵數(shù)電實驗下電壓力鍋實驗報告_第1頁
北郵數(shù)電實驗下電壓力鍋實驗報告_第2頁
北郵數(shù)電實驗下電壓力鍋實驗報告_第3頁
北郵數(shù)電實驗下電壓力鍋實驗報告_第4頁
北郵數(shù)電實驗下電壓力鍋實驗報告_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .數(shù)字電路綜合實驗報告實驗名稱: 簡易電壓力鍋控制器的設(shè)計與實現(xiàn)學(xué)院:信息與通信工程學(xué)院專業(yè):通信工程班級:班內(nèi)序號:學(xué)號:姓名:目錄一、設(shè)計課題的任務(wù)要求4基本要求4提高要求5二、系統(tǒng)設(shè)計(包括設(shè)計思路、總體框圖、分塊設(shè)計)51、設(shè)計思路52、總體框圖73、分塊設(shè)計7(1)控制器模塊 (mystep) 7(2)分頻器 & 計時器模塊 (myclk)9(3)點陣模塊 (mydianzhen) 9(4)數(shù)碼管模塊 (mydigital) 11(5)蜂鳴器模塊 (mybuzzer) 11(6) LED 模塊 (myled) 12

2、(7)防抖模塊 (myfangdou) 12(8)頂層文件 (myall) 12三、仿真波形及波形分析131控制器模塊13文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .2分頻器 & 計時器模塊143點陣模塊154數(shù)碼管模塊175蜂鳴器模塊196LED 模塊207防抖模塊208總體仿真20四、源程序 211控制器模塊212分頻器 & 計時器模塊253點陣模塊284數(shù)碼管模塊385蜂鳴器模塊426LED 模塊447防抖模塊468頂層文件48五、功能說明及資源利用情況501功能說明502系統(tǒng)總流程圖513資源利用情況53六、故障及問題分析54七、總結(jié)和結(jié)論 561總結(jié)562

3、結(jié)論57這是北京郵電大學(xué)通信工程 數(shù)字電路與邏輯設(shè)計實驗(下)2016 年的實驗報告。本實驗是我獨立完成,每行代碼都是自己敲的,因此耗費了10 整天從早到晚待在實驗室。不過也因為如此,有些語句可能只是我一個人的思路,非常通俗,換個詞就是低端,和一般思路不一樣。而且這個實驗的要求每年都會有小變化,不過思路都不會大變。代碼有比較詳細的注釋。文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .一、設(shè)計課題的任務(wù)要求設(shè)計制作一個簡易電壓力鍋控制器。基本要求:電壓力鍋控制器的基本工作流程分三個步驟:等待設(shè)置狀態(tài)煮燉狀態(tài)保溫狀態(tài)。在等待設(shè)置狀態(tài)下,用戶可以按動BTN7選擇煮米飯的口感或

4、按動BTN6選擇營養(yǎng)燉的菜單,選擇完成后,按一下開始鍵BTN0,電壓力鍋進入煮燉狀態(tài)。在煮燉狀態(tài)下BTN7和 BTN6將被禁用,煮燉狀態(tài)又分為三個階段:升壓保壓降壓。不同口感的米飯和營養(yǎng)燉菜單的升壓和降壓時間均為4 秒,但保壓時間和最大壓力檔位不同,詳見附表。當(dāng)電壓力鍋內(nèi)的壓力降到零,煮燉狀態(tài)結(jié)束,蜂鳴器鳴響3 聲,同時控制器自動轉(zhuǎn)到保溫狀態(tài),直到用戶按一下取消鍵BTN1,則電壓力鍋控制器回到等待設(shè)置狀態(tài),用戶可以取出煮燉好的食物享用,而電壓力鍋控制器則可以準(zhǔn)備進行下一次的烹飪工作。要求:1、煮米飯口感選擇:用按鍵BTN7實現(xiàn)米飯口感的切換,按下此鍵依照清香標(biāo)準(zhǔn)濃郁的順序依次循環(huán)變化,用點陣顯

5、示當(dāng)前選擇的口感,點陣顯示要求見附表;2、營養(yǎng)燉菜單選擇:用按鍵BTN6實現(xiàn)營養(yǎng)燉菜單的切換,按下此鍵依照排骨煲湯熬粥雞鴨肉豆類/ 蹄筋的順序依次循環(huán)變化,用點陣顯示當(dāng)前選擇的菜單,點陣顯示要求見附表;3、等待設(shè)置狀態(tài)下點陣顯示* 號,保溫狀態(tài)下點陣顯示B;4、用發(fā)光二極管LD0LD7顯示當(dāng)前鍋中的壓力,點亮的發(fā)光二極管越多表示鍋內(nèi)的壓力越大,點亮LD0 表示1 檔壓力,點亮LD0 和LD1 表示2 檔壓力,點亮LD0、 LD1和 LD2 表示3 檔壓力,以此類推,最大壓力為8 檔( 8 個發(fā)光二極管LD0LD7全亮)。在等待設(shè)置狀態(tài)和保溫狀態(tài)下8 個發(fā)光二極管全不亮,壓力為0。在煮燉狀態(tài)的升

6、壓階段,根據(jù)所選擇的米飯口感或營養(yǎng)燉菜單的最大壓力檔位,發(fā)光二極管逐點勻速點亮到對應(yīng)檔位的最大壓力,保壓階段發(fā)光二極管保持為最大壓力檔位不變,降壓階段,發(fā)光二極管從該檔位的最大壓力逐點勻速熄滅至全滅;5、用數(shù)碼管DISP1 和 DISP0 倒計時顯示煮燉的剩余時間;6、煮燉狀態(tài)結(jié)束轉(zhuǎn)入保溫狀態(tài)的同時,蜂鳴器鳴響3 聲,提醒用戶可以享用美味了。文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .提高要求:1、增加預(yù)約功能:用BTN3和 BTN2設(shè)置預(yù)約時間,預(yù)約時間從5 秒到 99 秒可選,用數(shù)碼管 DISP3 和 DISP2 倒計時顯示預(yù)約的剩余時間,預(yù)約剩余時間結(jié)束,自動

7、進入煮燉狀態(tài),按照預(yù)約前設(shè)定的米飯口感或營養(yǎng)燉的菜單進行工作;2、所有用點陣顯示的內(nèi)容都改為用液晶顯示;3、用數(shù)碼管顯示的倒計時改用液晶顯示;4、自擬其他功能。二、系統(tǒng)設(shè)計(包括設(shè)計思路、總體框圖、分塊設(shè)計)1、設(shè)計思路( 1)模塊化設(shè)計使用自頂向下(top-down)設(shè)計法,點陣(mydianzhen)、數(shù)碼管(mydigital)、蜂鳴器 (mybuzzer)、 LED(myled) 每種輸出各一個模塊,防抖(myfangdou)為一個模塊,計時器和分頻器 (myclk) 寫在一個模塊里即可,另外按鍵輸入集中至一個控制器模塊(mystep) ,共計 7 個模塊 +1 個頂層文件 (myal

8、l)。2)階段化設(shè)計使用標(biāo)志位標(biāo)志每種狀態(tài),達到階段化執(zhí)行的目的。基礎(chǔ)功能分為6 個階段:等待設(shè)置狀態(tài)(無標(biāo)志位)、升壓(step_1)、保壓(step_2)、降壓 (step_3)、蜂鳴器響(step_buzzer)、保溫狀態(tài)(step_4);預(yù)約功能分為3 個階段:設(shè)置預(yù)約時間(step_e0)、等待設(shè)置狀態(tài)(step_e1)、預(yù)約倒計時(step_e2)。另外還有一個預(yù)約倒計時結(jié)束的標(biāo)志位step_e3。3)需要注意的問題第一,要求是降壓結(jié)束后蜂鳴器響三聲再進入保溫狀態(tài),而不是在保溫狀態(tài)開始時響三聲,因此點陣應(yīng)在蜂鳴器響后再顯示B;第二,等待設(shè)置狀態(tài)的開始應(yīng)是無任何顯示,而在反復(fù)按下BT

9、N6/BTN7時不應(yīng)出現(xiàn)無顯示的情況,因此口感計數(shù)器(state1)和菜單計數(shù)器 (state2)應(yīng)該都有一個初始狀態(tài);文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .第三,在執(zhí)行某個個階段時,之前和之后階段的輸入按鍵必須被全部禁止/ 無效(BTN1除外),因此應(yīng)使用較多的if-elsif語句或case語句,而且應(yīng)注意順序和插入位置;第四,在按下BTN1后需要清零的變量/ 信號 / 端口應(yīng)注意清零,而且注意不要做無謂的清零(有些信號會隨著控制它的信號的清零而清零,因此無需對這些信號再清零)。2、總體框圖控制器防抖按鍵LED分頻器 & 計時器數(shù)碼管時鐘點陣蜂鳴器注:箭頭表

10、示信號傳遞方向。3、分塊設(shè)計1)控制器模塊( mystep)本部分實現(xiàn)將按鍵輸入轉(zhuǎn)化為狀態(tài)計數(shù)器和標(biāo)志位。根據(jù)要求有:BTN7:米飯口感清香標(biāo)準(zhǔn)濃郁循環(huán);文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .BTN6:營養(yǎng)燉口感排骨煲湯熬粥雞鴨肉豆類/ 蹄筋循環(huán);BTN0:控制等待設(shè)置狀態(tài)的結(jié)束,按下后BTN6、BTN7被禁止;BTN2:控制預(yù)約設(shè)置時間的低位( 0-9 ),其中當(dāng)高位為 0 時低位不能小于5;BTN3:控制預(yù)約設(shè)置時間的高位(0-9 );BTN4:控制預(yù)約時間選擇的開始和結(jié)束。按下第一次后 BTN6、BTN7、 BTN0被禁止,按下第二次后 BTN6、 BT

11、N7、BTN0解除禁止, BTN2、 BTN3、BTN4被禁止。BTN1:在保溫狀態(tài)結(jié)束后按下,則回到等待設(shè)置狀態(tài);此外,將 BTN1的功能強化為任何時候按下均可回到等待設(shè)置狀態(tài)。實現(xiàn)思路為按鍵控制state1、 state2兩個計數(shù)器循環(huán)變化,再將它們合并為一個信號choice便于后續(xù)處理,其中使用較多的if語句對標(biāo)志位進行判斷。注:本模塊產(chǎn)生的標(biāo)志位有step_1,step_e0,step_e1,step_e2;使用的狀態(tài)位有step_1,step_e0,step_e1,step_e3?;A(chǔ)功能狀態(tài)轉(zhuǎn)移圖如下:文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .米飯口感

12、營養(yǎng)燉菜單AZNYBT初始QXPG初始DTBZJY注:綠色為按下BTN7 的狀態(tài)轉(zhuǎn)移,淺藍色為按下BTN6 的狀態(tài)轉(zhuǎn)移。文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .預(yù)約時間設(shè)置的狀態(tài)轉(zhuǎn)移圖如下:低位:若高位為 0(開始) 56789若高位為 0若高位不為043210高位:(開始) 0123498765注:深藍色為按下BTN2的狀態(tài)轉(zhuǎn)移,橙色為按下BTN3的狀態(tài)轉(zhuǎn)移。2)分頻器 &計時器模塊 (myclk)本實驗采用的時鐘源為1KHz,本模塊根據(jù)各模塊需求分出了100Hz、 10Hz、 5Hz 的時鐘。為了節(jié)省資源,分頻器之間使用串聯(lián)結(jié)構(gòu)。分頻器的實現(xiàn)不再贅述。本模塊

13、還整合了計時功能,即開始預(yù)約倒計時或煮燉狀態(tài)后進行計時,產(chǎn)生狀態(tài)位控制其它模塊的運行。為了提高精度,計時功能的process 沒有使用 1Hz 的時鐘,而是使用 10Hz 的時鐘。計時器的實現(xiàn)同樣使用計數(shù)器。注:本模塊產(chǎn)生的標(biāo)志位有step_2,step_3,step_e3,step_buzzer;使用的標(biāo)志位有step_1,step_3,step_4,step_e1,step_e2,step_e3。3)點陣模塊 (mydianzhen)點陣掃描控制器的系統(tǒng)結(jié)構(gòu)如下:文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .輸入控制信號掃描控制電路顯示預(yù)存的字母點陣顯示控制框圖如

14、下:時鐘列控制分頻輸入掃描電路電路8*8矩陣顯示行控制掃描電路根據(jù)要求有:初始狀態(tài)點陣不顯示;從等待設(shè)置狀態(tài)按下BTN6/BTN7后至降壓狀態(tài)結(jié)束的過程中,持續(xù)顯示相應(yīng)字母;保溫狀態(tài)顯示B。追加功能有:從等待設(shè)置狀態(tài)至升壓過程顯示黃色,保壓過程顯示紅色,降壓過程顯示綠色;設(shè)置預(yù)約時間的過程點陣顯示“YY”;YY與 B 均為滾動顯示。文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .由于本實驗顯示的字母在一個點陣屏上就可以完全顯示,因此使用循環(huán)左移完成滾動功能。滾動頻率為5Hz;點陣掃描頻率為1KHz。不同情況不同顯示使用if-elsif與 case 語句的嵌套實現(xiàn),再嵌套

15、一個其中使用計數(shù)器實現(xiàn)對點陣的行掃描。case,在另外,為了提高點陣顯示的亮度,本實驗沒有使用點陣的第一行和最后一行,即字母的顯示僅使用的中間的六行;為了保持每個點的亮度一致,使用了行掃描。注:本模塊使用的標(biāo)志位有step_1,step_2,step_3,step_4,step_e0,step_e1( 4)數(shù)碼管模塊 (mydigital)根據(jù)要求有:基礎(chǔ)部分 (DISP0,DISP1) :初始狀態(tài)數(shù)碼管不顯示;等待設(shè)置狀態(tài)根據(jù)選擇顯示該狀態(tài)所需時間;煮燉狀態(tài)顯示煮燉狀態(tài)剩余時間;保溫狀態(tài)數(shù)碼管不顯示。預(yù)約部分 (DISP2,DISP3) :初始狀態(tài)數(shù)碼管不顯示;設(shè)置預(yù)約時間時根據(jù)輸入顯示;預(yù)

16、約倒計時時顯示剩余時間。在本實驗中,實現(xiàn)的是預(yù)約倒計時結(jié)束后DISP2、 DISP3 熄滅。實現(xiàn)思路為使用一個計數(shù)器 (DISP_TEMP)控制當(dāng)前應(yīng)該掃描哪個數(shù)碼管,用 if 語句判斷當(dāng)前處于何種狀態(tài),用 case 語句判斷對當(dāng)前數(shù)碼管輸出哪個數(shù)字。由于使用的是 1KHz的時鐘源,共掃描4 個數(shù)碼管,因此每個數(shù)碼管的掃描頻率為250Hz。5)蜂鳴器模塊 (mybuzzer)根據(jù)要求有:降壓結(jié)束后蜂鳴器響三聲,之后進入保溫狀態(tài)。實驗板上的蜂鳴器為無源蜂鳴器,根據(jù)輸出電平的頻率發(fā)出不同音調(diào)的聲音。因此實現(xiàn)思路為:使用1KHz的時鐘源,當(dāng)降壓結(jié)束后執(zhí)行每一次時鐘上升沿時輸出電平翻轉(zhuǎn)一次,得到的輸出

17、頻率為500Hz。使用一個計數(shù)器控制蜂鳴器的響和中間靜音的時長,響每次時長0.5 秒,靜音每次時長0.25 秒;使用另一個計數(shù)器控制蜂鳴器響 3 聲,靜音 3 次,之后給進入保溫狀態(tài)的標(biāo)志位賦1。文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .6) LED模塊 (myled)根據(jù)要求有:升壓過程中 LED逐個勻速亮起至最大壓力值;保壓過程中 LED持續(xù)亮起;降壓過程中 LED逐個勻速熄滅至0;其它狀態(tài) LED不亮。為提高精度(如按煲湯的6 檔壓力亮起時, 4 秒/6 有小數(shù)),使用100Hz 時鐘而不是 10Hz 時鐘。實現(xiàn)思路同樣是使用計數(shù)器和case 語句,來判斷當(dāng)

18、前處于何種狀態(tài)并控制燈的亮滅。7)防抖模塊 (myfangdou)為了避免抖動引起的誤操作,需要將所有外部按鍵輸入接入本模塊中,再輸出給其它模塊。本模塊使用的是100Hz 的時鐘。8)頂層文件 (myall)為簡明起見,本部分使用的連接信號為A-X 這 24 個英文字母。另外,為便于識別,每個模塊相互連接的信號的名稱相同。三、仿真波形及波形分析為便于仿真及顯示,所有時鐘頻率均加快1000 倍,如 CLK_100Hz的周期為 10us。另外,將對第一次出現(xiàn)的信號/ 變量進行解釋說明。1控制器模塊( 1)基本功能仿真Choice 是存儲使用者選擇的信號, 0 為初始狀態(tài), 1-3 為米飯口感, 4

19、-8 為營養(yǎng)燉菜單; Time_all 是總時間; Time_ehigh 和 Time_elow 是預(yù)約功能設(shè)置時間的高低位??梢姡?a. 按下 BTN6和 BTN7后 CHOICE變化;b. 按下 BTN0后 BTN6和 BTN7被禁止 ;c. 按下 BTN1后所有計數(shù)器和標(biāo)志位清零。( 2)預(yù)約功能仿真可見: a. 進入預(yù)約時間設(shè)置時BTN6、BTN7、 BTN1被禁止;b.進入預(yù)約時間設(shè)置時預(yù)約時間低位初值是5;文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .c.預(yù)約時間高位 0 時低位可以變到小于4;預(yù)約時間高位變到 0 時低位若小于 5 則變?yōu)?5;進入等待設(shè)

20、置狀態(tài)后 BTN2、 BTN3被禁止;按下 BTN0后 step_1 并沒有變?yōu)?1,而是在 step_e3 標(biāo)志位變?yōu)?1 后才變?yōu)?1;按下 BTN1后所有計數(shù)器和標(biāo)志位被清零。分頻器 &計時器模塊1)分頻器仿真可以清晰地看到實現(xiàn)了分頻功能。2)計時器基本功能仿真Lefttime為倒計時,在 lefttime=11 時 step_2 被賦予 1;在 lefttime=4 時 step_3 被賦予 1;在 lefttime=0 時 step_4 被賦予 1。可見實現(xiàn)了倒數(shù)計時功能和在相應(yīng)時刻標(biāo)志位變化的功能。( 3)計時器預(yù)約功能仿真Lefttime_extra為倒計時,在lefttime_

21、extra=0時 step_e3 被賦予 1, 可見實現(xiàn)了預(yù)約倒數(shù)計時功能及在相應(yīng)時刻標(biāo)志位變化的功能。點陣模塊( 1)基礎(chǔ)功能仿真(例)COL1向點陣紅色二極管輸出,COL2向點陣綠色二極管輸出;ROW向點陣航信號(發(fā)光二極管公共端)輸出。等待設(shè)置階段和升壓時,根據(jù)選擇choice=4 (排骨),點陣顯示黃色PG;保壓時,點陣顯示紅色PG;降壓時,點陣顯示綠色PG;保溫時,點陣顯示紅色B。綜上,使用標(biāo)志位可以控制點陣在不同階段以不同顏色顯示不同的字母。( 2)點陣滾動仿真ROL為循環(huán)左移計數(shù)器,使用CLK_5Hz進行控制。文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持

22、.設(shè)置預(yù)約時間時,點陣顯示紅色YY;并且為滾動顯示。滾動計數(shù)由ROL_COUNT完成。可見實現(xiàn)了點陣滾動顯示的功能。保溫時的滾動同理((1) 基礎(chǔ)功能仿真中,由于是給輸入信號clk_5Hz賦持續(xù)低電平,因此沒有滾動顯示)。數(shù)碼管模塊( 1)基礎(chǔ)功能仿真DISP_TEMP控制當(dāng)前選擇哪個數(shù)碼管顯示,CAT向數(shù)碼管的CAT輸出, TUBE向數(shù)碼管的段碼輸出。可見,等待設(shè)置狀態(tài)時,若還沒有進行選擇,則數(shù)碼管不顯示;進行選擇后,DISP0 和 DISP1 顯示相應(yīng)數(shù)字,DISP2 和 DISP3 不顯示。( 2)預(yù)約功能仿真可見,進行預(yù)約時間設(shè)置時,DISP0、 DISP1 不顯示, DISP2、DI

23、SP3 根據(jù)輸入顯示;進入等待設(shè)置狀態(tài)后,DISP2、DISP3 維持顯示, DISP0、DISP1 根據(jù)輸入顯示。3)倒計時仿真(例)由于預(yù)約倒計時顯示和基本功能倒計時的思路是相同的,因此這里就以基礎(chǔ)功能的倒計時為例。如圖是剩余時間(lefttime)從 8 變?yōu)?5 的過程,可見在剩余時間變化時,數(shù)碼管輸出隨著lefttime的變化而變化,實現(xiàn)了倒計時顯示的功能。蜂鳴器模塊Buzzer 向 beep 輸出。 Ring3_Count 控制當(dāng)前進行發(fā)聲還是靜音,或者是結(jié)束鳴響轉(zhuǎn)向保溫狀態(tài)。蜂鳴器按 500Hz 的頻率改變電平;可見響 3 次,停 3 次之后保溫階段的標(biāo)志位 (step_4) 變

24、為 1;可見各信號能被 BTN1清零。6.LED 模塊LED向 LD0-LD7 輸出??梢?,升壓和保壓階段LED燈在 4s 內(nèi)勻速亮起至最大后保持最大;降壓階段 LED燈在 4s 內(nèi)勻速熄滅至全滅。文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .雖然有少量毛刺,但并沒有影響LED的功能。防抖模塊可見實現(xiàn)了防抖功能,而且可以看出,按鍵輸出的脈寬與使用時鐘的脈寬相同。8總體仿真從 LED的變化情況可以看出,實現(xiàn)了預(yù)約功能和基本功能。且返回等待設(shè)置狀態(tài)后可以準(zhǔn)確準(zhǔn)備下一次功能。四、源程序由于 word 文檔與 quartus的排版有差異,因此在這里對代碼進行了整理,行數(shù)和VH

25、DL中不同。1控制器模塊LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY MYSTEP IS以下將對第一次出現(xiàn)的變量 / 信號進行注釋。PORT(BTN0,BTN1,BTN2,BTN3,BTN4,BTN6,BTN7,STEP_E3:IN BIT;-BTN4 用來控制預(yù)約時間選擇的開始和結(jié)束;-E 表示 extra ,step_e 系列用作預(yù)約功能的標(biāo)志位,0 表示進入預(yù)約選擇, 1 表示結(jié)束預(yù)約選擇, 2 表示預(yù)約后口感 / 菜單選擇的結(jié)束, 3 表示預(yù)約倒計時結(jié)束,進入升壓狀態(tài);CHOICE:BUFFER INTEGER RANGE 0 TO

26、8;-choice表示口感 / 菜單的選擇, 0 表示初始狀態(tài),- 擇, 4-8 為營養(yǎng)燉菜單選擇;STEP_1,STEP_E0,STEP_E1:BUFFER BIT;-step系列用作基礎(chǔ)功能的標(biāo)志位,0 表示進入口感- 未預(yù)約時口感 / 菜單選擇的結(jié)束,進入升壓狀態(tài),1-3 為米飯口感選/ 菜單選擇, 1 表示2 表示進入保壓狀態(tài), 3 表示進入降壓狀態(tài), 4 表示進入保溫狀態(tài);STEP_E2:OUT BIT;TIME_ALL:OUT INTEGER RANGE 0 TO 30;-time_all表示基礎(chǔ)功能的總時間;TIME_EHIGH,TIME_ELOW:BUFFER INTEGER

27、RANGE 0 TO 9);-time_ehigh表示預(yù)約時間的十位,time_elow 表示預(yù)約時間的個位。END MYSTEP;ARCHITECTURE A OF MYSTEP ISSIGNAL STATE1:INTEGER RANGE 0 TO 3;-state1表示口感的選擇,文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .SIGNAL STATE2:INTEGER RANGE 0 TO 5;-state2表示菜單的選擇。實際上按鍵改變的是state1- 過 process ( state1 ,state2 )將選擇整合為一個信號和 state2 ,再通choi

28、ce 的。BEGINPROCESS(BTN0,STEP_E3,BTN1)- 此進程控制等待設(shè)置狀態(tài)的結(jié)束。BEGINIF (BTN1=1) THEN STEP_1=0; STEP_E2=0;-BTN1 為清零信號。ELSIF (STEP_E3=1) THEN STEP_1=1;- 若預(yù)約倒計時結(jié)束,那么進入升壓狀態(tài)ELSIF (BTN0EVENT AND BTN0=1) THEN- 若按下 BTN0,IF (CHOICE/=0) THEN若進行了口感 / 菜單選擇, BTN1按下才有影響,否則不進入升壓狀態(tài)。IF (STEP_E0=0) THEN STEP_1=1;若并未設(shè)置預(yù)約,則直接進入升

29、壓狀態(tài);ELSIF (STEP_E1=1) THEN STEP_E2=1;若設(shè)置了預(yù)約,則進入預(yù)約倒計時狀態(tài)。END IF;END IF;END IF;- 注意到進入下一個elsif的條件是上一個if/elsif的條件 =0。END PROCESS;PROCESS(BTN7,BTN6,BTN1)此進程控制 BTN7(煮米飯口感)的狀態(tài)變化。BEGINIF (BTN1=1 OR BTN6=1) AND STEP_1=0) THEN STATE1=0;- 不光 BTN1要清零,如果在等待設(shè)置狀態(tài)時按下BTN7后又按下 BTN6,那么設(shè)定米飯口感的狀態(tài)要被清零。若按下 BTN7,IF (STEP_E

30、0=0 OR (STEP_E0=1 AND STEP_E1=1) AND STEP_1=0)THEN當(dāng)沒有進行預(yù)約或者進行預(yù)約并且預(yù)約時間選擇已經(jīng)結(jié)束時,并且還在等待設(shè)置狀態(tài)時,按下的 BTN7才能改變 state1 。從 3 變到 1 是為了循環(huán),從 0 變到 1 是為了從初始狀態(tài)(什么都不顯示)變到第一個狀態(tài)。ELSE STATE1=STATE1+1;END IF;END IF;END IF;END PROCESS;文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .PROCESS(BTN6,BTN7,BTN1)- 此進程控制BTN6(營養(yǎng)燉菜單)的狀態(tài)變化。同上一個p

31、rocess 。BEGINIF (BTN1=1 OR BTN7=1) AND STEP_1=0) THEN STATE2=0; ELSIF (BTN6EVENT AND BTN6=1) THENIF (STEP_E0=0 OR (STEP_E0=1 AND STEP_E1=1) AND STEP_1=0)THENIF (STATE2=0 OR STATE2=5) THEN STATE2=1;ELSE STATE2=STATE2+1;END IF;END IF;END IF;END PROCESS;PROCESS(BTN4,BTN1)此進程控制選擇預(yù)約時間的開始和結(jié)束。BEGINIF (BTN1

32、=1) THEN STEP_E0=0; STEP_E1=0;ELSIF (BTN4EVENT AND BTN4=1) THENIF (STEP_E0=1) THEN STEP_E1=1;如果是第一次按下 BTN4,說明是選擇預(yù)約時間開始;ELSIF (CHOICE=0 AND STEP_1=0) THEN STEP_E0=1;如果是第二次按下 BTN4,說明是選擇預(yù)約時間結(jié)束。END IF;END IF;END PROCESS;PROCESS(BTN2,TIME_EHIGH,BTN1,STEP_E0)此進程控制預(yù)約時間的低位變化。BEGINIF (BTN1=1) THEN TIME_ELOW=

33、0;ELSIF (TIME_EHIGH=0 AND TIME_ELOW=4 AND STEP_E0=1) THEN TIME_ELOWCASE TIME_ELOW ISWHEN 0 TO 4= TIME_ELOW TIME_ELOWTIME_ELOWCASE TIME_ELOW ISWHEN 0 TO 8= TIME_ELOWTIME_ELOW=0;END CASE;END CASE;END IF;END IF;END PROCESS;PROCESS(BTN3,BTN1)此進程控制預(yù)約時間的高位變化?;就稀EGINIF (BTN1=1) THEN TIME_EHIGH=0;ELSIF (

34、BTN3EVENT AND BTN3=1) THENIF (STEP_E0=1 AND STEP_E1=0) THENIF (TIME_EHIGH=9) THEN TIME_EHIGH=0;ELSE TIME_EHIGH CASE STATE2 ISWHEN 0= CHOICE=0; TIME_ALL CHOICE=4; TIME_ALL CHOICE=5; TIME_ALL CHOICE=6; TIME_ALL CHOICE=7; TIME_ALL CHOICE=8; TIME_ALL CHOICE=1; TIME_ALL CHOICE=2; TIME_ALL CHOICE=3; TIME_

35、ALL=15;END CASE;END PROCESS;END A;2分頻器 &計時器模塊LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY MYCLK IS文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .PORT(STEP_1,STEP_4,BTN1,STEP_E1,STEP_E2,CLK:IN BIT;CHOICE:IN INTEGER RANGE 0 TO 8;TIME_ALL:IN INTEGER RANGE 0 TO 30;TIME_EHIGH,TIME_ELOW:IN INTEGER RANGE 0 TO 9;C

36、LK_100Hz,CLK_5Hz:BUFFER BIT;LEFTTIME:BUFFER INTEGER RANGE 0 TO 30;-lefttime表示基礎(chǔ)功能剩余時間;LEFTTIME_EXTRA:OUT INTEGER RANGE 0 TO 99;-lefttime_extra表示預(yù)約剩余時間;STEP_2:OUT BIT;STEP_E3:BUFFER BIT;STEP_3,STEP_BUZZER:OUT BIT);- 由于基礎(chǔ)功能時間結(jié)束后要求蜂鳴器響- 用 STEP_BUZZER標(biāo)志這一段時間。3 聲再進入保溫狀態(tài),因此需要END MYCLK;ARCHITECTURE B OF MY

37、CLK ISSIGNAL TIME_EALL:INTEGER RANGE 0 TO 99;- 將預(yù)約設(shè)定時間的高位和低位合起來。SIGNAL CLK_10Hz:BIT;BEGINPROCESS(CLK)使用的是 1KHz的時鐘源。此進程產(chǎn)生 100Hz 的時鐘,它被用在防抖模塊、 LED模塊。VARIABLE CLK_100Hz_COUNT:INTEGER RANGE 0 TO 4;BEGINIF (CLKEVENT AND CLK=1) THENIF (CLK_100Hz_COUNT=4) THEN CLK_100Hz=NOT CLK_100Hz; CLK_100Hz_COUNT:=0;EN

38、D IF;END IF;END PROCESS;PROCESS(CLK_100Hz)此進程產(chǎn)生 10Hz 的時鐘,它被用在本模塊最后的計時進程中。VARIABLE CLK_10Hz_COUNT:INTEGER RANGE 0 TO 4;BEGINIF (CLK_100HzEVENT AND CLK_100Hz=1) THENIF (CLK_10Hz_COUNT=4) THEN CLK_10Hz=NOT CLK_10Hz; CLK_10Hz_COUNT:=0;ELSE CLK_10Hz_COUNT:=CLK_10Hz_COUNT+1;END IF;END IF;END PROCESS;文檔來源為

39、 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .PROCESS(CLK_10Hz)此進程產(chǎn)生 5Hz 的時鐘,它被用在點陣模塊的滾動顯示控制中。BEGINIF (CLK_10HzEVENT AND CLK_10Hz=1) THENCLK_5Hz=NOT CLK_5Hz;END IF;END PROCESS;PROCESS(TIME_EHIGH,TIME_ELOW)BEGINTIME_EALL=TIME_EHIGH*10+TIME_ELOW;END PROCESS;PROCESS(CLK_10Hz,BTN1)計時進程。VARIABLE TIME_ALL_COUNT:INTEGER

40、RANGE 0 TO 310;VARIABLE TIME_ALL_ECOUNT:INTEGER RANGE 0 TO 1000;BEGINIF (BTN1=1) THENTIME_ALL_COUNT:=0;TIME_ALL_ECOUNT:=0;STEP_3=0;STEP_2=0;STEP_BUZZER=0;STEP_E3=0;ELSIF (CLK_10HzEVENT AND CLK_10Hz=1) THENIF (STEP_4=0) THENLEFTTIME10Hz,因此若不賦予這兩個信號初值,就會導(dǎo)致數(shù)碼管在煮燉狀態(tài)開始時顯示0。LEFTTIME_EXTRA=TIME_EALL;IF (ST

41、EP_1=1) THEN- 進入煮燉狀態(tài)。LEFTTIME=4)THEN STEP_2=TIME_ALL)THEN STEP_BUZZER=TIME_EALL) THENSTEP_E3=1;ELSE文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .LEFTTIME_EXTRA=TIME_EALL-TIME_ALL_ECOUNT/10; TIME_ALL_ECOUNT:=TIME_ALL_ECOUNT+1;END IF;END IF;END IF;END IF;END PROCESS;END B;3點陣模塊LIBRARY IEEE;USE IEEE. STD_LOGIC_1

42、164.ALL;ENTITY MYDIANZHEN ISPORT(STEP_1,STEP_2,STEP_3,STEP_4,STEP_E0,STEP_E1,CLK,CLK_5Hz:IN BIT;CHOICE:IN INTEGER RANGE 0 TO 8;ROW,COL1,COL2:OUT BIT_VECTOR (7 DOWNTO 0);-ROW為點陣行輸出, COL1為點陣列紅輸出,COL2為點陣列綠輸出。END MYDIANZHEN;ARCHITECTURE C OF MYDIANZHEN ISSIGNAL ROL_COUNT:INTEGER RANGE 0 TO 7;用于控制點陣循環(huán)滾動。

43、BEGINPROCESS(CLK_5Hz)- 點陣滾動頻率為5Hz。BEGINIF (CLK_5HzEVENT AND CLK_5Hz=1) THENIF (ROL_COUNT=7) THEN ROL_COUNT=0;ELSE ROL_COUNT DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00111000 ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00100100 ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00111000 ROL ROL_COUNT

44、; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00111000 ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00100100 ROL ROL_COUNT; COL2 DZ_COUNT:=0; ROW=;COL1=00111000 ROL ROL_COUNT; COL2 IF (STEP_E0=1 AND STEP_E1=0) THEN:而是進入預(yù)約時間設(shè)置狀態(tài)。CASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1= ROL ROL_COUNT;C

45、OL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1= ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01100110 ROL ROL_COUNT;COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01100110 ROL ROL_COUNT;COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01100110 ROL ROL_COUNT;COL2 DZ_COUNT:=0; ROW=;COL1=01100110 ROL ROL_COUNT;COL2=00000000;END

46、 CASE;ELSE COL1=00000000; COL2 IF (STEP_3=1) THEN煮燉模式選 1(清香米飯),且進入降壓狀態(tài),顯示綠色。CASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ

47、_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01101001; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=0

48、1111001; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01101001; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=01111001; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_

49、COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000;

50、 COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL

51、1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .

52、歡迎下載支持 .COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_CO

53、UNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ

54、_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可編輯 .歡迎下載支持 .COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; RO

55、W=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; CO

56、L2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THEN文檔來源為 :從網(wǎng)絡(luò)收集整理 .word 版本可

57、編輯 .歡迎下載支持 .CASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=000000

58、00; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;

59、COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_CO

60、UNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01101111; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 D

溫馨提示

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

評論

0/150

提交評論