[畢業(yè)論文]溫控自動風扇系統(tǒng)論文_第1頁
[畢業(yè)論文]溫控自動風扇系統(tǒng)論文_第2頁
[畢業(yè)論文]溫控自動風扇系統(tǒng)論文_第3頁
[畢業(yè)論文]溫控自動風扇系統(tǒng)論文_第4頁
[畢業(yè)論文]溫控自動風扇系統(tǒng)論文_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精準溫度顯示的溫控自動風扇系統(tǒng)方振杰 06電信1班 3060432035摘 要本設計為一種溫控風扇系統(tǒng),具有靈敏的溫度感測和顯示功能,系統(tǒng)at89c5 單片機作為控制平臺對風扇轉速進行控制。可由用戶設置高、低溫度值,測得溫度值在高低溫度之間時打開風扇弱風檔,當溫度升高超過所設定的溫度時自動切換到大風檔,當溫度小于所設定的溫度時自動關閉風扇,控制狀態(tài)隨外界溫度而定。所設高低溫值保存在溫度傳感器ds18b20內(nèi)部e2rom中,掉電后仍然能保存上次設定值,性能穩(wěn)定,控制準確。關鍵詞: 自動控制;單片機;溫控;風扇目 錄摘 要1目 錄21引言32 方案論證42.1 溫度傳感器的選用42.2 控制核心的

2、選擇52.3顯示電路52.4調(diào)速方式62.5控制執(zhí)行部件63 系統(tǒng)簡述74 硬件設計84.1、本系統(tǒng)各器件簡介84.1.1 ds18b20 單線數(shù)字溫度傳感器簡介84.1.2 at89c52 單片機簡介94.1.3 八段led 數(shù)碼管114.2 各部分電路設計124.2.1 電源電路124.2.2 數(shù)碼管顯示電路124.2.3 聲響、溫度采集、溫度設定以及復位電路134.2.4 溫控自動電路144.2.5無級調(diào)速電路155 軟件設計176 安裝調(diào)試19參考文獻20附錄1 程序流程圖21附錄2 源程序281引言生活中,我們經(jīng)常會使用一些與溫度有關的設備。比如,現(xiàn)在雖然不少城市家庭用上了空調(diào),但在

3、占中國大部分人口的農(nóng)村地區(qū)依舊使用電風扇作為降溫防暑設備,春夏(夏秋)交替時節(jié),白天溫度依舊很高,電風扇應高轉速、大風量,使人感到清涼;到了晚上,氣溫降低,當人入睡后,應該逐步減小轉速,以免使人感冒。雖然電風扇都有調(diào)節(jié)不同檔位的功能,但必須要人手動換檔,睡著了就無能為力了,而普遍采用的定時器關閉的做法,一方面是定時時間長短有限制,一般是一兩個小時;另一方面可能在一兩個小時后氣溫依舊沒有降低很多,而風扇就關閉了,使人在睡夢中熱醒而不得不起床重新打開風扇,增加定時器時間,非常麻煩,而且可能多次定時后最后一次定時時間太長,在溫度降低以后風扇依舊繼續(xù)吹風,使人感冒;第三方面是只有簡單的到了定時時間就關

4、閉風扇電源的單一功能,不能滿足氣溫變化對風扇風速大小的不同要求。又比如在較大功率的電子產(chǎn)品散熱方面,現(xiàn)在絕大多數(shù)都采用了風冷系統(tǒng),利用風扇引起空氣流動,帶走熱量,使電子產(chǎn)品不至于發(fā)熱燒壞。要使電子產(chǎn)品保持較低的溫度,必須用大功率、高轉速、大風量的風扇,而風扇的噪音與其功率成正比。如果要低噪音,則要減小風扇轉速,又會引起電子設備溫度上升,不能兩全其美。為解決上述問題,我們設計了這套溫控自動風扇系統(tǒng)。本系統(tǒng)采用高精度集成溫度傳感器,用單片機控制,能顯示實時溫度,并根據(jù)使用者設定的溫度自動在相應溫度時作出小風、大風、停機動作,精確度高,動作準確。2 方案論證本系統(tǒng)實現(xiàn)風扇的溫度控制,需要有較高的溫度

