




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)字系統(tǒng)設(shè)計與硬件描述語言期末考試作業(yè)題目: 空調(diào)控制器的設(shè)計 學(xué)院: 電子信息工程學(xué)院 專業(yè): 物聯(lián)網(wǎng)工程 學(xué)號: 3014204328 姓名: 劉涵凱 2016-12-14一、 選題設(shè)計描述1. 功能介紹設(shè)計內(nèi)容為空調(diào)控制器,可實現(xiàn)空調(diào)的開關(guān)、模式切換、溫度控制、風(fēng)速控制、定時設(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è)置默認(rèn)關(guān)閉,開啟時默認(rèn)30分鐘,可按“定時+”、“定時-”調(diào)節(jié),每次調(diào)節(jié)30分鐘
2、,最高24小時,最低30分鐘。定時倒計時結(jié)束時,關(guān)閉空調(diào)。定時開啟時,可按“取消定時”關(guān)閉定時??照{(diào)控制器模擬界面如下:2. 算法簡介1)空調(diào)控制器 其輸入與輸出在主程序kt中已標(biāo)明,在此不做介紹。2)單脈沖模塊這是非常重要以及核心的模塊。當(dāng)a產(chǎn)生一個上升沿時,輸出一個單脈沖,脈沖將持續(xù)到經(jīng)過一個clk上升沿后的clk下降沿。3)開關(guān)模塊a連接空調(diào)的開關(guān),b連接開關(guān)控制模塊的輸出,c為空調(diào)各工作模塊的開關(guān)信號,d連接數(shù)碼管顯示開關(guān)狀況。當(dāng)定時時間結(jié)束,b輸入一個單脈沖,空調(diào)關(guān)閉。4)開關(guān)控制模塊此模塊的作用是保證開關(guān)模塊能夠正常工作。開關(guān)打開時,a輸入一個單脈沖,重置c。b連接定時模塊,當(dāng)定時
3、結(jié)束,b輸入一個單脈沖,使c輸出1,使開關(guān)模塊輸出05)溫度模塊a連接開關(guān)模塊,b為溫度+1,c為溫度-1,輸出為溫度的十位和個位。6)風(fēng)速模塊a連接開關(guān)模塊,b為風(fēng)速+1,c為風(fēng)速-1。di,zhong,gao為抵擋、中擋、高擋的狀態(tài)(無睡眠模式,因為睡眠模式是抵擋-停止模式)。其他連接數(shù)碼管,顯示睡眠模式、抵擋、中擋、高擋的狀態(tài)。7)模式模塊b連接開關(guān)模塊,c為切換模式,輸出類似于模式模塊。8)定時模塊a連接開關(guān)模塊,b為定時模塊開啟,c為取消定時,up、down為定時時間+、-。clk1為空調(diào)時鐘,clk2為模擬的倒計時時鐘(周期1分鐘)。clk2周期遠(yuǎn)大于clk1。當(dāng)時間倒計時結(jié)束時,
4、sw1輸出1,使開關(guān)控制模塊控制開關(guān)關(guān)閉。其他輸出連接倒計時模塊。9)倒計時模塊a連接開關(guān)模塊,clk連接定時模塊的clk2,輸入時間發(fā)生變化時,重新倒計時。倒計時結(jié)束時,finish輸出1,使定時模塊的sw1輸出1。10)數(shù)碼管模塊a連接開關(guān)模塊,此為7段譯碼器。11)計數(shù)器模塊此為六位計數(shù)器。a連接睡眠模式開關(guān),rst為睡眠模式打開時的重置信號,每6次輸出一次1。二、 程序源代碼及說明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; -電源開關(guān)、模式切換、風(fēng)速+、風(fēng)速-、溫度+、溫度-、定時、取消定時、定時+、定時-、時鐘信號、倒計時時鐘信號 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ù)碼管顯示的開關(guān)、溫度、制冷、制熱、除濕、抵擋、中擋、高擋、睡眠狀態(tài)和倒計時剩余時間END ENTITY kt;ARCHITECTURE behave OF kt ISCOMPONENT switch -開關(guān)模塊 PORT(a,b,clk: IN STD_LOGIC; -b受定時模塊的控制,時間減為0時,關(guān)閉開關(guān) c: OUT STD_LOGIC; d: OUT STD_LOGIC_VECTO
7、R(3 DOWNTO 0); -輸送給數(shù)碼管 END COMPONENT switch; COMPONENT control -開關(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是敏感詞匯,所以此處用拼音,可以看到此處沒有睡眠模式,是因為睡眠模式其實是抵擋-停止模式 ssleep,sdi,szhong,sgao:
8、OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -不同于發(fā)給空調(diào)內(nèi)部的信號,睡眠模式的狀態(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控制開關(guān),b提高1度,c降低1度 temp1,temp2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT temp; COMPONENT timer -定時模塊 PORT(a,b,c,up,down,clk1,clk2: IN STD_LOGIC; sw1: OUT STD_LOGIC; -總開關(guān)關(guān)閉信號 oh1,oh2,ot1,ot2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -輸送給數(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)過第一個clk上升沿時輸出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時,重置此單脈沖發(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)開關(guān)打開 c=1;d=0001; END IF; IF(p2=1)THEN -時間減為0時,定時模塊返回1,關(guān)閉開關(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)開關(guān)打開 c=0; END IF; IF(p2=1)THEN -時間減為0時,定時模塊返回1,關(guān)閉開關(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 -開關(guān)打開時,默認(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 -開關(guān)打開時,默認(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 -高擋時按下,則切換為睡眠 e=001;op1=1; ELSE e=e+1;op1=0; END IF; END IF; IF(p2=1)THEN -判斷風(fēng)速-按鍵按下 IF(e=001)THEN -睡眠時按下,則切換為高擋 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 -睡眠時的低擋-停止循環(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 -定時開啟時,默認(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 -判斷時間+按鍵按下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 -判斷時間-按鍵按下 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)定時時間更改時,令變量重新賦值 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣西南寧市武鳴區(qū)2025年英語八下期中預(yù)測試題含答案
- 外匯試題及答案
- 8.6.2 直線與平面垂直的判定1課時-2025年高一數(shù)學(xué)新教材同步課堂精講練導(dǎo)學(xué)案(人教A版2019必修第二冊)含答案
- 2025年城市天然氣供應(yīng)協(xié)議
- 2025年協(xié)作承包協(xié)議模板
- 2025年吉林長春商業(yè)地產(chǎn)租賃協(xié)議書策劃范本
- 2025年企業(yè)電腦租賃策劃合作框架協(xié)議
- 糧食生產(chǎn)與儲備的智能化綜合調(diào)度系統(tǒng)
- 物聯(lián)網(wǎng)在糧食儲備管理中的應(yīng)用探索
- 推動非遺保護(hù)傳承未來展望及發(fā)展趨勢
- DB32/T 4880-2024民用建筑碳排放計算標(biāo)準(zhǔn)
- 地上停車位出租協(xié)議
- 勞動與社會保障專業(yè)大學(xué)生職業(yè)生涯發(fā)展
- 外研版(三起)小學(xué)英語三年級下冊Unit 1 Animal friends Get ready start up 課件
- 讀后續(xù)寫+原諒之花綻放在童真的田野上+講義 高一下學(xué)期7月期末英語試題
- 導(dǎo)數(shù)中的同構(gòu)問題【八大題型】解析版-2025年新高考數(shù)學(xué)一輪復(fù)習(xí)
- 2024年中國海鮮水餃?zhǔn)袌稣{(diào)查研究報告
- 腸內(nèi)外營養(yǎng)護(hù)理要點(diǎn)
- 2019版人教版新課標(biāo)高中英語選擇性必修1詞匯表帶音標(biāo)單詞表+帶音標(biāo)漢譯英默寫+無音
- 機(jī)械設(shè)備故障應(yīng)急預(yù)案與處理措施
- 一個人與公司合伙協(xié)議書范文
評論
0/150
提交評論