基于VHDL的空調(diào)控制器設(shè)計(jì)_第1頁(yè)
基于VHDL的空調(diào)控制器設(shè)計(jì)_第2頁(yè)
基于VHDL的空調(diào)控制器設(shè)計(jì)_第3頁(yè)
基于VHDL的空調(diào)控制器設(shè)計(jì)_第4頁(yè)
基于VHDL的空調(diào)控制器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)字系統(tǒng)設(shè)計(jì)與硬件描述語(yǔ)言期末考試作業(yè)題目: 空調(diào)控制器的設(shè)計(jì) 學(xué)院: 電子信息工程學(xué)院 專業(yè): 物聯(lián)網(wǎng)工程 學(xué)號(hào): 3014204328 姓名: 劉涵凱 2016-12-14一、 選題設(shè)計(jì)描述1. 功能介紹設(shè)計(jì)內(nèi)容為空調(diào)控制器,可實(shí)現(xiàn)空調(diào)的開(kāi)關(guān)、模式切換、溫度控制、風(fēng)速控制、定時(shí)設(shè)置。模式默認(rèn)為制冷,可切換為制熱、除濕。溫度默認(rèn)為26度,可按“溫度+”、“溫度-”調(diào)節(jié),每次調(diào)節(jié)1度,最高30度,最低16度。風(fēng)速默認(rèn)為中擋,可按“風(fēng)速+”、“風(fēng)速-”切換為低擋、高擋、睡眠模式。睡眠模式中,在低擋與停止間循環(huán)。定時(shí)設(shè)置默認(rèn)關(guān)閉,開(kāi)啟時(shí)默認(rèn)30分鐘,可按“定時(shí)+”、“定時(shí)-”調(diào)節(jié),每次調(diào)節(jié)30分鐘

2、,最高24小時(shí),最低30分鐘。定時(shí)倒計(jì)時(shí)結(jié)束時(shí),關(guān)閉空調(diào)。定時(shí)開(kāi)啟時(shí),可按“取消定時(shí)”關(guān)閉定時(shí)。空調(diào)控制器模擬界面如下:2. 算法簡(jiǎn)介1)空調(diào)控制器 其輸入與輸出在主程序kt中已標(biāo)明,在此不做介紹。2)單脈沖模塊這是非常重要以及核心的模塊。當(dāng)a產(chǎn)生一個(gè)上升沿時(shí),輸出一個(gè)單脈沖,脈沖將持續(xù)到經(jīng)過(guò)一個(gè)clk上升沿后的clk下降沿。3)開(kāi)關(guān)模塊a連接空調(diào)的開(kāi)關(guān),b連接開(kāi)關(guān)控制模塊的輸出,c為空調(diào)各工作模塊的開(kāi)關(guān)信號(hào),d連接數(shù)碼管顯示開(kāi)關(guān)狀況。當(dāng)定時(shí)時(shí)間結(jié)束,b輸入一個(gè)單脈沖,空調(diào)關(guān)閉。4)開(kāi)關(guān)控制模塊此模塊的作用是保證開(kāi)關(guān)模塊能夠正常工作。開(kāi)關(guān)打開(kāi)時(shí),a輸入一個(gè)單脈沖,重置c。b連接定時(shí)模塊,當(dāng)定時(shí)

3、結(jié)束,b輸入一個(gè)單脈沖,使c輸出1,使開(kāi)關(guān)模塊輸出05)溫度模塊a連接開(kāi)關(guān)模塊,b為溫度+1,c為溫度-1,輸出為溫度的十位和個(gè)位。6)風(fēng)速模塊a連接開(kāi)關(guān)模塊,b為風(fēng)速+1,c為風(fēng)速-1。di,zhong,gao為抵擋、中擋、高擋的狀態(tài)(無(wú)睡眠模式,因?yàn)樗吣J绞堑謸?停止模式)。其他連接數(shù)碼管,顯示睡眠模式、抵擋、中擋、高擋的狀態(tài)。7)模式模塊b連接開(kāi)關(guān)模塊,c為切換模式,輸出類似于模式模塊。8)定時(shí)模塊a連接開(kāi)關(guān)模塊,b為定時(shí)模塊開(kāi)啟,c為取消定時(shí),up、down為定時(shí)時(shí)間+、-。clk1為空調(diào)時(shí)鐘,clk2為模擬的倒計(jì)時(shí)時(shí)鐘(周期1分鐘)。clk2周期遠(yuǎn)大于clk1。當(dāng)時(shí)間倒計(jì)時(shí)結(jié)束時(shí),