5、變化分辨率和穩(wěn)定可靠的換檔停機控制部件。2.1 溫度傳感器的選用溫度傳感器可由以下幾種方案可供選擇:方案一:選用熱敏電阻作為感測溫度的核心元件,通過運算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進而導至的輸出電壓變化的微弱電壓變化信號,再用ad轉換芯片adc0809將模擬信號轉化為數(shù)字信號輸入單片機處理。方案二:采用熱電偶作為感測溫度的核心元件,配合橋式電路,運算放大電路和ad轉換電路,將溫度變化信號送入單片機處理。方案三:采用數(shù)字式集成溫度傳感器ds18b20作為感測溫度的核心元件,直接輸出數(shù)字溫度信號供單片機處理。對于方案一,采用熱敏電阻有價格便宜、元件易購的優(yōu)點,但熱敏電阻對溫度的細

6、微變化不敏感,在信號采集、放大、轉換過程中還會產(chǎn)生失真和誤差,并且由于熱敏電阻的r-t關系的非線性,其本身電阻對溫度的變化存在較大誤差,雖然可以通過一定電路予以糾正,但不僅將使電路復雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測到小的溫度變化。故該方案不適合本系統(tǒng)。對于方案二,采用熱電偶和橋式測量電路相對于熱敏電阻其對溫度的敏感性和器件的非線性誤差都有較大提高,其測溫范圍也非常寬,從-50攝氏度到1600攝氏度均可測量。但是依然存在電路復雜,對溫度敏感性達不到本系統(tǒng)要求的標準,故不采用該方案。對于方案三,由于數(shù)字式集成溫度傳感器ds18b20的高度集成化,大大降低了外接放大轉換等電路的

7、誤差因素,溫度誤差很小,并且由于其感測溫度的原理與上述兩種方案的原理有著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件內(nèi)部轉換成數(shù)字量直接輸出,簡化了系統(tǒng)程序設計,又由于該傳感器采用先進的單總線技術(1-wrie),與單片機的接口變的非常簡潔,抗干擾能力強。關于ds18b20的詳細參數(shù)參看下面“硬件設計”中的器件介紹。2.2 控制核心的選擇方案一:采用電壓比較電路作為控制部件。溫度傳感器采用熱敏電阻或熱電偶等,溫度信號轉為電信號并放大,由集成運放組成的比較電路判決控制風扇轉速,當高于或低于某值時將風扇切換到相應檔位。方案二:采用單片機作為控制核心。以軟件編程的方法進行溫度判斷,并在端口輸出控制

8、信號。對于方案一,采用電壓比較電路具有電路簡單、易于實現(xiàn),以及無需編寫軟件程序的特點,但控制方式過于單一,不能自由設置上下限動作溫度,無法滿足不同用戶以及不同環(huán)境下的多種動作溫度要求,故不在本系統(tǒng)中采用。對于方案二,以單片機作為控制器,通過編寫程序不但能將傳感器感測到的溫度通過顯示電路顯示出來,而且用戶能通過鍵盤接口,自由設置上下限動作溫度值,滿足全方位的需求。并且通過程序判斷溫度具有極高的精準度,能精確把握環(huán)境溫度的微小變化。故本系統(tǒng)采用方案二。2.3顯示電路方案一:采用五位共陽數(shù)碼管顯示溫度,動態(tài)掃描顯示方式。方案二:采用液晶顯示屏lcd顯示溫度對于方案一,該方案成本低廉,顯示溫度明確醒目

9、,在夜間也能看見,功耗極低,顯示驅(qū)動程序的編寫也相對簡單,這種顯示方式得到廣泛應用。不足的地方是掃描顯示方式是使五個led逐個點亮,因此會有閃爍,但是人眼的視覺暫留時間為20ms,當數(shù)碼管掃描周期小于這個時間時人眼將感覺不到閃爍,因此可以通過增大掃描頻率來消除閃爍感。對于方案二,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點,這是led數(shù)碼管無法比擬的。但是液晶顯示模塊價格昂貴,驅(qū)動程序復雜,從簡單實用的原則考慮,本系統(tǒng)采用方案一。2.4調(diào)速方式方案一:采用變壓器調(diào)節(jié)方式,運用電磁感應原理將220v電壓通過線圈降壓到不同的電壓,控制風扇電機接到不同電壓值的線圈上可控制電

