【正文】
R(15 DOWNTO 0):=1010101111001101。因此,該常數(shù)應(yīng)是 8 個分段的 4 位BCD 碼,即“1000 1000 1000 1000”和“1000 1000 1000 1000” ,同理,DONE 的BCD 碼分別為 “1010 1011 1100 1101”以顯示 donE 的常數(shù) DONE。根據(jù)其應(yīng)完成的邏輯功能,本設(shè)計可采用一個進程來完成,但由于三個被選擇的數(shù)據(jù)只有一個來自輸入口,因此另兩個被選擇的數(shù)據(jù)則通過進程的說明部分定義兩個常數(shù)來產(chǎn)生。 END IF。 COOK=39。139。 THEN NEXT_STATE=DONE_MSG。在減法計數(shù)定時狀態(tài),如果輸出 DONE 指示烹調(diào)信息完成,則下一狀態(tài)為顯示信息完成狀態(tài),顯示烹調(diào)完成信息,否則,下一狀態(tài)還是減法計數(shù)定時狀態(tài),COOK 高電平有效,用程序代碼實現(xiàn)如下: WHEN TIMER= IF DONE=39。139。)) THEN NEXT_STATE=TIMER。) AND (DONE=39。 ELSIF ((START=39。 LD_CLK=39。139。139。) THEN NEXT_STATE=LAMP_TEST。在初始狀態(tài),如果按下“TEST” 鍵,下一狀態(tài)即為顯示測試狀態(tài),如果按下“SET_T”鍵,下一狀態(tài)即為時間設(shè)置狀態(tài),如果按下“START” 鍵,即烹調(diào)開始進行時,此時下一狀態(tài)為減法計數(shù)定時狀態(tài),該過程用程序代碼實現(xiàn)如下: WHEN IDLE= IF(TEST=39。 COOK=39。完成信息顯示狀態(tài): WHEN DONE_MSG = LD_DONE=39。 COOK=39。時間溫度設(shè)置狀態(tài):2 WHEN SET_CLOCK= LD_CLK=39。 COOK=39。此時,譯碼顯示測試狀態(tài): WHEN LAMP_TEST= LD_TEST=39。 COOK=39。 LD_CLK=39。 LD_DONE=39。當(dāng)當(dāng)前狀態(tài)為初始狀態(tài)時, LD_TEST=39。 THEN CURR_STATE=NEXT_STATE。EVENT AND CLK=39。 THEN CURR_STATE=IDLE。由此生成的狀態(tài)轉(zhuǎn)換 ASM 圖如圖 所示:2圖 狀態(tài)轉(zhuǎn)換 ASM 圖下面,根據(jù)上述狀態(tài)轉(zhuǎn)換圖和 ASM 圖進行程序設(shè)計,在編寫程序代碼實現(xiàn)狀態(tài)轉(zhuǎn)換控制子模塊過程時,首先,如果 RESET=‘1’,則系統(tǒng)清零,當(dāng)前狀態(tài)為初始狀態(tài),當(dāng)同步時鐘脈沖,當(dāng)前狀態(tài)為下一狀態(tài),用程序代碼表示如下: IF RESET=39。 T E S T amp。 T E S T/ L D _ C L KX / L D _ C L KL D _ D O N E / C O O KR E S E TX / L D _ D O N ED O N E / L D _ D O N ES T A R T amp。其功能子模塊圖如下,圖 所示:控 制 模 塊C o n t r o l數(shù) 據(jù) 裝 載子 模 塊Z Z Q烹 飪 計 時子 模 塊J S Q溫 度 控 制子 模 塊K W Q音 效 控 制子 模 塊A L A R M狀 態(tài) 轉(zhuǎn) 換 控 制子 模 塊K Z Q2 控制模塊功能子模塊圖 狀態(tài)轉(zhuǎn)換控制根據(jù)微波爐工作流程的描述,分析狀態(tài)轉(zhuǎn)換條件及輸出信號,可以得到控制模塊的狀態(tài)轉(zhuǎn)換圖。溫度控制子模塊,其功能是在食物烹飪過程中進行溫度測定和控制,它同時實現(xiàn)火力控制。數(shù)據(jù)裝載子模塊,其功能是根據(jù)按鍵信號設(shè)置定時時間、最高溫度、火力檔位,烹調(diào)屬性設(shè)置以及烹調(diào)數(shù)據(jù)信息裝載??刂颇K采用 FPGA 芯片作為主控芯片,其涉及到數(shù)據(jù)的裝載、狀態(tài)控制轉(zhuǎn)換、烹飪計時、溫度控制、火力控制、音效提示等。生成相應(yīng)的電路符號,如圖 所示:SC_CLKKEY_DRV[3..0]KEY_IN[3..0]OUT_CLKOUT_DATA[15..0]key_decodeinst1圖 鍵盤譯碼電路符號 輸入模塊的實現(xiàn)綜合上述分析,對該鍵盤輸入模塊進行完整設(shè)計,以下是該輸入模塊實現(xiàn)的組成原理圖,如圖 所示:VCCCLK INPUTVCCKEY_IN[3..0] INPUTDATA[15..0]OUTPUTCLKOUTPUTCLK CLK_SCANCLK_DEBclk_geninstDEB_CLKKEY_IN[3..0]KEY_OUT[3..0]debouncinginst4SCAN_CLK KEY_DRV[3..0]key_scaninst5KEY_DRV[3..0]SC_CLKKEY_IN[3..0]OUT_CLKOUT_DATA[15..0]key_decodeinst1圖 輸入模塊內(nèi)部原理圖其中,CLK 為系統(tǒng)時鐘脈沖,KEY_IN[3..0] 為按鍵輸入, DATA[15..0]為2按鍵輸入譯碼后的輸出值,它為控制模塊提供數(shù)據(jù)輸入。 WHEN OTHERS = K_VALUE=K_VALUE。 WHEN 01111011= K_VALUE=14。 WHEN 01111110= K_VALUE=12。 WHEN 10111011= K_VALUE=10。 WHEN 10111110= K_VALUE=8。 WHEN 11011011= K_VALUE=6。 WHEN 11011110= K_VALUE=4。 WHEN 11101011= K_VALUE=2。 THEN CASE Z IS 數(shù)字按鍵譯碼電路 WHEN 11101110= K_VALUE=0。EVENT AND SC_CLK=39。 KEY_IN。生成相應(yīng)的電路符號,如圖 所示:DEB_CLKKEY_IN[3..0]KEY_OUT[3..0]debouncinginst4圖 按鍵消抖電路符號 鍵盤譯碼通過一個譯碼程序,將鍵盤掃描后的值根據(jù)需要設(shè)定成相應(yīng)的按鍵。 KEY_SCAN=1110 WHEN C_KEYBOARD=0 ELSE2 1101 WHEN C_KEYBOARD=1 ELSE 1011 WHEN C_KEYBOARD=2 ELSE 0111 WHEN C_KEYBOARD=3 ELSE 1111。 去抖時鐘信號 C_KEYBOARD=Q(9 DOWN TO 8)。 END IF。139。綜合上述分析,該鍵盤掃描子模塊關(guān)鍵代碼如下:COUNTER:BLOCK IS BEGIN PROCESS(CLK)IS BEGIN IF(CLK39。在實際中,因為一般人的按鍵速度至多是10 次/ 秒,亦即一次按鍵時間是 100ms,所以按下的時間可估算為 50ms。如果計數(shù)器的值達(dá)到某預(yù)定值 N 時,則表示連續(xù) N 次讀到同一掃描碼,于是可認(rèn)為已經(jīng)讀到了有效的按鍵。如果當(dāng)在一段時間內(nèi)都連續(xù)多次讀到同一個非空(即有鍵按下)的掃描碼,可以認(rèn)為這時按鍵已處于穩(wěn)定狀態(tài),這時得到的掃描碼就代表了一個鍵盤動作,抖動的影響已經(jīng)被剔除。完成程序設(shè)計,生成相應(yīng)的電路符號,如圖 所示:2SCAN_CLK KEY_DRV[3..0]key_scaninst5圖 鍵盤掃描電路符號按鍵消抖電路當(dāng)一個按鍵按下和釋放時,對應(yīng)信號線電平的變化有一個不穩(wěn)定期,即所謂“抖動”,這是因為多數(shù)開關(guān)的閉合和斷開都有一個過程,并不是即刻實現(xiàn)的。行掃描信號為 KEY_DRV[3..0],列輸入信號為KEY_IN[3..0],與按鍵的對應(yīng)關(guān)系如表 所示。其方法是依次給行線送低電平,檢查列線的輸入。行列式矩陣鍵盤原理:按鍵設(shè)置在行列線的交叉點,行列線分別連接到按鍵的兩端。這里系統(tǒng)時鐘頻率取50MHZ,掃描時鐘頻率取 100KHZ,消抖時鐘頻率取 200KHZ。 系統(tǒng)時鐘脈沖CLK_SCAN : OUT STD_LOGIC。時序產(chǎn)生電路本時序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時鐘脈沖、掃描鍵盤時鐘、鍵盤消抖動時鐘。其中鍵盤掃描又涉及到時序產(chǎn)生、按鍵掃描和消除抖動。矩陣鍵盤是一種常見的輸入裝置,在日常生活中,矩陣鍵盤在計算機、電話、手機、微波爐等格式電子產(chǎn)品上已經(jīng)被廣泛應(yīng)用,計算機鍵盤通常采用行列掃描法來確定所按下鍵的行列位置。烹飪結(jié)束后,系統(tǒng)會發(fā)出音效提示,同時,系統(tǒng)自動進入復(fù)位狀態(tài)。系統(tǒng)工作時,首先通過鍵盤輸入數(shù)據(jù),比如,按 烹調(diào) 、 烘烤 、 解凍 鍵選擇系統(tǒng)預(yù)置方案,或者按時間設(shè)置鍵設(shè)置時間,按溫度設(shè)定鍵設(shè)置溫度,按火力選擇鍵選擇火力,結(jié)合 10Min、 1Min/100℃/High、 10Sec/10℃/Middle、 1Sec/1℃/Low 按鍵進行自定義方案設(shè)置,設(shè)置結(jié)束以后,表示數(shù)據(jù)裝載完成,按 START 鍵后系統(tǒng)進入烹調(diào)狀態(tài)。此時,8 個數(shù)碼管上會顯示“88888888”的信息,所有指示燈亮。8 個狀態(tài)提示指示燈分別表示:工作狀態(tài)、開門指示、測試、烹調(diào)、烘烤、解凍、意外報警、完成提示。其中,用七段數(shù)碼管作為時間、溫度、火力大小顯示,用發(fā)光二極管作為狀態(tài)提示顯示。2 顯示模塊顯示部分采用七段數(shù)碼管和發(fā)光二極管來實現(xiàn)。它通過輸入模塊提供的按鍵輸入實現(xiàn)數(shù)據(jù)信息裝載處理,并將處理結(jié)果通過顯示模塊顯示出來。輸入模塊包括時鐘脈沖電路、鍵盤掃描電路、消枓同步電路和鍵盤譯碼電路,通過該模塊將掃描得到的按鍵值送到控制模塊。以下是該系統(tǒng)功能模塊圖,如圖 所示2圖 系統(tǒng)功能模塊圖 輸入模塊輸入部分一般采用鍵盤或旋鈕作為輸入,由于實驗室已有設(shè)備限制,本系統(tǒng)采用鍵盤進行輸入設(shè)置,即由一個 4*4 矩陣鍵盤實現(xiàn)數(shù)據(jù)輸入控制。控制部分是本系統(tǒng)的核心,它接收用戶的輸入,完成相應(yīng)的控制邏輯功能,并將當(dāng)前的工作狀態(tài)等信息送到顯示部分。該燈亮?xí)r,表示出現(xiàn)意外,微波爐暫停工作;? 解凍:該燈亮?xí)r,表示工作在解凍模式下;? 烘烤:該燈亮?xí)r,表示工作在烘烤模式下;? 烹調(diào):該燈亮?xí)r,表示工作在烹調(diào)模式下;? 測試:該燈亮?xí)r,表示微波爐處于測試狀態(tài);? 開門指示:指示微波爐的門的狀態(tài),門開時燈亮,門關(guān)時燈滅;? 工作狀態(tài):指示微波爐處于工作狀態(tài),工作時燈亮,不工作時燈滅; 系統(tǒng)功能模塊描述本系統(tǒng)主要由輸入、控制和顯示部分組成。指示燈功能如下:? 完成提示:提示微波爐工作完成。解凍 :快速設(shè)定當(dāng)前烹飪時間和火力到適合解凍的值。烹調(diào) :快速設(shè)定當(dāng)前烹飪時間和火力到適合烹調(diào)的值。時間設(shè)置 :設(shè)置系統(tǒng)工作時間。溫度設(shè)定 :設(shè)置加熱的溫度最高值?;鹆υO(shè)定 :用于設(shè)定系統(tǒng)火力檔位。1 0 M i n1 M i n/ 1 0 0 ℃/ H i g h1 0 S e c/ 1 0 ℃/ M i d d l e1 S e c/ 1 ℃/ L o w▲ / + 1▼ / 1烹 調(diào)復(fù) 位R E S E T暫 停 取 消C a n c e l測 試T E S T火 力 設(shè) 定P o w e r溫 度 設(shè) 定T e m p e r at u r e時 間 設(shè) 置S E T _ T烘 烤 解 凍開 始 確 認(rèn)S T A R TF P G A控制芯片工作狀態(tài)暫停測試烹調(diào)烘烤解凍意外報警完成提示顯 示 時 間 顯 示 溫 度火 力指 示 系統(tǒng)外觀布局暫停/取消 :用于暫停食物烹飪過程或者取消食物烹飪前的參數(shù)設(shè)置過程。比如設(shè)定烹飪時間為 12 分 59 秒,只需要選擇 10Min 鍵,然后按 ▲/+1 鍵“1”次;選擇