4、sw1輸出1,使開(kāi)關(guān)控制模塊控制開(kāi)關(guān)關(guān)閉。其他輸出連接倒計(jì)時(shí)模塊。9)倒計(jì)時(shí)模塊a連接開(kāi)關(guān)模塊,clk連接定時(shí)模塊的clk2,輸入時(shí)間發(fā)生變化時(shí),重新倒計(jì)時(shí)。倒計(jì)時(shí)結(jié)束時(shí),finish輸出1,使定時(shí)模塊的sw1輸出1。10)數(shù)碼管模塊a連接開(kāi)關(guān)模塊,此為7段譯碼器。11)計(jì)數(shù)器模塊此為六位計(jì)數(shù)器。a連接睡眠模式開(kāi)關(guān),rst為睡眠模式打開(kāi)時(shí)的重置信號(hào),每6次輸出一次1。二、 程序源代碼及說(shuō)明1)空調(diào)控制器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY kt IS PORT(swit

5、chin,modeset,fanup,fandown,tempup,tempdown,timerop,timercancel,timerup,timerdown,clk1,clk2: IN STD_LOGIC; -電源開(kāi)關(guān)、模式切換、風(fēng)速+、風(fēng)速-、溫度+、溫度-、定時(shí)、取消定時(shí)、定時(shí)+、定時(shí)-、時(shí)鐘信號(hào)、倒計(jì)時(shí)時(shí)鐘信號(hào) cools,heats,drys,dis,zhongs,gaos: OUT STD_LOGIC; -通向空調(diào)內(nèi)部的制冷、制熱、除濕、抵擋、中擋、高擋狀態(tài)輸出 switchstate,tempd,temps,coolstate,heatstate,drystate,distat

6、e,zhongstate,gaostate,sleepstate,hdstate,hsstate,tdstate,tsstate: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -由數(shù)碼管顯示的開(kāi)關(guān)、溫度、制冷、制熱、除濕、抵擋、中擋、高擋、睡眠狀態(tài)和倒計(jì)時(shí)剩余時(shí)間END ENTITY kt;ARCHITECTURE behave OF kt ISCOMPONENT switch -開(kāi)關(guān)模塊 PORT(a,b,clk: IN STD_LOGIC; -b受定時(shí)模塊的控制,時(shí)間減為0時(shí),關(guān)閉開(kāi)關(guān) c: OUT STD_LOGIC; d: OUT STD_LOGIC_VECTO

7、R(3 DOWNTO 0); -輸送給數(shù)碼管 END COMPONENT switch; COMPONENT control -開(kāi)關(guān)控制模塊 PORT(a,b,clk: IN STD_LOGIC; c: OUT STD_LOGIC); END COMPONENT control; COMPONENT fan -風(fēng)速模塊 PORT(a,b,c,clk: IN STD_LOGIC; di,zhong,gao: OUT STD_LOGIC; -由于high和low是敏感詞匯,所以此處用拼音,可以看到此處沒(méi)有睡眠模式,是因?yàn)樗吣J狡鋵?shí)是抵擋-停止模式 ssleep,sdi,szhong,sgao:

8、OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -不同于發(fā)給空調(diào)內(nèi)部的信號(hào),睡眠模式的狀態(tài)應(yīng)顯示在外 END COMPONENT fan; COMPONENT BCD7 -數(shù)碼管模塊 PORT(a: IN STD_LOGIC; b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(0 TO 6) ); END COMPONENT BCD7; COMPONENT pulse -單脈沖模塊 PORT(a,clk: IN STD_LOGIC; b: OUT STD_LOGIC); END COMPONENT pu

9、lse; COMPONENT temp -溫度模塊 PORT(a,b,c,clk: IN STD_LOGIC; -a控制開(kāi)關(guān),b提高1度,c降低1度 temp1,temp2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT temp; COMPONENT timer -定時(shí)模塊 PORT(a,b,c,up,down,clk1,clk2: IN STD_LOGIC; sw1: OUT STD_LOGIC; -總開(kāi)關(guān)關(guān)閉信號(hào) oh1,oh2,ot1,ot2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -輸送給數(shù)碼管顯示剩余時(shí)

10、間 END COMPONENT timer; COMPONENT mode PORT(b,c,clk: IN STD_LOGIC; cool,heat,dry: OUT STD_LOGIC; cool1,heat1,dry1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT mode;SIGNAL swa,swb,swc:STD_LOGIC;SIGNAL sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7_6,sigBCD7_7,sigBCD7_8,sigBCD7_9,sigBCD7

11、_10,sigBCD7_11,sigBCD7_12,sigBCD7_13,sigBCD7_14:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1: switch PORT MAP(a=switchin,b=swb,c=swa,clk=clk1,d=sigBCD7_1); U2: control PORT MAP(a=switchin,b=swc,clk=clk1,c=swb);U3: fan PORT MAP(a=swa,b=fanup,c=fandown,clk=clk1,di=dis,zhong=zhongs,gao=gaos,ssleep=sigBCD7_2,sd

12、i=sigBCD7_3,szhong=sigBCD7_4,sgao=sigBCD7_5); U4: temp PORT MAP(a=swa,b=tempup,c=tempdown,clk=clk1,temp1=sigBCD7_6,temp2=sigBCD7_7); U5: timer PORT MAP(a=swa,clk1=clk1,clk2=clk2,b=timerop,c=timercancel,up=timerup,down=timerdown,sw1=swc,oh1=sigBCD7_8,oh2=sigBCD7_9,ot1=sigBCD7_10,ot2=sigBCD7_11); U6:

13、mode PORT MAP(b=swa,c=modeset,clk=clk1,cool=cools,heat=heats,dry=drys,cool1=sigBCD7_12,heat1=sigBCD7_13,dry1=sigBCD7_14); U7: BCD7 PORT MAP(a=swa,b=sigBCD7_1,q=switchstate); U8: BCD7 PORT MAP(a=swa,b=sigBCD7_2,q=sleepstate); U9: BCD7 PORT MAP(a=swa,b=sigBCD7_3,q=distate); U10: BCD7 PORT MAP(a=swa,b=

14、sigBCD7_4,q=zhongstate); U11: BCD7 PORT MAP(a=swa,b=sigBCD7_5,q=gaostate);U12: BCD7 PORT MAP(a=swa,b=sigBCD7_6,q=tempd); U13: BCD7 PORT MAP(a=swa,b=sigBCD7_7,q=temps); U14: BCD7 PORT MAP(a=swa,b=sigBCD7_8,q=hdstate); U15: BCD7 PORT MAP(a=swa,b=sigBCD7_9,q=hsstate); U16: BCD7 PORT MAP(a=swa,b=sigBCD7

15、_10,q=tdstate);U17: BCD7 PORT MAP(a=swa,b=sigBCD7_11,q=tsstate); U18: BCD7 PORT MAP(a=swa,b=sigBCD7_12,q=coolstate); U19: BCD7 PORT MAP(a=swa,b=sigBCD7_13,q=heatstate); U20: BCD7 PORT MAP(a=swa,b=sigBCD7_14,q=drystate); PROCESS(clk1)BEGINEND PROCESS;END ARCHITECTURE behave;2)單脈沖模塊LIBRARY IEEE ;USE I

16、EEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY pulse IS -單脈沖模塊 PORT(a,clk: IN STD_LOGIC; b: OUT STD_LOGIC);END ENTITY pulse;ARCHITECTURE behave OF pulse ISSIGNAL d:STD_LOGIC:=0;SIGNAL f:STD_LOGIC:=0;SIGNAL g:STD_LOGIC:=0; -確保經(jīng)過(guò)第一個(gè)clk上升沿時(shí)輸出1SIGNAL h:STD_LOGIC:=0; -同上BEGINPROCESS(a,clk

17、) BEGINIF(clkEVENT AND clk=1)THENIF(f=1)THENg=1;ELSE g=0;END IF;END IF;END PROCESS;PROCESS(a,clk) BEGINIF(clkEVENT AND clk=0)THENIF(a=1)THENIF(f=1)THENIF(g=1)THEN d=1;ELSE d=0;END IF;ELSE d=1;END IF;ELSE d=0; -a為0時(shí),重置此單脈沖發(fā)生器END IF;END IF;END PROCESS;PROCESS(d) BEGINIF(a=1)THENIF(d=1)THENf=0; ELSE f=

18、1;END IF;ELSE f=0;END IF;ba,b=p1,clk=clk); U2: pulse PORT MAP(a=b,b=p2,clk=clk); PROCESS(a,b,clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(p1=1)THEN -空調(diào)開(kāi)關(guān)打開(kāi) c=1;d=0001; END IF; IF(p2=1)THEN -時(shí)間減為0時(shí),定時(shí)模塊返回1,關(guān)閉開(kāi)關(guān) c=0;da,b=p1,clk=clk); U2: pulse PORT MAP(a=b,b=p2,clk=clk); PROCESS(a,b,clk) BEGIN IF(clkEVENT

19、 AND clk=1)THEN IF(p1=1)THEN -空調(diào)開(kāi)關(guān)打開(kāi) c=0; END IF; IF(p2=1)THEN -時(shí)間減為0時(shí),定時(shí)模塊返回1,關(guān)閉開(kāi)關(guān) cb,b=p1,clk=clk); U2: pulse PORT MAP(a=c,b=p2,clk=clk); U3: pulse PORT MAP(a=a,b=p3,clk=clk); PROCESS(a,clk)BEGIN IF(clkEVENT AND clk=1)THEN IF(p3=1)THEN -開(kāi)關(guān)打開(kāi)時(shí),默認(rèn)26度 t1=0010;t2=0110;ELSIF(a=0)THEN t1=0000;t2=0000;EN

20、D IF; IF(a=1)THENIF(p1=1)THEN -判斷溫度+按鍵按下IF(t1=0011)THEN t1=0011;t2=0000; ELSIF(t2=1001)THENt1=t1+1; t2=0000; ELSE t2=t2+1; END IF; END IF; IF(p2=1)THEN -判斷溫度-按鍵按下 IF(t1=0001)THEN IF(t2=0110)THEN t1=0001;t2=0110;ELSE t2=t2-1; END IF; ELSIF(t2=0000)THEN t1=t1-1; t2=1001; ELSE t2=t2-1; END IF; END IF;E

21、LSE t1=0000;t2=0000;END IF; END IF;temp1=t1;temp2b,b=p1,clk=clk); U2: pulse PORT MAP(a=c,b=p2,clk=clk); U3: pulse PORT MAP(a=a,b=p3,clk=clk); U4: pulse PORT MAP(a=rst1,b=rst2,clk=clk); U5: count6 PORT MAP(a=op,rst=rst2,clk=clk,o=change); PROCESS(a,clk)BEGIN IF(clkEVENT AND clk=1)THEN op1=op2;IF(p3=1

22、)THEN -開(kāi)關(guān)打開(kāi)時(shí),默認(rèn)中擋 e=011;ELSIF(a=0)THEN e=000;END IF; IF(a=1)THENIF(p1=1)THEN -判斷風(fēng)速+按鍵按下IF(e=100)THEN -高擋時(shí)按下,則切換為睡眠 e=001;op1=1; ELSE e=e+1;op1=0; END IF; END IF; IF(p2=1)THEN -判斷風(fēng)速-按鍵按下 IF(e=001)THEN -睡眠時(shí)按下,則切換為高擋 e=100;op1=0;ELSIF(e=010)THENe=e-1;op1=1;ELSE e=e-1;op1=0; END IF; END IF;ELSE e=000;EN