10、機的轉速,從而控制風扇風力大小。方案二:采用晶閘管構成無級調(diào)速電路。對于方案一,由于采用變壓器改變電壓調(diào)節(jié),有風速級別限制,不能適應人性化要求。且在變壓過程中會有損耗發(fā)熱,效率不高,發(fā)熱有不安全因素。對于方案二,以電位器控制晶閘管的導通角大小,可實現(xiàn)由最大風速到關閉的無級別調(diào)速,可將風力調(diào)節(jié)在關閉無風到最大風之間的任意風力,實現(xiàn)“自由風”。且在調(diào)速環(huán)節(jié)中基本無電力損耗。故本系統(tǒng)采用方案二。2.5控制執(zhí)行部件方案一:采用數(shù)模轉換芯片ad0832控制,由單片機根據(jù)當前溫度值送出相應數(shù)字量到ad0832,由ad0832產(chǎn)生模擬信號控制晶閘管的導通角,從而配合無級調(diào)速電路實現(xiàn)溫控時的自動無級風力調(diào)節(jié)。

11、方案二:采用繼電器,繼電器的接有控制晶閘管導通角的電阻的接入電路與否由單片機控制,根據(jù)當前溫度值在相應管腳送出高/低電平,決定某個繼電器的導通角控制電阻是否接入電路。(詳見4.2.4)對于方案一,該方案能夠?qū)崿F(xiàn)在風扇處于溫控狀態(tài)時也能無級調(diào)速,但是d/a轉換芯片價格較高,與其溫控狀態(tài)下無級調(diào)速功能相比性價比不高。對于方案二,雖然在溫控狀態(tài)下只能實現(xiàn)弱/大風兩級調(diào)速,但采用繼電器價格便宜,控制可靠,且出于在溫控狀態(tài)時無級調(diào)速并不是特別需要的功能,綜合考慮采用方案二。3 系統(tǒng)簡述本系統(tǒng)由集成溫度傳感器、單片機、led數(shù)碼管、繼電器、雙向晶閘管、蜂鳴器及一些其他外圍器件組成。使用具有價廉易購的at8

12、9s52單片機編程控制,通過修改程序可方便實現(xiàn)系統(tǒng)升級。系統(tǒng)的框圖結構如下:溫度傳感器ds18b20單片機at89s52數(shù)碼管顯示無級調(diào)速器被控對象(風扇)人工控制圖1 系統(tǒng)框圖4 硬件設計系統(tǒng)主要部件包括ds18b20溫度傳感器、at89s52單片機、雙向晶閘管、五位led數(shù)碼管和風扇。輔助元件包括繼電器、蜂鳴器、電阻、晶振、電源、按鍵和撥碼開關等。4.1、本系統(tǒng)各器件簡介4.1.1 ds18b20 單線數(shù)字溫度傳感器簡介ds18b20 單線數(shù)字溫度傳感器是dallas 半導體公司開發(fā)的世界上第一片支持“一線總線”接口的溫度傳感器。它具有3 引腳to92 小體積封裝形式。溫度測量范圍為-55

13、+125,可編程為9 位12 位a/d 轉換精度,測溫分辨率可達0.0625。被測溫度用符號擴展的16 位數(shù)字量方式串行輸出。工作電壓支持3v5.5v 的電壓范圍,既可在遠端引入,也可采用寄生電源方式產(chǎn)生。ds18b20 還支持“一線總線”接口,多個ds18b20可以并聯(lián)到3 根或2 根線上,cpu 只需一根端口線就能與諸多ds18b20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。它還有存儲用戶定義報警溫度等功能。ds18b20 內(nèi)部結構及管腳ds18b20 內(nèi)部結構如圖所示,主要由4 部分組成:64 位rom、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th 和tl、配置寄存器。其管腳

