數字系統課程設計家用空調溫度控制器設計_第1頁
數字系統課程設計家用空調溫度控制器設計_第2頁
數字系統課程設計家用空調溫度控制器設計_第3頁
數字系統課程設計家用空調溫度控制器設計_第4頁
數字系統課程設計家用空調溫度控制器設計_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數字系統課程設計設計報告設計題目:家用空調溫度控制器一 設計題目的要求: 家用空調溫度控制器的功能為: 1、室內溫度可由按鍵設置,溫度的設置范圍為20度至39度。 2、有加熱和制冷兩種工作模式。當空調工作在加熱模式時,如果室溫低于設定溫度,空調加熱,反之,不加熱;當空調工作于制冷模式時,如果室溫高于設定溫度,空調制冷,反之空調不制冷。 3、對室內溫度用兩位數碼管進行實時顯示。二 設計方案及其工作原理: 總的設計框圖如下:本電路由控制核心cpu、按鍵、4位鎖存器、數碼管7位譯碼器電路組成。cpu:負責數據接收;室溫和設定溫度的比較;工作模式選擇;顯示數據的輸出;加熱制冷信號的控制;報警信號的輸出

2、等。按鍵:負責設定標準溫度,設置溫度的升高與降低。鎖存器:將cpu輸出的顯示信號鎖存,防止干擾,將信號送給譯碼器。譯碼器:將BCD碼譯成數碼管顯示用的高低電平。工作原理在reset信號作用下,設定溫度寄存器賦初值,初值為26度,通過add(溫度升)和down(溫度減)來步進調整設定溫度(步進為一)。按鍵(key)模塊通過seta和setb輸出端口將設定溫度傳給cpu。cpu接收到設定溫度后將其與由溫度傳感器傳來的室溫xy比較,將比較結果標志存在寄存器(flag)中。讀取用戶工作模式(mod=1時為加熱,mod=0時為制冷)。在加熱模式狀態下,根據flag的值給出加熱控制寄存器heat賦值;在制

3、冷模式狀態下,根據flag的值給制冷狀態寄存器cool賦值。cpu還將設置溫度與設置溫度范圍比較,將比較結果標志存在報警寄存器flag_high(超上界寄存器)和flag_low(超下界寄存器)。cpu還將室溫和設定溫度分別存放在室溫寄存器和設定溫度寄存器中。最后,cpu將寄存器的值通過各端口輸出。各鎖存器將數據鎖存后在時鐘信號的作用下將鎖存信號輸出給譯碼器,譯碼器再把BCD碼轉換成數碼管顯示的高低電平,數碼管顯示出室溫和設置溫度。Led燈接到有效信號后點亮,指示設定溫度是否越界(led_settoohigh表示設置溫度過高;led_settoolow表示設置溫度過低)。三 各單元電路設計:1

4、、cpu設計 cpu框圖如下:disp_outx:室溫十位輸出顯示disp_outy:室溫個位輸出顯示disp_outa:設置十位輸出顯示disp_outb:設置個位輸出顯示cool:制冷輸出信號heat:加熱輸出信號led_settoohigh:設定溫度超越上限報警led_settoolow:設定溫度超越下限報警x:室溫十位輸入y:室溫個位輸入a:設定溫度十位輸入b:設定溫度個位輸入mod:用戶加熱制冷模式選擇clk:時鐘脈沖flag:室溫和設置溫度比較標志位寄存器flag_high:設置溫度超越上界標志位寄存器flag_low:設置溫度超越下界標志位寄存器2、按鍵(key)設計 按鍵(ke

5、y)框圖如下:seta 輸出溫度設定十位setb 輸出溫度設定個位add 設定溫度加一down 設定溫度減一clk 時鐘信號reset復位信號(用于寄存器賦初值)3、鎖存器設計 鎖存器框圖如下:data:鎖存數據輸入qout:鎖存數據輸出clk: 時鐘信號4、譯碼器設計 譯碼器框圖如下:D4: 譯碼器BCD碼輸入信號a,b,c,d,e,f,g:譯碼器輸出信號(輸入給數碼管)四 模擬仿真驗證及結果分析:因整體仿真驗證結果不易說明效果,故將各模塊仿真結果予以分析。1、cpu仿真結果 cpu仿真結果如圖:分析:前兩個周期,用戶模式為加熱模式(mod=1)室溫<設定溫度,加熱(heat=1);5

6、6周期用戶模式為制冷(mod=0),室溫>設定溫度,制冷(cool=1);第79周期設置溫度<20度,超越下界報警(led_settoolow=1);第1012周期,設置溫度>39度,超越上界報警(led_settoohigh=1)。2、鍵盤仿真結果鍵盤仿真結果如圖:分析:前2周期,reset=1,設置溫度被設為26度,第510周期,add=1,設置溫度每周期遞增一;第1220周期down=1,設置溫度每周期遞減一,2127周期,沒有增加和減少信號,溫度穩定在24度。3、鎖存器仿真結果鎖存器仿真結果如圖:分析:如圖,在每個時鐘的上升沿將data中數據從qout輸出。4、譯碼器

7、仿真結果譯碼器仿真結果如圖:分析:D4輸入8時,abcdefg為:1111111,D4輸入為7時,abcdefg為:1110000,符合數碼管顯示規則。下圖為整個頂層結果仿真圖(部分),僅供參考:五 總結體會:在這次課程設計的過程中,遇到了很多的問題;但也學習到了很多平時上課不曾接觸到的東西、不懂的知識。了解到了具體的大工程是如何生成的、進一步掌握并熟悉了verilog HDL語言,同時也學會了同學之間相互的團結和協作。通過本次課程設計,我懂得一個工程,必須先要有一個總體的方案,心中要明確設計的目的,如何才能達到這個目的;然后劃分模塊,將復雜抽象的問題具體簡單化;接著逐個設計每個模塊,調試,分