23、D IF; END IF;END PROCESS;PROCESS(change)BEGINIF(changeEVENT AND change=1)THENIF(m=1)THENm=0;ELSE m=1;END IF;END IF;END PROCESS; PROCESS(e)BEGINop2=op1;IF(e=001)THEN -睡眠時(shí)的低擋-停止循環(huán)IF(op2EVENT AND op2=1)THENop=1;rst1=1;END IF;op di=1;zhong=0;gao=0;ssleep=0001;sdi=0000;szhong=0000;sgao di=0;zhong=0;gao=0

24、;ssleep=0001;sdi=0000;szhong=0000;sgao=0000; END CASE;ELSEop=0;-關(guān)閉睡眠模式 IF(e=010)THEN di=1;zhong=0;gao=0;ssleep=0000;sdi=0001;szhong=0000;sgao=0000; ELSIF(e=011)THEN di=0;zhong=1;gao=0;ssleep=0000;sdi=0000;szhong=0001;sgao=0000; ELSIF(e=100)THEN di=0;zhong=0;gao=1;ssleep=0000;sdi=0000;szhong=0000;sga

25、o=0001; ELSIF(e=000)THEN di=0;zhong=0;gao=0;ssleep=0000;sdi=0000;szhong=0000;sgaob,b=p1,clk=clk); U2: pulse PORT MAP(a=c,b=p2,clk=clk); PROCESS(b,c,p1,p2,clk) -按鍵選擇模式BEGINIF(clkEVENT AND clk=1)THENIF(b=1)THENIF(p1=1)THEN -默認(rèn)制冷模式e=01;END IF;IF(p2=1)THENIF(e=11)THENe=01;ELSE e=e+1;END IF;END IF;ELSE e

