軟件:Quartus
語言:Verilog
代碼功能:
微波爐控制器
用芯片Altera Cyclone IV FPGA作為控制芯片,實現(xiàn)時間設置、溫度設定、火力選擇、聲音提示,在硬件組成上,涉及到電源供電、按鍵輸入、數碼管顯示、指示燈提示等。
由按鍵控制實現(xiàn)功能的轉換,7個LED提示指示燈,4位LED數碼管顯示加熱倒計時,3位LED數碼管顯示當前溫度值,1位LED數碼管顯示當前火力檔位。
各個按鍵的功能效果:
(1)暫停:在食物烹飪過程中,若按下該鍵,則停止食物烹飪,進入待機狀態(tài)。
(2)時間設定:設置系統(tǒng)工作時間,按下該鍵,可以設置時間,每按一下增加30秒
(3)溫度設定:設置加熱的最高溫度,按下該鍵,可以設置時間,每按一下增加10°C
(4)火力設定:設置系統(tǒng)工作的火力擋位,按下該鍵,可以在低火、中火、高火三個檔位之中切換。
(5)烹調:快速設定當前烹飪時間和火力到適合烹調的值。
(6)烘烤:快速設定當前烹飪時間和火力到適合烘烤的值。
(7)解凍:快速設定當前烹飪時間和火力到適合解凍的值。
(8)開始/確認:在選擇烹調、烘烤、解凍或者設置時間、設定溫度、選擇火力等烹飪參數后,按下此鍵,開始進行烹飪.
指示燈功能如下:
(1)完成提示:提示微波爐工作完成.該燈亮時,表示烹飪完成;
(2)意外報警:提示意外情況發(fā)生.該燈亮時,表示出現(xiàn)意外,微波爐暫停工作;
(3)解凍:該燈亮時,表示工作在解凍模式下;
(4)烘烤:該燈亮時,表示工作在烘烤模式下;
(5)烹調:該燈亮時,表示工作在烹調模式下;
(6)工作狀態(tài):指示微波爐處于工作狀態(tài),工作時燈亮,不工作時燈滅;
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設計文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 仿真文件(testbench)
6. 仿真圖
整體仿真圖
分頻模塊
控制模塊
溫度設置模塊
時間設置模塊
顯示模塊
部分代碼展示:
//微波爐頂層模塊 module?microwave_top( ???input????????clk,//時鐘 ???input????????reset_key,//復位按鍵 ???input????????time_key,//設置時間 input????????temp_key,//設置溫度 ???input????????fire_key,//設置火力 ???input????????start_key,//啟動 ???input????????stop_key,//暫停 ???input????????key_1,//烹調 ???input????????key_2,//烘烤 ???input????????key_3,//解凍 ??? ???output???????bell,//結束提示(聲音) output???????end_led???,//led完成 ???output???????alarm_led?,//led報警 output???????led_1?????,//led烹調 output???????led_2?????,//led烘烤 output???????led_3?????,//led解凍 output???????work_led??,//led工作狀態(tài) ???output?[7:0]?min_ten_HEX,//數碼管顯示分鐘十位 ???output?[7:0]?min_one_HEX,//數碼管顯示分鐘個位 ???output?[7:0]?sec_ten_HEX,//數碼管顯示分鐘十位 ???output?[7:0]?sec_one_HEX,//數碼管顯示分鐘個位 ???output?[7:0]?fire_HEX,//數碼管顯示火力指示 ???output?[7:0]?temp_h_HEX,//數碼管顯示溫度百位 ???output?[7:0]?temp_t_HEX,//數碼管顯示溫度十位 ???output?[7:0]?temp_o_HEX//數碼管顯示溫度個位 ); ??? ???wire?[2:0]???fire_led;//火力指示燈? ???wire?[2:0]???state_out; ???wire?[3:0]???minute_ten_display; ???wire?[3:0]???minute_one_display; ???wire?[3:0]???second_ten_display; ???wire?[3:0]???second_one_display; ???wire?????????clk_div;//1Hz ???wire?[3:0]?temp_h;//溫度百位 ???wire?[3:0]?temp_t;//溫度十位 ???wire?[3:0]?temp_o;?//溫度個位 //分頻模塊 div_clk?i_div_clk( .clk????(clk),? .clk_1Hz(clk_div) ); ????//狀態(tài)控制模塊 ???state_ctrl?i_state_ctrl( ???.clk(clk_div),? ???.reset_key(reset_key),? ???.start_key(start_key),? ???.stop_key(stop_key),? ???.minute_ten(minute_ten_display),? ???.minute_one(minute_one_display),? ???.second_ten(second_ten_display),? ???.second_one(second_one_display),? ???.bell(bell),? ???.state_out(state_out), ???.fire_key(fire_key),? ???.fire_led(fire_led), ???.key_1(key_1),//烹調 ???.key_2(key_2),//烘烤 ???.key_3(key_3),//解凍 .end_led???(end_led),//led完成 ???.alarm_led?(alarm_led),//led報警 .led_1?????(led_1),//led烹調 .led_2?????(led_2),//led烘烤 .led_3?????(led_3),//led解凍 .work_led??(work_led)//led工作狀態(tài) ???); //時間控制模塊 ???time_set?i_time_set( ???.clk(clk_div),? ???.reset_key(reset_key),? ???.key_1(key_1),//烹調 ???.key_2(key_2),//烘烤 ???.key_3(key_3),//解凍 ???.time_key(time_key),? ???.state_out(state_out),? ???.minute_ten_display(minute_ten_display),? ???.minute_one_display(minute_one_display),? ???.second_ten_display(second_ten_display),? ???.second_one_display(second_one_display) ???); //溫度控制模塊 temp_set?i_temp_set( ???.?clk??????(clk_div), ???.?reset_key(reset_key), ???.?temp_key?(temp_key),//溫度設置鍵 ???.?temp_h(temp_h),//溫度百位 ???.?temp_t(temp_t),//溫度十位 ???.?temp_o(temp_o)?//溫度個位 );? ????//數碼管顯示模塊 ???display?i_display( ???.?temp_h(temp_h),//溫度百位 ???.?temp_t(temp_t),//溫度十位 ???.?temp_o(temp_o),?//溫度個位 .?fire_led(fire_led), ???.minute_ten_display(minute_ten_display),? ???.minute_one_display(minute_one_display),? ???.second_ten_display(second_ten_display),? ???.second_one_display(second_one_display),? ???.min_ten_HEX(min_ten_HEX),? ???.min_one_HEX(min_one_HEX),? ???.sec_ten_HEX(sec_ten_HEX),? ???.sec_one_HEX(sec_one_HEX), .?fire_HEX(fire_HEX), ???.?temp_h_HEX(temp_h_HEX),//數碼管顯示溫度百位 ???.?temp_t_HEX(temp_t_HEX),//數碼管顯示溫度十位 ???.?temp_o_HEX(temp_o_HEX)//數碼管顯示溫度個位 ???); ??? endmodule
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=490