14、排列如圖所示,dq 為數(shù)字信號端,gnd 為電源地,vdd 為電源輸入端。圖1 ds18b20 內(nèi)部結構圖2 ds18b20外形及管腳4.1.2 at89c52 單片機簡介at89c52 是一種帶4k字節(jié)閃存可編程可擦除只讀存儲器(fperom)256b片內(nèi)ram的低電壓,高性能cmos8 位微處理器。該器件采用atmel 高密度非易失存儲器制造技術制造,與工業(yè)標準的mcs-51 指令集和輸出管腳相兼容。由于將多功能8 位cpu 和閃爍存儲器組合在單個芯片中,atmel 的at89c52 是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。at89c52 單片機管腳at89

15、c52單片機管腳如圖3所示。圖3 at89c52單片機管腳各管腳功能:vcc:供電電壓。gnd:接地。p0 口:p0 口為一個8 位漏級開路雙向i/o 口,每腳可吸收8ttl 門電流。當p1 口的管腳第一次寫1 時,被定義為高阻輸入。p0 能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash 編程時,p0 口作為原碼輸入口,當fiash 進行校驗時,p0輸出原碼,此時p0 外部必須被拉高。p1 口:p1 口是一個內(nèi)部提供上拉電阻的8 位雙向i/o 口,p1 口緩沖器能接收輸出4ttl門電流。p1 口管腳寫入1 后,被內(nèi)部上拉為高,可用作輸入,p1 口被外部下拉為低電平時,

16、將輸出電流,這是由于內(nèi)部上拉的緣故。在flash 編程和校驗時,p1 口作為第八位地接收。p2 口:p2 口為一個內(nèi)部上拉電阻的8 位雙向i/o 口,p2 口緩沖器可接收,輸出4 個ttl 門電流,當p2 口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2 口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2 口當用于外部程序存儲器或16 位地址外部數(shù)據(jù)存儲器進行存取時,p2 口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,p2 口輸出其特殊功能寄存器的內(nèi)容。p2 口在flash 編程和校驗時接收高八位地址信號

17、和控制信號。p3 口:p3 口管腳是8 個帶內(nèi)部上拉電阻的雙向i/o 口,可接收輸出4 個ttl 門電流。當p3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3 口將輸出電流(ill)這是由于上拉的緣故。p3 口也可作為at89c51 的一些特殊功能口。p3.0:rxd(串行輸入口);p3.1:txd(串行輸出口);p3.2:/int0(外部中斷0);p3.3:/int1(外部中斷1);p3.4:t0(記時器0 外部輸入);p3.5:t1(記時器1外部輸入);p3.6:/wr(外部數(shù)據(jù)存儲器寫選通);p3.7:/rd(外部數(shù)據(jù)存儲器讀選通)。 p3 口

18、同時為閃爍編程和編程校驗接收一些控制信號。rst:復位輸入。當振蕩器復位器件時,要保持rst 腳兩個機器周期的高電平時間。ale/prog:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash 編程期間,此引腳用于輸入編程脈沖。在平時,ale 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ale 脈沖。如想禁止ale 的輸出可在sfr8eh 地址上置0。此時,ale 只有在執(zhí)行movx,movc 指令是ale 才起作用。另外,該引腳被略微拉高。如果微處理器在

19、外部執(zhí)行狀態(tài)ale 禁止,置位無效。/psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen 有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen 信號將不出現(xiàn)。/ea/vpp:當/ea 保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1 時,/ea 將內(nèi)部鎖定為reset;當/ea 端保持高電平時,此間內(nèi)部程序存儲器。在flash 編程期間,此引腳也用于施加12v 編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。4.1.3 八段led

20、數(shù)碼管本系統(tǒng)使用五個七段led數(shù)碼管作為溫度顯示,公共陽極。4.2 各部分電路設計4.2.1 電源電路電源電路采用lm7805集成穩(wěn)壓器作為穩(wěn)壓器件,用典型接法,220v電源整流濾波后送入lm7805穩(wěn)壓,在輸出端接一個470u和0.1u電容進一步濾除紋波,得到5v穩(wěn)壓電源。電路如圖4所示。圖4 電源4.2.2 數(shù)碼管顯示電路顯示部分包括如下圖5: 5個八段(共陽)數(shù)碼管、pnp型三極管、電阻等。其連接方式如下:應用單片機p0口連接八段數(shù)碼管,用p2口的p2.3p2.7五個端口作為數(shù)碼管的片選信號輸出端口,其中要用8550(pnp型)三極管做驅(qū)動。又因為p0口做i/o口時要加上拉電阻,所以我們