26、 cool=1;heat=0;dry=0;cool1=0001;heat1=0000;dry1 cool=0;heat=1;dry=0;cool1=0000;heat1=0001;dry1 cool=0;heat=0;dry=1;cool1=0000;heat1=0000;dry1 cool=0;heat=0;dry=0;cool1=0000;heat1=0000;dry1b,b=op,clk=clk1); U2: pulse PORT MAP(a=c,b=cl,clk=clk1); U3: pulse PORT MAP(a=up,b=p1,clk=clk1); U4: pulse PORT

27、MAP(a=down,b=p2,clk=clk1); U5: pulse PORT MAP(a=sw,b=p3,clk=clk1); U6: cd PORT MAP(a=sw,clk=clk2,time1=h1,time2=h2,time3=t1,time4=t2,finish=sw1,outtime1=oh1,outtime2=oh2,outtime3=ot1,outtime4=ot2); PROCESS(a,op,cl)BEGINIF(a=1)THENIF(op=1)THEN sw=1;END IF;IF(cl=1)THEN sw=0;END IF;ELSE sw=0;END IF;END

28、 PROCESS;PROCESS(sw,clk1)BEGINIF(clk1EVENT AND clk1=1)THEN IF(p3=1)THEN -定時(shí)開(kāi)啟時(shí),默認(rèn)30分鐘 h11=0000;h22=0000;t11=0011;t22=0000;ELSIF(sw=0)THEN h11=0000;h22=0000;t11=0000;t22=0000;END IF; IF(sw=1)THENIF(p1=1)THEN -判斷時(shí)間+按鍵按下IF(h11=0010)THENIF(h22=0100)THENh11=0010;h22=0100;t11=0000;t22=0000;ELSIF(t11=0000)

