可編程微波爐控制器的設(shè)計
2.4 計數(shù)器counter的設(shè)計
根據(jù)設(shè)計要求,counter為減數(shù)計數(shù)器,其最大計時99:59。因此可以用3個十進(jìn)制計數(shù)器和1個六進(jìn)制計數(shù)器級聯(lián)構(gòu)成。計數(shù)器的工作與狀態(tài)機(jī)的狀態(tài)有關(guān),當(dāng)狀態(tài)機(jī)處在復(fù)位狀態(tài)、測試狀態(tài)、停止?fàn)顟B(tài)、結(jié)束狀態(tài)、檔位狀態(tài)都屬于不工作狀態(tài),只有在計數(shù)狀態(tài)時,才會工作。計數(shù)器如果進(jìn)入了停止?fàn)顟B(tài),會保留當(dāng)前計數(shù)值,當(dāng)再次按下開始鍵時,計數(shù)器由當(dāng)前值開始計數(shù)。
4個計數(shù)器的計數(shù)使能端相連、置數(shù)使能端相連,實現(xiàn)同時計數(shù)和同時置數(shù)。第一個計數(shù)器的計數(shù)脈沖是從1 kHz輸入的,第二個計數(shù)器的計數(shù)脈沖clk與第一個計數(shù)器的進(jìn)位cn相連,第三個計數(shù)器的計數(shù)脈沖clk與第二個計數(shù)器的進(jìn)位相連cn,第四個計數(shù)器的計數(shù)脈沖clk與第三個計數(shù)器的進(jìn)位cn相連,設(shè)計中使用了庫中的一個4輸入與門,所有進(jìn)位輸出都連接到4輸入與門,當(dāng)?shù)褂嫊r結(jié)束,done輸出“1”信號。
2.5 微波加熱信號鎖存器latch_cook的設(shè)計
對于latch_cook的設(shè)計,主要用來鎖存微波信號,數(shù)據(jù)的輸入由狀態(tài)控制得到,當(dāng)啟動檔位1時,st1_en輸出信號為1、st1_en輸出信號為0、st1_en輸出信號為0,1_en與d1相連、 st2_en與d2相連、 st3_en與d3相連,也就是d1d2d3輸入端口的數(shù)據(jù)是啟動檔位1的輸出數(shù)據(jù)“001”。同理,當(dāng)啟動檔2時,d1d2d3輸入端口的數(shù)據(jù)為“010”,啟動檔位3時,d1d2d3輸入端口的數(shù)據(jù)為“011”,其他狀態(tài)時latch_cook模塊設(shè)計中使用了兩個進(jìn)程。第一個進(jìn)程是把輸入微波信號賦給寄存器q,當(dāng)g使能信號為1時,判斷是哪個檔位微波加熱信號后,再對寄存器q進(jìn)行賦值。使能端g是從load_en取得信號值的。輸出load_en為1信號只有復(fù)位、測試、結(jié)束、檔位這幾個工作狀態(tài)。其中只有在檔位狀態(tài)時才能觸發(fā)進(jìn)程,其他都不能。第二個進(jìn)程是對微波信號的鎖存控制,eo與計數(shù)使能端相連,只有在計數(shù)時才能觸發(fā)進(jìn)程,使cook輸出信號值,否則cook輸出高阻抗信號。latch_cook的輸入、輸出端口如圖7所示。
部分關(guān)鍵程序如下:
architecture one of latch_cook is
signal q:std_logic_vector(2 downto 0);
signal s:std_logic_vector(2 downto 0);
begin
s=d1d2d3;
process(s)
begin
if g='1'then
case s is
when001=>q=001;--檔位3
when010=>q=010;--檔位2
when100=>q=100;--檔位1
when others=>null;
end case;
end if;
end process;
process(oe)
begin
if oe='1'then--輸出信號
cook=q;
else
cook=ZZZ;--呈現(xiàn)高阻抗
end if;
end process;
end;
2.6 顯示譯碼器LED的設(shè)計
對于顯示電路,硬件上使用了串行連接的設(shè)計,即每個數(shù)碼管對應(yīng)的引腳都接在一起,通過控制公共端控制相應(yīng)數(shù)碼管的亮滅(共陰極數(shù)碼管的公共端為高電平時,LED不亮;共陽極的公共端為低電平時,LED不亮)。
因此,在顯示模塊里有4個進(jìn)程實現(xiàn)設(shè)計——數(shù)碼管動態(tài)掃描計數(shù)進(jìn)程、數(shù)碼管位動態(tài)掃描進(jìn)程、數(shù)碼管閃爍顯示進(jìn)程、譯碼信號進(jìn)程。顯示模塊工作首先是動態(tài)掃描計數(shù),以1 kHz的掃描頻率進(jìn)行掃描計數(shù)。掃描所得到的計數(shù)值傳遞到數(shù)碼管位動態(tài)掃描進(jìn)程中,控制數(shù)碼管的位選信號,即顯示完第一位后,接著顯示第二位,依此類推,一直顯示到第5位,顯示模塊接著繼續(xù)從第一位顯示,從而實現(xiàn)循環(huán)顯示。因為1 kHz的掃描頻率使6個數(shù)碼管看上去是同時顯示的,實現(xiàn)了計數(shù)結(jié)果和狀態(tài)信息的顯示;譯碼信號進(jìn)程則根據(jù)動態(tài)掃描所得到的信號值,選擇相應(yīng)的顯示數(shù)據(jù),只要計數(shù)器數(shù)據(jù)輸出或狀態(tài)發(fā)生變化,則數(shù)碼管的顯示也發(fā)生相應(yīng)的變化。對于數(shù)碼管閃爍顯示進(jìn)程,當(dāng)ficker_seg=1時,則段信號與1 Hz頻率相與后再送到輸出端去以1 s的頻率閃爍、一亮一暗、全段滅、全段亮,否則正常輸出段信號。顯示模塊的輸入、輸出端口如圖8所示。
3 系統(tǒng)調(diào)試
為了能夠準(zhǔn)確地對所編寫的軟件進(jìn)行調(diào)試,采用EMP240系列開發(fā)板上進(jìn)行系統(tǒng)調(diào)試。圖9是一個模擬操作系統(tǒng)界面。
系統(tǒng)調(diào)試的主要步驟如下:
(1) 在上電復(fù)位時,系統(tǒng)操作界面顯示:00000。微波加熱信號為0。正處于待機(jī)狀態(tài)。
(2)按下TEST測試鍵,5個數(shù)碼管所有段位點亮同時一亮一暗地交替閃爍著。按下復(fù)位鍵,系統(tǒng)返回復(fù)位待機(jī)狀態(tài)。
(3) 右邊有三個檔位控制鍵,在待機(jī)狀態(tài)時,只要按下其中一個鍵,就能對時間進(jìn)行設(shè)定。而三個檔位之間可以相互轉(zhuǎn)換。按下復(fù)位鍵,系統(tǒng)返回復(fù)位待機(jī)狀態(tài)。
(4) 設(shè)定好時間后就可以按下開始鍵,啟動相應(yīng)微波加熱信號,同時進(jìn)行倒計時計數(shù),如果要停止加熱,則按下停止鍵,系統(tǒng)進(jìn)入停止?fàn)顟B(tài),微波加熱信號輸出為0,想要再次加熱,則按回開始鍵。按下復(fù)位鍵,系統(tǒng)返回復(fù)位待機(jī)狀態(tài)。
(5) 當(dāng)計時結(jié)束后,輸出done顯示提示,微波加熱信號輸出為0。按下復(fù)位鍵,系統(tǒng)返回復(fù)位待機(jī)狀態(tài)。
本系統(tǒng)以EMP240T100C5為主要控制芯片,綜合運(yùn)用了Quartus II開發(fā)工具,使用VHDL硬件描述語言,使得系統(tǒng)設(shè)計的硬件功能基本都可以通過軟件編程實現(xiàn),程序經(jīng)過實驗仿真與調(diào)試,各項功能達(dá)到了預(yù)定的設(shè)計指標(biāo)。這種設(shè)計方案不僅使電子系統(tǒng)的設(shè)計以及產(chǎn)品性能的改進(jìn)和擴(kuò)展變得十分簡單,同時它還代替了原有的許多單元電路或單片機(jī)的控制芯片和大量外圍電路,使電子電路設(shè)計更加靈活方便。為實現(xiàn)微波爐以及更多家用電器的信息化和智能化進(jìn)行了較深入的探索和實踐。
參考文獻(xiàn)
[1] 周潤景,圖雅,張麗敏. 基于QuartusII的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計實例[M]. 北京:電子工業(yè)出版社,2007.
[2] 延明,張亦華. 數(shù)字電路EDA技術(shù)入門[M].北京:北京郵電大學(xué)出版社,2006.
[3] 韓團(tuán)軍. 基于FPGA微波爐控制器設(shè)計[J].研究與開發(fā), 2010,29(8):64-67.
[4] 劉昌華. 數(shù)字邏輯EDA設(shè)計與實踐—MAX+plusII與QuartusII雙劍合璧[M].北京:國防工業(yè)出版社,2006.
西門子plc相關(guān)文章:西門子plc視頻教程
分頻器相關(guān)文章:分頻器原理
評論