21、給p0各位各加一個10k的電阻到電源。為了防止燒壞數(shù)碼管,所以給數(shù)碼管各段各加一個300歐姆的限流電阻。要顯示的數(shù)據(jù)通過p0口送給數(shù)碼管顯示,通過p2口的p2.7p2.3五個端口分別對數(shù)碼管進行位選,事實上數(shù)碼管是間斷被點亮的,只是其間斷時間十分短,掃描周期在20ms以下,利用人眼視覺暫留,我們基本看不出它們的閃爍。圖5 顯示電路4.2.3 聲響、溫度采集、溫度設定以及復位電路電路如圖6所示,這一部分主要是由ds18b20,四個按鍵、一個電容一個三極管和一個蜂鳴器等構成。聲響電路在每按下按鍵時會響一聲,當沒有把ds18b20接入到電路中時,單片機就會通過蜂鳴器發(fā)出報警聲音。溫度采集電路主要是由

22、ds18b20構成,它可以把采集的溫度數(shù)據(jù)轉化成二進制數(shù),經(jīng)過單片機處理后輸出送數(shù)碼管顯示。 溫度設定主要是通過按鍵s1、s2|、s3來設定的。按鍵s1、s2、s3分別接入單片機的p1.4、p1.5、p1.6腳。s3是設定鍵。用于對風速調(diào)節(jié)的上限和下限值th、tl的設置。當按下s1時,可以加1,長按可以快速加1,當按下s2 時,可以減1, 長按可以快速減1。圖6 聲響、溫度采集、溫度設置及復位電路4.2.4 溫控自動電路該電路為控制風速的人工控制與溫控兩種方式之溫控模式時的控制電路,當選擇為溫控時,單片機默認為弱風,當當前溫度低于所設的溫度下限tl時繼電器1吸合,關閉風扇,當當前溫度高于所設的

23、溫度上限時繼電器2吸合,切換到強風檔。電路如圖7。圖7 溫控自動電路4.2.5無級調(diào)速電路此電路如圖8所示,包括:雙向可控硅,雙觸發(fā)二極管、滑動變阻器、電容。該電路為無級調(diào)速電路,通過調(diào)節(jié)滑動變阻器的阻值來改變通過雙向二極管的電流,控制雙向晶閘管的導通角,從而控制電機的轉速??蓪崿F(xiàn)由最大風速到關閉的無級別調(diào)速,可將風力調(diào)節(jié)在關閉無風到最大風之間的任意風力,實現(xiàn)“自由風”。圖8 無級調(diào)速電路本系統(tǒng)的總電原理圖為:圖9 總電原理圖5 軟件設計程序?qū)崿F(xiàn)的功能是上電復位時檢測溫度傳感器ds18b20是否存在或它工作是否正常,當不存在或工作不正常時從蜂鳴器發(fā)出報警聲,提示用戶檢查ds18b20,安裝或者

24、更換。這部分功能由ds18b20復位與檢測子程序reset完成。當檢測到傳感器工作正常后,發(fā)出溫度轉換命令及讀取溫度值命令,將從ds18b20讀取的二進制溫度值轉換為七段碼在led上顯示出來。顯示功能由溫度顯示子程序disp1子程序?qū)崿F(xiàn)。在溫控自動狀態(tài),本系統(tǒng)可由用戶根據(jù)需要自由設置大小風檔的切換溫度值th,tl,硬件設計上為通過3個按鍵,由按鍵掃描子程序keyscan子程序提供軟件支持。按下一次設置鍵k3,進入低溫關風扇溫度值tl設置狀態(tài),此時按下“加”鍵k1,tl值加一,長按k1不放可實現(xiàn)快速加1,按下“減”鍵k2,tl值減1,長按k2不放可實現(xiàn)快速減1。再按一次設置鍵k3,進入高溫切換大