8、析,再調試,直到完成各個模塊的要求為止;最終,將各個模塊整合起來,完成整體模塊,完成工程設計。可謂受益匪淺。附錄:程序源代碼/*溫度控制cpu*/disp_outx 室溫十位輸出顯示/disp_outy 室溫個位輸出顯示/disp_outa 設置十位輸出顯示/disp_outb 設置個位輸出顯示/cool 制冷輸出信號/heat 加熱輸出信號/led_settoohigh 設定溫度超越上限報警/led_settoolow 設定溫度超越下限報警/x 室溫十位輸入/y 室溫個位輸入/a 設定溫度十位輸入/b 設定溫度個位輸入/mod 用戶加熱制冷模式選擇/clk 時鐘脈沖/flag 室溫和設置溫度

9、比較標志位寄存器/flag_high 設置溫度超越上界標志位寄存器/flag_low 設置溫度超越下界標志位寄存器module cpu(disp_outx, disp_outy, disp_outa, disp_outb, cool, heat, led_settoohigh, led_settoolow,x,y,a,b,mod,clk);output3:0 disp_outx, disp_outy, disp_outa, disp_outb;output cool, heat, led_settoohigh, led_settoolow;input3:0 x,y,a,b;input mod,

10、clk;reg3:0 disp_outx, disp_outy, disp_outa, disp_outb;reg1:0 flag;reg flag_high,flag_low, cool, heat, led_settoohigh, led_settoolow;always(posedge clk)beginbegin /*設定溫度上下界標志位判斷*/if(a>=4)beginflag_high =1;flag_low=0; /flag_high=1 設定溫度超出上界endelse if(a<2)begin flag_low=1; /flag_low=1 設定溫度超出下界flag

11、_high =0; endelse beginflag_low =0;flag_high=0; / flag_low =0 flag_high=0 設定溫度在正常范圍內endendbegin /*室溫與設置溫度比較標志位判斷*/if(x>a)flag=2'b01; /flag=01 室溫高于設定溫度else if(x<a) /flag=10 室溫低于設定溫度flag=2'b10;elsebeginif(y>b)flag=2'b01;else if(y<b)flag=2'b10;elseflag=2'b11; /flag=11 室溫

12、等于設定溫度endendbegin /*制冷、加熱輸出寄存器賦值*/if(mod)begin /mod=1 加熱模式下if(flag=2'b01) | (flag=2'b11)beginheat=0; /停止加熱cool=0;endelse if(flag=2'b10)begin /加熱heat=1;cool=0;endendelse /mod=0 制冷模式下beginif(flag=2'b10) | (flag=2'b11)begincool=0; /停止制冷heat=0;endelse if(flag=2'b01) begincool=1;

13、/制冷heat=0;endendendbegin /*顯示、報警輸出寄存器賦值*/if(!flag_high&&!flag_low) /室溫和設定溫度顯示寄存器賦值begindisp_outx=x;disp_outy=y;disp_outa=a;disp_outb=b;led_settoohigh =0;/led_settoohigh =0 led_settoolow=0 設定溫度在正常范圍led_settoolow=0;endelse if(flag_high&&!flag_low) /設定溫度超越上界報警寄存器賦值beginled_settoohigh =1

14、; / led_settoohigh =1 設定溫度超越上界led_settoolow=0;endelse if(!flag_high&&flag_low) /設定溫度超越下界報警寄存器賦值beginled_settoohigh =0;led_settoolow=1; /led_settoolow=1 設定溫度超越下界endendendendmodule/*按鍵輸入設定溫度*/seta 輸出溫度設定十位/setb 輸出溫度設定個位/add 設定溫度加一/down 設定溫度減一/clk 時鐘信號/reset復位信號(用于寄存器賦初值)module key(seta,setb,ad

15、d,down,clk,reset);output3:0 seta,setb;input add,down,clk,reset;reg3:0 seta,setb;always(posedge clk or posedge reset)beginif(reset) /*寄存器賦初值*/beginseta=2;setb=6;endif(add) /*寄存器加一*/beginif(setb=9)beginsetb=0;seta=seta+1;endelse setb=setb+1;endelse if(down) /*寄存器減一*/beginif(setb=0)beginsetb=9;seta=set

16、a-1;endelsesetb=setb-1;endendendmodule/*4位鎖存器*/qout 輸出信號/data 輸入信號/clk 時鐘信號module suocunqi(qout,data,clk);output3:0qout;input3:0data;input clk;reg3:0 qout;always(clk or data)begin if(clk)qout=data; /在時鐘信號作用下輸出信號end endmodule/*7位數碼管譯碼器*/a,b,c,d,e,f,g, 數據輸出/D4 輸出數據module yimaqi(a,b,c,d,e,f,g,D4);output a,b,c,d,e,f,g;input3:0D4;reg a,b,c,d,e,f,g;always(D4)begincase(D4)4'd0:a,b,c,d,e,f,g=7'b1111110;4'd1:a,b,c,d,e,f,g=7'b0110000;4'd2:a,b,c,d,e,f,g=7'b1101101;4'd3:a,b,c,d,e,f,g=7'b1111001;4'd4:a,b,c,d,e,

溫馨提示

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

評論

0/150

提交評論