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