25、風檔溫度值th設置狀態(tài),此時按下“加”鍵k1,th值加一,長按k1不放可實現(xiàn)快速加1,按下“減”鍵k2,th值減1,長按k2不放可實現(xiàn)快速減1。下限動作溫度值tl和上限動作溫度值的設置范圍為0-120攝氏度,滿足一般使用要求。再按一次設置鍵k3退出上下限溫度設置狀態(tài),恢復到當前溫度顯示狀態(tài)。在當前溫度顯示狀態(tài),按下“加”鍵k1一次顯示當前tl設定值,再按一下顯示當前th設定值,如此循環(huán),按設置鍵k3退回到當前溫度顯示狀態(tài)。每次設定的tl、th值均拷備到ds18b20的eerom內(nèi),在單片機掉電后設定值不會丟失,在再次上電時從ds18b20的eerom中讀回上次設定的上下限動作溫度值th、tl,

26、用戶要實現(xiàn)根據(jù)當前溫度實時的控制風扇的狀態(tài),需要在程序中不時的判斷當前溫度值是否超過設定的動作溫度值范圍,此部分功能由比較控制子程序temp_comp來完成。由于單片機的工作頻率高達12mhz,在執(zhí)行程序時不斷將當前溫度和設定動作溫度進行比較判斷,當超過設定溫度值范圍時及時的轉去執(zhí)行超溫處理和欠溫處理子程序,控制繼電器的吸合、斷開狀態(tài),從而控制風扇實時的切換到關閉、弱風、大風三個狀態(tài)。在沒有超過設定的tl、th值時默認將風扇置為弱風檔。該比較控制程序又由溫度比較程序、超溫處理子程序和欠溫處理子程序構成。顯示驅(qū)動程序以查七段碼取得各數(shù)碼管應顯數(shù)字,逐位掃描顯示。主程序和個主要子程序的流程圖如附錄

27、1所示。6 安裝調(diào)試將本電路用硬件做出來,用編程器將keil軟件對源程序編譯生成的.hex文件燒入at89c52單片機,將單片機插入到目標板中,連好線。將“控制模式”開關選擇在“溫控”,打開電源,風扇工作在弱風檔,數(shù)碼管正常顯示當前的溫度21.6攝氏度,第五位數(shù)碼管閃爍顯示“o”,表示當前溫度在tl和th值之間,沒有欠溫或超溫。按“設置”鍵及“加”“減”鍵將下限動作溫度值tl設為20攝氏度,將上限動作溫度值th設為23攝氏度,用書對著ds18b20扇動,顯示溫度逐漸降低,當達到19.9攝氏度時繼電器1動作,將風扇關閉,第五位數(shù)碼管閃爍顯示“l(fā)”,表示當前溫度低于tl值。然后用手握著ds18b2

28、0,顯示溫度逐步上升,當達到23.1攝氏度時繼電器2動作,將風扇切換到大風檔,第五位數(shù)碼管閃爍顯示“h”,表示當前溫度高于th值。將“控制模式”開關選擇在“人控”,這時數(shù)碼管依然按照上述規(guī)律顯示,但是不能對風扇進行控制。用手旋動無級調(diào)速旋鈕,可以將風扇從關閉一直連續(xù)調(diào)到最大風速,具有無級調(diào)節(jié)風扇風力的功能。測試結果表明,本系統(tǒng)實現(xiàn)了預期功能。參考文獻1 胡漢才.單片機原理及其接口技術.北京:清華大學出版社,20042 吳金戍,沈慶陽,郭庭吉.8051單片機實踐與應用.北京: 清華大學出版社,20023 求是科技.單片機典型模塊設計實例導航.北京:人民郵電出版社,20044 王化詳,張淑英.傳感