29、THENt11=0011;ELSE h22=h22+1;t11=0000;END IF;ELSIF(h22=1001)THENIF(t11=0000)THENt11=0011;ELSE h11=h11+1;h22=0000;t11=0000;END IF;ELSIF (t11=0011)THENh22=h22+1;t11=0000;ELSE t11=0011;END IF;END IF; IF(p2=1)THEN -判斷時(shí)間-按鍵按下 IF(h11=0000)THEN IF(h22=0000)THENh11=0000;h22=0000;t11=0011;t22=0000;ELSIF(t11=0

30、011)THENt11=0000;ELSE h22=h22-1;t11=0011;END IF;ELSIF(h22=0000)THENIF(t11=0011)THENt11=0000;ELSE h11=h11-1;h22=1001;t11=0011;END IF;ELSIF (t11=0011)THENt11=0000;ELSE h22=h22-1;t11=0011;END IF;END IF;END IF;END IF;h1=h11;h2=h22;t1=t11;t2a,b=s,clk=clk); PROCESS(time1,time2,time3,time4,clk) -為當(dāng)定時(shí)時(shí)間更改時(shí),令變量重新賦值 BEGIN IF(clkEVENT AND clk=1)THENIF(s=1)THENintime5=11; ELSIF(a=1)THEN IF(stime1/=time1 OR stime2/=time2 OR stime3/=time3 OR stime4/=time4)THEN stime1=time1; stime2=time2; stime3=time3; stime4=time4; IF(intime5=01)THEN intime5=10;ELSE intime5=01; END IF; END IF; ELSE intime5=00;END IF;E

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論