29、器原理.天津:天津大學出版社,20025 榮俊昌.新型電風扇原理與維修.北京:高等教育出版社,20046 王港元.電工電子實踐指導.江西:江西科學技術出版社,2005附錄1 程序流程圖主程序流程圖開始初始化蜂鳴報警檢測ds18b20正常?溫度轉換命令讀溫度溫度bcd碼處理顯示溫度按鍵掃描及處理與設定溫度對比及處理ny圖11 主程序流程圖按鍵掃描子程序流程圖入口k1按下?蜂鳴器響一聲設定的tl值轉換成各led的顯示數(shù)字k1按下?蜂鳴器響一聲顯示tl值設定的th值轉換成各led的顯示數(shù)字顯示th值k1按下?k2按下?蜂鳴器響一聲ynynynn蜂鳴器響一聲k3按下?蜂鳴器響一聲設定th,tl將設定t

30、h,tl值寫入1820的暫存器將1820暫存器值寫入eerom返回yn圖12 按鍵掃描子程序流程圖設置上下限動作溫度值th,tl子程序流程圖顯示,閃爍入口k1按下?=121?k3按下?設置的tl加1設置的tl=0顯示tlk2按下?設置的tl減1設置的tl=0?設置的tl=119顯示tl蜂鳴一聲k3松開?k1按下?=121?設置的th加1設置的th=0顯示thk2按下?設置的th減1設置的th=0?設置的tl=119顯示thk3按下?蜂鳴一聲返回$ynynynnnynyynnyn閃爍顯示ynnyynk3按下?y圖13 設置上下限動作溫度值th,tl子程序流程圖實時溫度值與設定th,tl值比較及超

31、、欠溫處理子程序流程圖入口th當前溫度?th當前溫度?c1=0,c2=0200ms定時時間到?第五位led滅,其它四位顯示當前溫度第五位led顯示h,其它四位顯示當前溫度c1=0,c2=0200ms定時時間到?第五位led滅,其它四位顯示當前溫度第五位led顯示h,其它四位顯示當前溫度c1=1,c2=1返回yyyynnn圖14 實時溫度值與設定th,tl值比較及超、欠溫處理子程序流程圖溫度顯示子程序流程圖取掃描字入口掃描字p2輸出取顯示數(shù)據(jù)查段碼表從p0口輸出小數(shù)點處理延時指向下一位acc.3=0?p0,p2復位返回ny圖15 溫度顯示子程序流程圖ds18b20復位與檢測子程序600us復位低

32、脈沖入口拉高總線總線=0?60us到?總線=0?存在標志位置1延時總線拉高存在標志位置0返回nynyyn圖16 ds18b20復位與檢測子程序附錄2 源程序;*;精準溫度顯示溫控自動風扇系統(tǒng) *;*說明: ;* 1、k3 進入設定低溫動作溫度值 tl 狀態(tài):;* 2、k3 進入設定高溫動作溫度值 th 狀態(tài):;* 3、k3 返回 ;* 4、設定過程: k1 加鍵 (up), k2 減鍵 (down),可快速調(diào); 5、實際溫度在tl和th之間時,開啟弱風檔,低于tl時,關閉風扇;;高于th時,開啟大風檔。每次設置的th和tl均被保存在ds18b20的rom;內(nèi),掉不需重新設置. *;* time

33、r_l data 23h timer_h data 24h timer_coun data 25h templ data 26h temph data 27h temp_th data 28h temp_tl data 29h temphc data 2ah templc data 2bh temp_zh data 2ch beep equ p3.7 data_line equ p3.3 c1 equ p3.4 ;c1控制口,接繼電器1 c2 equ p3.5 ;c2控制口,接繼電器2 flag1 equ 20h.0 flag2 equ 20h.1;- k1 equ p1.4 k2 equ p

34、1.5 k3 equ p1.6;= org 0000h jmp main org 000bh ajmp int_t0;-main: mov sp,#30h mov tmod,#01h ;t0,方式1 mov timer_l,#00h ;50ms定時值 mov timer_h,#4ch mov timer_coun,#00h ;中斷計數(shù) mov ie,#82h ;ea=1,et0=1 lcall read_e2 mov 20h,#00h setb beep setb c1 setb c2 mov 7fh,#0ah ;熄滅符 call reset ;復位與檢測ds18b20 jnb flag1,m

35、ain1 ;flag1=0,ds18b20不存在 jmp startmain1: call reset jb flag1,start lcall beep_bl ;ds18b20錯誤,報警 jmp main1start: mov a,#0cch ; 跳過rom匹配 call write mov a,#044h ; 發(fā)出溫度轉換命令 call write call reset mov a,#0cch ; 跳過rom匹配 call write mov a,#0beh ; 發(fā)出讀溫度命令 call write call read ;讀溫度數(shù)據(jù) call convtemp call dispbcd c

36、all disp1 call scankey lcall temp_comp jmp main1;=;ds18b20 復位與檢測子程序;flag1=1 ok, flag1=0 error;=reset: setb data_line nop clr data_line mov r0,#64h ;主機發(fā)出延時600微秒的復位低脈沖 mov r1,#03hreset1: djnz r0,$ mov r0,#64h djnz r1,reset1 setb data_line ;然后拉高數(shù)據(jù)線 nop mov r0,#25hreset2: jnb data_line,reset3 ;等待ds18b20

37、回應 djnz r0,reset2 jmp reset4 ; 延時reset3: setb flag1 ; 置標志位,表示ds1820存在 jmp reset5reset4: clr flag1 ; 清標志位,表示ds1820不存在 jmp reset6reset5: mov r0,#064h djnz r0,$ ; 時序要求延時一段時間reset6: setb data_line ret;=;=write: mov r2,#8 ;一共8位數(shù)據(jù) clr cywr1: clr data_line ;開始寫入ds18b20總線要處于復位(低)狀態(tài) mov r3,#09 djnz r3,$ ;總線復

38、位保持18微妙以上 rrc a ;把一個字節(jié)data 分成8個bit環(huán)移給c mov data_line,c ;寫入一個bit mov r3,#23 djnz r3,$ ;等待46微妙 setb data_line ;重新釋放總線 nop djnz r2,wr1 ;寫入下一個bit setb data_line ret;=;從ds18b20中讀出溫度低位、高位和動作溫度設定值th、tl;存入26h、27h、28h、29h;=read: mov r4,#4 ; 將溫度高位和低位從ds18b20中讀出 mov r1,#26h ; 存入26h、27h、28h、29hre00: mov r2,#8re

39、01: clr c setb data_line nop nop clr data_line ;讀前總線保持為低 nop nop nop setb data_line ;開始讀總線釋放 mov r3,#09 ;延時18微妙 djnz r3,$ mov c,data_line ;從ds18b20總線讀得一個bit mov r3,#23 djnz r3,$ ;等待46微妙 rrc a ;把讀得的位值環(huán)移給a djnz r2,re01 ;讀下一個bit mov r1,a inc r1 djnz r4,re00 ret ;-;200ms對閃動標記取反一次;-int_t0: push acc push

40、psw mov tl0,timer_l mov th0,timer_h inc timer_coun mov a,timer_coun cjne a,#04h,int_end mov timer_coun,#00h cpl flag2int_end: pop psw pop acc reti;=;重新對 ds18b20 初始化;將設定的動作溫度設定值寫入 ds18b20;=re_18b20: jb flag1,re_18b20a retre_18b20a: call reset mov a,#0cch ;跳過rom匹配 lcall write mov a,#4eh ;寫暫存寄存器 lcall

41、write mov a,temp_th ;th(動作上限溫度) lcall write mov a,temp_tl ;tl(動作下限溫度) lcall write mov a,#7fh ;12位精確度 lcall write ret;=;功能鍵掃描子程序;=scankey: mov p1,#0f0h jb k1,scan_k2 call beep_blscan_k1: call alert_tl call alert_play jb k1,scan_k1 call beep_blscan_k11: call alert_th call alert_play jb k1,scan_k11 cal

42、l beep_blscan_k2: jb k2,scan_k3 call beep_blscan_k3: jb k3,scan_end call beep_bl lcall reset_alert lcall re_18b20 lcall write_e2scan_end: ret;=;設置動作溫度值tl,th;=reset_alert: call alert_tl call alert_play jnb k3,$ ;k3為位移鍵 setb tr0reset_tl: call alert_play jnb flag2,r_tl01 mov 75h,7fh ;送入熄滅符 mov 76h,7fh

溫馨提示

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

評論

0/150

提交評論