找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5307|回復(fù): 2
收起左側(cè)

單片機(jī)智能精準(zhǔn)自動(dòng)溫控風(fēng)扇的設(shè)計(jì)文檔下載

[復(fù)制鏈接]
ID:218849 發(fā)表于 2017-7-11 16:05 | 顯示全部樓層 |閱讀模式

本設(shè)計(jì)為一種溫控風(fēng)扇系統(tǒng),具有靈敏的溫度感測和顯示功能,系統(tǒng)AT89C5 單片機(jī)作為控制平臺(tái)對風(fēng)扇轉(zhuǎn)速進(jìn)行控制?捎捎脩粼O(shè)置高、低溫度值,測得溫度值在高低溫度之間時(shí)打開風(fēng)扇弱風(fēng)檔,當(dāng)溫度升高超過所設(shè)定的溫度時(shí)自動(dòng)切換到大風(fēng)檔,當(dāng)溫度小于所設(shè)定的溫度時(shí)自動(dòng)關(guān)閉風(fēng)扇,控制狀態(tài)隨外界溫度而定。所設(shè)高低溫值保存在溫度傳感器DS18B20內(nèi)部E2ROM中,掉電后仍然能保存上次設(shè)定值,性能穩(wěn)定,控制準(zhǔn)確。

摘 要

目 錄

1引言

2 方案論證

2.1 溫度傳感器的選用
2.2 控制核心的選擇
2.3顯示電路
2.4調(diào)速方式
2.5控制執(zhí)行部件

3 系統(tǒng)簡述

4 硬件設(shè)計(jì)

4.1、本系統(tǒng)各器件簡介
4.1.1 DS18B20 單線數(shù)字溫度傳感器簡介
4.1.2 AT89C52 單片機(jī)簡介
4.1.3 八段LED 數(shù)碼管
4.2 各部分電路設(shè)計(jì)
4.2.1 電源電路
4.2.2 數(shù)碼管顯示電路
4.2.3 聲響、溫度采集、溫度設(shè)定以及復(fù)位電路
4.2.4 溫控自動(dòng)電路
4.2.5無級(jí)調(diào)速電路

5  軟件設(shè)計(jì)

6  安裝調(diào)試

參考文獻(xiàn)

附錄1 程序流程圖

附錄2 源程序


1引言

生活中,我們經(jīng)常會(huì)使用一些與溫度有關(guān)的設(shè)備。比如,現(xiàn)在雖然不少城市家庭用上了空調(diào),但在占中國大部分人口的農(nóng)村地區(qū)依舊使用電風(fēng)扇作為降溫防暑設(shè)備,春夏(夏秋)交替時(shí)節(jié),白天溫度依舊很高,電風(fēng)扇應(yīng)高轉(zhuǎn)速、大風(fēng)量,使人感到清涼;到了晚上,氣溫降低,當(dāng)人入睡后,應(yīng)該逐步減小轉(zhuǎn)速,以免使人感冒。雖然電風(fēng)扇都有調(diào)節(jié)不同檔位的功能,但必須要人手動(dòng)換檔,睡著了就無能為力了,而普遍采用的定時(shí)器關(guān)閉的做法,一方面是定時(shí)時(shí)間長短有限制,一般是一兩個(gè)小時(shí);另一方面可能在一兩個(gè)小時(shí)后氣溫依舊沒有降低很多,而風(fēng)扇就關(guān)閉了,使人在睡夢中熱醒而不得不起床重新打開風(fēng)扇,增加定時(shí)器時(shí)間,非常麻煩,而且可能多次定時(shí)后最后一次定時(shí)時(shí)間太長,在溫度降低以后風(fēng)扇依舊繼續(xù)吹風(fēng),使人感冒;第三方面是只有簡單的到了定時(shí)時(shí)間就關(guān)閉風(fēng)扇電源的單一功能,不能滿足氣溫變化對風(fēng)扇風(fēng)速大小的不同要求。又比如在較大功率的電子產(chǎn)品散熱方面,現(xiàn)在絕大多數(shù)都采用了風(fēng)冷系統(tǒng),利用風(fēng)扇引起空氣流動(dòng),帶走熱量,使電子產(chǎn)品不至于發(fā)熱燒壞。要使電子產(chǎn)品保持較低的溫度,必須用大功率、高轉(zhuǎn)速、大風(fēng)量的風(fēng)扇,而風(fēng)扇的噪音與其功率成正比。如果要低噪音,則要減小風(fēng)扇轉(zhuǎn)速,又會(huì)引起電子設(shè)備溫度上升,不能兩全其美。為解決上述問題,我們設(shè)計(jì)了這套溫控自動(dòng)風(fēng)扇系統(tǒng)。本系統(tǒng)采用高精度集成溫度傳感器,用單片機(jī)控制,能顯示實(shí)時(shí)溫度,并根據(jù)使用者設(shè)定的溫度自動(dòng)在相應(yīng)溫度時(shí)作出小風(fēng)、大風(fēng)、停機(jī)動(dòng)作,精確度高,動(dòng)作準(zhǔn)確。


2 方案論證

本系統(tǒng)實(shí)現(xiàn)風(fēng)扇的溫度控制,需要有較高的溫度變化分辨率和穩(wěn)定可靠的換檔停機(jī)控制部件。

2.1 溫度傳感器的選用

溫度傳感器可由以下幾種方案可供選擇:

方案一:選用熱敏電阻作為感測溫度的核心元件,通過運(yùn)算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進(jìn)而導(dǎo)至的輸出電壓變化的微弱電壓變化信號(hào),再用AD轉(zhuǎn)換芯片ADC0809將模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)輸入單片機(jī)處理。

方案二:采用熱電偶作為感測溫度的核心元件,配合橋式電路,運(yùn)算放大電路和AD轉(zhuǎn)換電路,將溫度變化信號(hào)送入單片機(jī)處理。

方案三:采用數(shù)字式集成溫度傳感器DS18B20作為感測溫度的核心元件,直接輸出數(shù)字溫度信號(hào)供單片機(jī)處理。

對于方案一,采用熱敏電阻有價(jià)格便宜、元件易購的優(yōu)點(diǎn),但熱敏電阻對溫度的細(xì)微變化不敏感,在信號(hào)采集、放大、轉(zhuǎn)換過程中還會(huì)產(chǎn)生失真和誤差,并且由于熱敏電阻的R-T關(guān)系的非線性,其本身電阻對溫度的變化存在較大誤差,雖然可以通過一定電路予以糾正,但不僅將使電路復(fù)雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測到小的溫度變化。故該方案不適合本系統(tǒng)。

對于方案二,采用熱電偶和橋式測量電路相對于熱敏電阻其對溫度的敏感性和器件的非線性誤差都有較大提高,其測溫范圍也非常寬,從-50攝氏度到1600攝氏度均可測量。但是依然存在電路復(fù)雜,對溫度敏感性達(dá)不到本系統(tǒng)要求的標(biāo)準(zhǔn),故不采用該方案。

對于方案三,由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉(zhuǎn)換等電路的誤差因素,溫度誤差很小,并且由于其感測溫度的原理與上述兩種方案的原理有著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件內(nèi)部轉(zhuǎn)換成數(shù)字量直接輸出,簡化了系統(tǒng)程序設(shè)計(jì),又由于該傳感器采用先進(jìn)的單總線技術(shù)(1-WRIE),與單片機(jī)的接口變的非常簡潔,抗干擾能力強(qiáng)。關(guān)于DS18B20的詳細(xì)參數(shù)參看下面“硬件設(shè)計(jì)”中的器件介紹。

2.2 控制核心的選擇

方案一:采用電壓比較電路作為控制部件。溫度傳感器采用熱敏電阻或熱電偶等,溫度信號(hào)轉(zhuǎn)為電信號(hào)并放大,由集成運(yùn)放組成的比較電路判決控制風(fēng)扇轉(zhuǎn)速,當(dāng)高于或低于某值時(shí)將風(fēng)扇切換到相應(yīng)檔位。

方案二:采用單片機(jī)作為控制核心。以軟件編程的方法進(jìn)行溫度判斷,并在端口輸出控制信號(hào)。

對于方案一,采用電壓比較電路具有電路簡單、易于實(shí)現(xiàn),以及無需編寫軟件程序的特點(diǎn),但控制方式過于單一,不能自由設(shè)置上下限動(dòng)作溫度,無法滿足不同用戶以及不同環(huán)境下的多種動(dòng)作溫度要求,故不在本系統(tǒng)中采用。

對于方案二,以單片機(jī)作為控制器,通過編寫程序不但能將傳感器感測到的溫度通過顯示電路顯示出來,而且用戶能通過鍵盤接口,自由設(shè)置上下限動(dòng)作溫度值,滿足全方位的需求。并且通過程序判斷溫度具有極高的精準(zhǔn)度,能精確把握環(huán)境溫度的微小變化。故本系統(tǒng)采用方案二。

2.3顯示電路

方案一:采用五位共陽數(shù)碼管顯示溫度,動(dòng)態(tài)掃描顯示方式。

方案二:采用液晶顯示屏LCD顯示溫度

對于方案一,該方案成本低廉,顯示溫度明確醒目,在夜間也能看見,功耗極低,顯示驅(qū)動(dòng)程序的編寫也相對簡單,這種顯示方式得到廣泛應(yīng)用。不足的地方是掃描顯示方式是使五個(gè)LED逐個(gè)點(diǎn)亮,因此會(huì)有閃爍,但是人眼的視覺暫留時(shí)間為20MS,當(dāng)數(shù)碼管掃描周期小于這個(gè)時(shí)間時(shí)人眼將感覺不到閃爍,因此可以通過增大掃描頻率來消除閃爍感。

對于方案二,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點(diǎn),這是LED數(shù)碼管無法比擬的。但是液晶顯示模塊價(jià)格昂貴,驅(qū)動(dòng)程序復(fù)雜,從簡單實(shí)用的原則考慮,本系統(tǒng)采用方案一。

2.4調(diào)速方式

方案一:采用變壓器調(diào)節(jié)方式,運(yùn)用電磁感應(yīng)原理將220V電壓通過線圈降壓到不同的電壓,控制風(fēng)扇電機(jī)接到不同電壓值的線圈上可控制電機(jī)的轉(zhuǎn)速,從而控制風(fēng)扇風(fēng)力大小。

方案二:采用晶閘管構(gòu)成無級(jí)調(diào)速電路。

對于方案一,由于采用變壓器改變電壓調(diào)節(jié),有風(fēng)速級(jí)別限制,不能適應(yīng)人性化要求。且在變壓過程中會(huì)有損耗發(fā)熱,效率不高,發(fā)熱有不安全因素。

對于方案二,以電位器控制晶閘管的導(dǎo)通角大小,可實(shí)現(xiàn)由最大風(fēng)速到關(guān)閉的無級(jí)別調(diào)速,可將風(fēng)力調(diào)節(jié)在關(guān)閉無風(fēng)到最大風(fēng)之間的任意風(fēng)力,實(shí)現(xiàn)“自由風(fēng)”。且在調(diào)速環(huán)節(jié)中基本無電力損耗。故本系統(tǒng)采用方案二。

2.5控制執(zhí)行部件

方案一:采用數(shù)模轉(zhuǎn)換芯片AD0832控制,由單片機(jī)根據(jù)當(dāng)前溫度值送出相應(yīng)數(shù)字量到AD0832,由AD0832產(chǎn)生模擬信號(hào)控制晶閘管的導(dǎo)通角,從而配合無級(jí)調(diào)速電路實(shí)現(xiàn)溫控時(shí)的自動(dòng)無級(jí)風(fēng)力調(diào)節(jié)。

方案二:采用繼電器,繼電器的接有控制晶閘管導(dǎo)通角的電阻的接入電路與否由單片機(jī)控制,根據(jù)當(dāng)前溫度值在相應(yīng)管腳送出高/低電平,決定某個(gè)繼電器的導(dǎo)通角控制電阻是否接入電路。(詳見4.2.4)

對于方案一,該方案能夠?qū)崿F(xiàn)在風(fēng)扇處于溫控狀態(tài)時(shí)也能無級(jí)調(diào)速,但是D/A轉(zhuǎn)換芯片價(jià)格較高,與其溫控狀態(tài)下無級(jí)調(diào)速功能相比性價(jià)比不高。

對于方案二,雖然在溫控狀態(tài)下只能實(shí)現(xiàn)弱/大風(fēng)兩級(jí)調(diào)速,但采用繼電器價(jià)格便宜,控制可靠,且出于在溫控狀態(tài)時(shí)無級(jí)調(diào)速并不是特別需要的功能,綜合考慮采用方案二。


3 系統(tǒng)簡述

本系統(tǒng)由集成溫度傳感器、單片機(jī)、LED數(shù)碼管、繼電器、雙向晶閘管、蜂鳴器及一些其他外圍器件組成。使用具有價(jià)廉易購的AT89S52單片機(jī)編程控制,通過修改程序可方便實(shí)現(xiàn)系統(tǒng)升級(jí)。系統(tǒng)的框圖結(jié)構(gòu)如下: 1.001.jpg

圖1  系統(tǒng)框圖


4 硬件設(shè)計(jì)

系統(tǒng)主要部件包括DS18B20溫度傳感器、AT89S52單片機(jī)、雙向晶閘管、五位LED數(shù)碼管和風(fēng)扇。輔助元件包括繼電器、蜂鳴器、電阻、晶振、電源、按鍵和撥碼開關(guān)等。

4.1、本系統(tǒng)各器件簡介
4.1.1 DS18B20 單線數(shù)字溫度傳感器簡介

DS18B20 單線數(shù)字溫度傳感器是Dallas 半導(dǎo)體公司開發(fā)的世界上第一片支持“一線總線”接口的溫度傳感器。它具有3 引腳TO-92 小體積封裝形式。溫度測量范圍為-55℃——+125℃,可編程為9 位——12 位A/D 轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625℃。被測溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出。工作電壓支持3V——5.5V 的電壓范圍,既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。DS18B20 還支持“一線總線”接口,多個(gè)DS18B20可以并聯(lián)到3 根或2 根線上,CPU 只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。它還有存儲(chǔ)用戶定義報(bào)警溫度等功能。

DS18B20 內(nèi)部結(jié)構(gòu)及管腳

DS18B20 內(nèi)部結(jié)構(gòu)如圖3所示,主要由4 部分組成:64 位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH 和TL、配置寄存器。其管腳排列如圖4所示,DQ 為數(shù)字信號(hào)端,GND 為電源地,VDD 為電源輸入端。

1.002.jpg

圖1 DS18B20 內(nèi)部結(jié)構(gòu)

1.003.jpg

圖2 DS18B20外形及管腳

4.1.2 AT89C52 單片機(jī)簡介

AT89C52 是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPEROM)256B片內(nèi)RAM的低電壓,高性能CMOS8 位微處理器。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51 指令集和輸出管腳相兼容。由于將多功能8 位CPU 和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL 的AT89C52 是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。

AT89C52單片機(jī)管腳

AT89C52單片機(jī)管腳如圖3所示。

1.004.jpg

圖3 AT89C52單片機(jī)管腳

各管腳功能:

VCC:供電電壓。

GND:接地。

P0 口:P0 口為一個(gè)8 位漏級(jí)開路雙向I/O 口,每腳可吸收8TTL 門電流。當(dāng)P1 口的管腳第一次寫1 時(shí),被定義為高阻輸入。P0 能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH 編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH 進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0 外部必須被拉高。

P1 口:P1 口是一個(gè)內(nèi)部提供上拉電阻的8 位雙向I/O 口,P1 口緩沖器能接收輸出4TTL門電流。P1 口管腳寫入1 后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH 編程和校驗(yàn)時(shí),P1 口作為第八位地接

收。

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

P3 口:P3 口管腳是8 個(gè)帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出4 個(gè)TTL 門電流。當(dāng)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(記時(shí)器0外部輸入);P3.5:T1(記時(shí)器1外部輸入);P3.6:/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通);P3.7:/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)。     P3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。

RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST 腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH 編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE 脈沖。如想禁止ALE 的輸出可在SFR8EH 地址上置0。此時(shí),ALE 只有在執(zhí)行MOVX,MOVC 指令是ALE 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE 禁止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN 信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA 保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1 時(shí),/EA 將內(nèi)部鎖定為RESET;當(dāng)/EA 端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH 編程期間,此引腳也用于施加12V 編程電源(VPP)。

XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。

XTAL2:來自反向振蕩器的輸出。

4.1.3 八段LED 數(shù)碼管

本系統(tǒng)使用五個(gè)七段LED數(shù)碼管作為溫度顯示,公共陽極。

4.2 各部分電路設(shè)計(jì)4.2.1 電源電路

電源電路采用LM7805集成穩(wěn)壓器作為穩(wěn)壓器件,用典型接法,220V電源整流濾波后送入LM7805穩(wěn)壓,在輸出端接一個(gè)470U和0.1U電容進(jìn)一步濾除紋波,得到5V穩(wěn)壓電源。電路如圖4所示。

1.005.jpg

圖4 電源

4.2.2 數(shù)碼管顯示電路

顯示部分包括如下圖5: 5個(gè)八段(共陽)數(shù)碼管、PNP型三極管、電阻等。其連接方式如下:應(yīng)用單片機(jī)P0口連接八段數(shù)碼管,用P2口的P2.3—P2.7五個(gè)端口作為數(shù)碼管的片選信號(hào)輸出端口,其中要用8550(PNP型)三極管做驅(qū)動(dòng)。又因?yàn)镻0口做I/O口時(shí)要加上拉電阻,所以我們給P0各位各加一個(gè)10K的電阻到電源。為了防止燒壞數(shù)碼管,所以給數(shù)碼管各段各加一個(gè)300歐姆的限流電阻。要顯示的數(shù)據(jù)通過P0口送給數(shù)碼管顯示,通過P2口的P2.7—P2.3五個(gè)端口分別對數(shù)碼管進(jìn)行位選,事實(shí)上數(shù)碼管是間斷被點(diǎn)亮的,只是其間斷時(shí)間十分短,掃描周期在20ms以下,利用人眼視覺暫留,我們基本看不出它們的閃爍。

1.006.jpg

圖5 顯示電路

4.2.3 聲響、溫度采集、溫度設(shè)定以及復(fù)位電路

電路如圖6所示,這一部分主要是由DS18B20,四個(gè)按鍵、一個(gè)電容一個(gè)三極管和一個(gè)蜂鳴器等構(gòu)成。

聲響電路在每按下按鍵時(shí)會(huì)響一聲,當(dāng)沒有把DS18B20接入到電路中時(shí),單片機(jī)就會(huì)通過蜂鳴器發(fā)出報(bào)警聲音。

溫度采集電路主要是由DS18B20構(gòu)成,它可以把采集的溫度數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制數(shù),經(jīng)過單片機(jī)處理后輸出送數(shù)碼管顯示。

  溫度設(shè)定主要是通過按鍵S1、S2|、S3來設(shè)定的。按鍵S1、S2、S3分別接入單片機(jī)的

P1.4、P1.5、P1.6腳。

S3是設(shè)定鍵。用于對風(fēng)速調(diào)節(jié)的上限和下限值TH、TL的設(shè)置。當(dāng)按下S1時(shí),可以加1,

長按可以快速加1,當(dāng)按下S2 時(shí),可以減1, 長按可以快速減1。

1.007.jpg

圖6 聲響、溫度采集、溫度設(shè)置及復(fù)位電路

4.2.4 溫控自動(dòng)電路

該電路為控制風(fēng)速的人工控制與溫控兩種方式之溫控模式時(shí)的控制電路,當(dāng)選擇為溫控時(shí),單片機(jī)默認(rèn)為弱風(fēng),當(dāng)當(dāng)前溫度低于所設(shè)的溫度下限TL時(shí)繼電器1吸合,關(guān)閉風(fēng)扇,當(dāng)當(dāng)前溫度高于所設(shè)的溫度上限時(shí)繼電器2吸合,切換到強(qiáng)風(fēng)檔。電路如圖7。

1.008.jpg

圖7 溫控自動(dòng)電路

4.2.5無級(jí)調(diào)速電路

此電路如圖8所示,包括:雙向可控硅,雙觸發(fā)二極管、滑動(dòng)變阻器、電容。

該電路為無級(jí)調(diào)速電路,通過調(diào)節(jié)滑動(dòng)變阻器的阻值來改變通過雙向二極管的電流,控制雙向晶閘管的導(dǎo)通角,從而控制電機(jī)的轉(zhuǎn)速?蓪(shí)現(xiàn)由最大風(fēng)速到關(guān)閉的無級(jí)別調(diào)速,可將風(fēng)力調(diào)節(jié)在關(guān)閉無風(fēng)到最大風(fēng)之間的任意風(fēng)力,實(shí)現(xiàn)“自由風(fēng)”。

1.009.jpg

圖8  無級(jí)調(diào)速電路

本系統(tǒng)的總電原理圖為:

1.010.jpg

圖9 總電原理圖

5  軟件設(shè)計(jì)

程序?qū)崿F(xiàn)的功能是上電復(fù)位時(shí)檢測溫度傳感器DS18B20是否存在或它工作是否正常,當(dāng)不存在或工作不正常時(shí)從蜂鳴器發(fā)出報(bào)警聲,提示用戶檢查DS18B20,安裝或者更換。這部分功能由DS18B20復(fù)位與檢測子程序RESET完成。當(dāng)檢測到傳感器工作正常后,發(fā)出溫度轉(zhuǎn)換命令及讀取溫度值命令,將從DS18B20讀取的二進(jìn)制溫度值轉(zhuǎn)換為七段碼在LED上顯示出來。顯示功能由溫度顯示子程序DISP1子程序?qū)崿F(xiàn)。

在溫控自動(dòng)狀態(tài),本系統(tǒng)可由用戶根據(jù)需要自由設(shè)置大小風(fēng)檔的切換溫度值TH,TL,硬件設(shè)計(jì)上為通過3個(gè)按鍵,由按鍵掃描子程序KEYSCAN子程序提供軟件支持。按下一次設(shè)置鍵K3,進(jìn)入低溫關(guān)風(fēng)扇溫度值TL設(shè)置狀態(tài),此時(shí)按下“加”鍵K1,TL值加一,長按K1不放可實(shí)現(xiàn)快速加1,按下“減”鍵K2,TL值減1,長按K2不放可實(shí)現(xiàn)快速減1。再按一次設(shè)置鍵K3,進(jìn)入高溫切換大風(fēng)檔溫度值TH設(shè)置狀態(tài),此時(shí)按下“加”鍵K1,TH值加一,長按K1不放可實(shí)現(xiàn)快速加1,按下“減”鍵K2,TH值減1,長按K2不放可實(shí)現(xiàn)快速減1。下限動(dòng)作溫度值TL和上限動(dòng)作溫度值的設(shè)置范圍為0-120攝氏度,滿足一般使用要求。再按一次設(shè)置鍵K3退出上下限溫度設(shè)置狀態(tài),恢復(fù)到當(dāng)前溫度顯示狀態(tài)。在當(dāng)前溫度顯示狀態(tài),按下“加”鍵K1一次顯示當(dāng)前TL設(shè)定值,再按一下顯示當(dāng)前TH設(shè)定值,如此循環(huán),按設(shè)置鍵K3退回到當(dāng)前溫度顯示狀態(tài)。每次設(shè)定的TL、TH值均拷備到DS18B20的EEROM內(nèi),在單片機(jī)掉電后設(shè)定值不會(huì)丟失,在再次上電時(shí)從DS18B20的EEROM中讀回上次設(shè)定的上下限動(dòng)作溫度值TH、TL,用戶

要實(shí)現(xiàn)根據(jù)當(dāng)前溫度實(shí)時(shí)的控制風(fēng)扇的狀態(tài),需要在程序中不時(shí)的判斷當(dāng)前溫度值是否超過設(shè)定的動(dòng)作溫度值范圍,此部分功能由比較控制子程序TEMP_COMP來完成。由于單片機(jī)的工作頻率高達(dá)12MHz,在執(zhí)行程序時(shí)不斷將當(dāng)前溫度和設(shè)定動(dòng)作溫度進(jìn)行比較判斷,當(dāng)超過設(shè)定溫度值范圍時(shí)及時(shí)的轉(zhuǎn)去執(zhí)行超溫處理和欠溫處理子程序,控制繼電器的吸合、斷開狀態(tài),從而控制風(fēng)扇實(shí)時(shí)的切換到關(guān)閉、弱風(fēng)、大風(fēng)三個(gè)狀態(tài)。在沒有超過設(shè)定的TL、TH值時(shí)默認(rèn)將風(fēng)扇置為弱風(fēng)檔。該比較控制程序又由溫度比較程序、超溫處理子程序和欠溫處理子程序構(gòu)成。

顯示驅(qū)動(dòng)程序以查七段碼取得各數(shù)碼管應(yīng)顯數(shù)字,逐位掃描顯示。

主程序和個(gè)主要子程序的流程圖如附錄1所示。


6  安裝調(diào)試

將本電路用硬件做出來,用編程器將KEIL軟件對源程序編譯生成的.HEX文件燒入AT89C52單片機(jī),將單片機(jī)插入到目標(biāo)板中,連好線。

將“控制模式”開關(guān)選擇在“溫控”,打開電源,風(fēng)扇工作在弱風(fēng)檔,數(shù)碼管正常顯示當(dāng)前的溫度21.6攝氏度,第五位數(shù)碼管閃爍顯示“O”,表示當(dāng)前溫度在TL和TH值之間,沒有欠溫或超溫。按“設(shè)置”鍵及“加”“減”鍵將下限動(dòng)作溫度值TL設(shè)為20攝氏度,將上限動(dòng)作溫度值TH設(shè)為23攝氏度,用書對著DS18B20扇動(dòng),顯示溫度逐漸降低,當(dāng)達(dá)到19.9攝氏度時(shí)繼電器1動(dòng)作,將風(fēng)扇關(guān)閉,第五位數(shù)碼管閃爍顯示“L”,表示當(dāng)前溫度低于TL值。然后用手握著DS18B20,顯示溫度逐步上升,當(dāng)達(dá)到23.1攝氏度時(shí)繼電器2動(dòng)作,將風(fēng)扇切換到大風(fēng)檔,第五位數(shù)碼管閃爍顯示“H”,表示當(dāng)前溫度高于TH值。

將“控制模式”開關(guān)選擇在“人控”,這時(shí)數(shù)碼管依然按照上述規(guī)律顯示,但是不能對風(fēng)扇進(jìn)行控制。用手旋動(dòng)無級(jí)調(diào)速旋鈕,可以將風(fēng)扇從關(guān)閉一直連續(xù)調(diào)到最大風(fēng)速,具有無級(jí)調(diào)節(jié)風(fēng)扇風(fēng)力的功能。

測試結(jié)果表明,本系統(tǒng)實(shí)現(xiàn)了預(yù)期功能。


參考文獻(xiàn)

[1] 胡漢才.單片機(jī)原理及其接口技術(shù).北京:清華大學(xué)出版社,2004

[2] 吳金戍,沈慶陽,郭庭吉.8051單片機(jī)實(shí)踐與應(yīng)用.北京: 清華大學(xué)出版社,2002

[3] 求是科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航.北京:人民郵電出版社,2004

[4] 王化詳,張淑英.傳感器原理.天津:天津大學(xué)出版社,2002

[5] 榮俊昌.新型電風(fēng)扇原理與維修.北京:高等教育出版社,2004

[6] 王港元.電工電子實(shí)踐指導(dǎo).江西:江西科學(xué)技術(shù)出版社,2005











附錄1 程序流程圖

主程序流程圖

1.011.jpg

圖11  主程序流程圖

按鍵掃描子程序流程圖

1.012.jpg

1.013.jpg

圖12 按鍵掃描子程序流程圖

設(shè)置上下限動(dòng)作溫度值TH,TL子程序流程圖

1.014.jpg

圖13 設(shè)置上下限動(dòng)作溫度值TH,TL子程序流程圖

實(shí)時(shí)溫度值與設(shè)定TH,TL值比較及超、欠溫處理子程序流程圖

1.015.jpg

圖14  實(shí)時(shí)溫度值與設(shè)定TH,TL值比較及超、欠溫處理子程序流程圖

溫度顯示子程序流程圖

1.016.jpg

圖15  溫度顯示子程序流程圖

DS18B20復(fù)位與檢測子程序

1.017.jpg

圖16  DS18B20復(fù)位與檢測子程序

附錄2 源程序

單片機(jī)源程序如下:


  1. ********************************************************************
  2. ;精準(zhǔn)溫度顯示溫控自動(dòng)風(fēng)扇系統(tǒng)     *
  3. ;*說明:
  4. ;*    1、K3 → 進(jìn)入設(shè)定低溫動(dòng)作溫度值 TL 狀態(tài):
  5. ;*    2、K3 → 進(jìn)入設(shè)定高溫動(dòng)作溫度值 TH 狀態(tài):
  6. ;*    3、K3 → 返回
  7. ;*    4、設(shè)定過程: K1 →加鍵 (UP), K2 →減鍵 (DOWN),可快速調(diào)
  8. ;     5、實(shí)際溫度在TL和TH之間時(shí),開啟弱風(fēng)檔,低于TL時(shí),關(guān)閉風(fēng)扇;
  9. ;高于TH時(shí),開啟大風(fēng)檔。每次設(shè)置的TH和TL均被保存在DS18B20的ROM
  10. ;內(nèi),掉不需重新設(shè)置.         *
  11. ;********************************************************************
  12.           TIMER_L     DATA  23H
  13.           TIMER_H     DATA  24H
  14.           TIMER_COUN  DATA  25H

  15.           TEMPL       DATA  26H
  16.           TEMPH       DATA  27H
  17.           TEMP_TH     DATA  28H
  18.           TEMP_TL     DATA  29H

  19.           TEMPHC      DATA  2AH
  20.           TEMPLC      DATA  2BH
  21.           TEMP_ZH     DATA  2CH

  22.           BEEP        EQU   P3.7
  23.           DATA_LINE   EQU   P3.3
  24.           C1          EQU   P3.4    ;C1控制口,接繼電器1
  25.           C2          EQU   P3.5    ;C2控制口,接繼電器2

  26.           FLAG1       EQU   20H.0
  27.           FLAG2       EQU   20H.1

  28. ;-------------------------------------------------
  29.           K1   EQU  P1.4
  30.           K2   EQU  P1.5
  31.           K3   EQU  P1.6
  32. ;=================================================
  33.           ORG 0000H
  34.           JMP  MAIN

  35.           ORG  000BH
  36.           AJMP  INT_T0
  37. ;--------------------------------------------------
  38. MAIN:     MOV    SP,#30H
  39.           MOV    TMOD,#01H       ;T0,方式1
  40.           MOV    TIMER_L,#00H     ;50ms定時(shí)值
  41.           MOV    TIMER_H,#4CH
  42.           MOV    TIMER_COUN,#00H  ;中斷計(jì)數(shù)
  43.           MOV    IE,#82H          ;EA=1,ET0=1
  44.           LCALL  READ_E2
  45.           MOV    20H,#00H
  46.           SETB    BEEP
  47.     SETB  C1
  48.     setb  C2   
  49.           MOV    7FH,#0AH         ;熄滅符

  50.           CALL   RESET            ;復(fù)位與檢測DS18B20
  51.           JNB    FLAG1,MAIN1       ;FLAG1=0,DS18B20不存在
  52.           JMP    START

  53. MAIN1:    CALL   RESET
  54.           JB     FLAG1,START
  55.           LCALL  BEEP_BL        ;DS18B20錯(cuò)誤,報(bào)警
  56.           JMP    MAIN1
  57. START:
  58.           MOV    A,#0CCH         ; 跳過ROM匹配
  59.           CALL   WRITE
  60.           MOV    A,#044H         ; 發(fā)出溫度轉(zhuǎn)換命令
  61.           CALL   WRITE

  62.           CALL   RESET
  63.           MOV    A,#0CCH         ; 跳過ROM匹配
  64.           CALL   WRITE
  65.           MOV    A,#0BEH         ; 發(fā)出讀溫度命令
  66.           CALL   WRITE

  67.           CALL   READ           ;讀溫度數(shù)據(jù)
  68.           CALL   CONVTEMP
  69.           CALL   DISPBCD
  70.           CALL   DISP1
  71.           CALL   SCANKEY
  72.           LCALL  TEMP_COMP
  73.           JMP     MAIN1

  74. ;=====================================================
  75. ;DS18B20 復(fù)位與檢測子程序
  76. ;FLAG1=1 OK, FLAG1=0 ERROR
  77. ;======================================================
  78. RESET:
  79.           SETB   DATA_LINE
  80.           NOP
  81.           CLR    DATA_LINE
  82.           MOV    R0,#64H            ;主機(jī)發(fā)出延時(shí)600微秒的復(fù)位低脈沖
  83.           MOV    R1,#03H
  84. RESET1:   DJNZ   R0,$
  85.           MOV    R0,#64H
  86.           DJNZ   R1,RESET1
  87.           SETB   DATA_LINE        ;然后拉高數(shù)據(jù)線
  88.           NOP
  89.           MOV    R0,#25H
  90. RESET2:   JNB    DATA_LINE,RESET3  ;等待DS18B20回應(yīng)
  91.           DJNZ   R0,RESET2
  92.           JMP    RESET4            ; 延時(shí)
  93. RESET3:   SETB   FLAG1            ; 置標(biāo)志位,表示DS1820存在
  94.           JMP    RESET5
  95. RESET4:   CLR    FLAG1             ; 清標(biāo)志位,表示DS1820不存在
  96.           JMP    RESET6
  97. RESET5:   MOV    R0,#064H
  98.           DJNZ   R0,[        DISCUZ_CODE_2        ]nbsp;            ; 時(shí)序要求延時(shí)一段時(shí)間
  99. RESET6:   SETB   DATA_LINE
  100.           RET
  101. ;===========================================================
  102. ;
  103. ;===========================================================
  104. WRITE:  MOV      R2,#8            ;一共8位數(shù)據(jù)
  105.         CLR      CY
  106. WR1:
  107.         CLR      DATA_LINE        ;開始寫入DS18B20總線要處于復(fù)位(低)狀態(tài)
  108.         MOV      R3,#09
  109.         DJNZ     R3,[        DISCUZ_CODE_2        ]nbsp;           ;總線復(fù)位保持18微妙以上
  110.         RRC      A                ;把一個(gè)字節(jié)DATA 分成8個(gè)BIT環(huán)移給C
  111.         MOV      DATA_LINE,C      ;寫入一個(gè)BIT
  112.         MOV      R3,#23
  113.         DJNZ     R3,[        DISCUZ_CODE_2        ]nbsp;           ;等待46微妙
  114.         SETB     DATA_LINE       ;重新釋放總線
  115.         NOP
  116.         DJNZ     R2,WR1          ;寫入下一個(gè)BIT
  117.         SETB     DATA_LINE
  118.         RET
  119. ;============================================================
  120. ;從DS18B20中讀出溫度低位、高位和動(dòng)作溫度設(shè)定值TH、TL
  121. ;存入26H、27H、28H、29H
  122. ;============================================================
  123. READ:    MOV     R4,#4            ; 將溫度高位和低位從DS18B20中讀出
  124.          MOV     R1,#26H          ; 存入26H、27H、28H、29H
  125. RE00:    MOV     R2,#8
  126. RE01:    CLR     C
  127.          SETB    DATA_LINE
  128.          NOP
  129.          NOP
  130.          CLR     DATA_LINE        ;讀前總線保持為低
  131.          NOP
  132.          NOP
  133.          NOP
  134.          SETB    DATA_LINE       ;開始讀總線釋放
  135.          MOV     R3,#09           ;延時(shí)18微妙
  136.          DJNZ    R3,$
  137.          MOV     C,DATA_LINE      ;從DS18B20總線讀得一個(gè)BIT
  138.          MOV     R3,#23
  139.          DJNZ    R3,[        DISCUZ_CODE_2        ]nbsp;           ;等待46微妙
  140.          RRC     A                ;把讀得的位值環(huán)移給A
  141.          DJNZ    R2,RE01         ;讀下一個(gè)BIT
  142.          MOV    @R1,A
  143.          INC    R1
  144.          DJNZ    R4,RE00
  145.          RET      
  146. ;--------------------------------------------
  147. ;200ms對閃動(dòng)標(biāo)記取反一次
  148. ;--------------------------------------------
  149. INT_T0:
  150.           PUSH   ACC
  151.           PUSH   PSW
  152.           MOV    TL0,TIMER_L
  153.           MOV    TH0,TIMER_H
  154.           INC    TIMER_COUN
  155.           MOV    A,TIMER_COUN
  156.           CJNE   A,#04H,INT_END
  157.           MOV    TIMER_COUN,#00H
  158.           CPL    FLAG2
  159. INT_END:
  160.           POP    PSW
  161.           POP    ACC
  162.           RETI
  163. ;==========================================================
  164. ;重新對 DS18B20 初始化
  165. ;將設(shè)定的動(dòng)作溫度設(shè)定值寫入 DS18B20
  166. ;==========================================================
  167. RE_18B20:
  168.         JB     FLAG1,RE_18B20A
  169.         RET
  170. RE_18B20A:
  171.         CALL   RESET
  172.         MOV    A,#0CCH       ;跳過ROM匹配
  173.         LCALL  WRITE
  174.         MOV    A,#4EH        ;寫暫存寄存器
  175.         LCALL  WRITE
  176.         MOV    A,TEMP_TH     ;TH(動(dòng)作上限溫度)
  177.         LCALL  WRITE
  178.         MOV    A,TEMP_TL     ;TL(動(dòng)作下限溫度)
  179.         LCALL  WRITE
  180.         MOV    A,#7FH        ;12位精確度
  181.         LCALL  WRITE
  182.         RET

  183. ;====================================================
  184. ;功能鍵掃描子程序
  185. ;====================================================
  186. SCANKEY:
  187.               MOV    P1,#0F0H
  188.               JB     K1,SCAN_K2
  189.               CALL   BEEP_BL
  190. SCAN_K1:      CALL   ALERT_TL
  191.               CALL   ALERT_PLAY
  192.               JB     K1,SCAN_K1
  193.               CALL   BEEP_BL
  194. SCAN_K11:     CALL   ALERT_TH
  195.               CALL   ALERT_PLAY
  196.               JB     K1,SCAN_K11
  197.               CALL   BEEP_BL
  198. SCAN_K2:      JB     K2,SCAN_K3
  199.               CALL   BEEP_BL
  200. SCAN_K3:      JB     K3,SCAN_END
  201.               CALL   BEEP_BL
  202.               LCALL  RESET_ALERT
  203.               LCALL  RE_18B20
  204.               LCALL  WRITE_E2
  205. SCAN_END:     RET

  206. ;================================================
  207. ;設(shè)置動(dòng)作溫度值TL,TH
  208. ;================================================
  209. RESET_ALERT:
  210.           CALL    ALERT_TL
  211.           CALL    ALERT_PLAY
  212.           JNB     K3,[        DISCUZ_CODE_2        ]nbsp;             ;K3為位移鍵
  213.           SETB    TR0
  214. RESET_TL:
  215.           CALL    ALERT_PLAY
  216.           JNB     FLAG2,R_TL01
  217.           mov     75H,7fh          ;送入熄滅符
  218.           mov     76H,7fh
  219.           CALL     ALERT_PLAY
  220.           JMP     R_TL02
  221. R_TL01:   CALL    ALERT_TL
  222.           mov     75h,7Eh          ;送設(shè)定值
  223.           mov     76h,7Dh
  224.           CALL    ALERT_PLAY      ;顯示設(shè)定值
  225. R_TL02:   JNB     K1,K011A
  226.           JNB     K2,K011B
  227.           JNB     K3,RESET_TH
  228.           JMP     RESET_TL
  229. K011A:
  230.           INC     TEMP_TL
  231.           MOV     A,TEMP_TL
  232.           CJNE    A,#120,K012A    ;沒有到設(shè)定上限值,轉(zhuǎn)
  233.           MOV     TEMP_TL,#0
  234. K012A:    CALL    TL_DEL
  235.           JMP     RESET_TL
  236. K011B:

  237.           MOV     A,TEMP_TL
  238.           CJNE    A,#00H,K     ;沒有到設(shè)定下限值,轉(zhuǎn)

  239.           MOV     TEMP_TL,#120
  240. K:        DEC     TEMP_TL
  241. K012B:    CALL    TL_DEL
  242.           JMP     RESET_TL
  243. ;-------------------------------------------------------
  244. RESET_TH:
  245.           CALL    BEEP_BL
  246.           JNB     K3,$
  247. RESET_TH1:
  248.           CALL    ALERT_PLAY
  249.           JNB     FLAG2,R_TH01
  250.           mov     75H,7fh          ;送入熄滅符
  251.           mov     76H,7fh
  252.           CALL    ALERT_PLAY
  253.           JMP     R_TH02
  254. R_TH01:   CALL    ALERT_TH
  255.           mov    75h,7Eh          ;
  256.           mov    76h,7Dh
  257.           CALL   ALERT_PLAY
  258. R_TH02:   JNB    K1,K021A
  259.           JNB    K2,K021B
  260.           JNB    K3,K002
  261.           JMP    RESET_TH1
  262. K021A:
  263.           INC    TEMP_TH
  264.           MOV    A,TEMP_TH
  265.           CJNE   A,#120,K022A   ;沒有到設(shè)定上限值,轉(zhuǎn)
  266.           MOV    TEMP_TH,#0
  267. K022A:    CALL   TH_DEL
  268.           JMP    RESET_TH1

  269. K021B:

  270.           MOV   A,TEMP_TH
  271.           CJNE  A,#00H,K023B   ;沒有到設(shè)定下限值,轉(zhuǎn)

  272.           MOV   TEMP_TH,#120
  273. K023B:    DEC   TEMP_TH
  274. K022B:    CALL  TH_DEL
  275.           JMP   RESET_TH1

  276. K002:     CALL  BEEP_BL
  277.           CLR   TR0             ;關(guān)閉中斷
  278.           RET
  279. ;-----------------------------------------------------
  280. ;鍵延時(shí)子程序
  281. ;多次調(diào)用動(dòng)作溫度設(shè)定值顯示程序來延時(shí)
  282. ;-----------------------------------------------------
  283. TL_DEL:                        ;動(dòng)作溫度低值TL延時(shí)
  284.           MOV   R2,#0AH
  285. TL_DEL1:  CALL  ALERT_TL
  286.           CALL  ALERT_PLAY
  287.           DJNZ  R2,TL_DEL1
  288.           RET
  289. TH_DEL:                        ;動(dòng)作溫度高值TH延時(shí)
  290.           MOV   R2,#0AH
  291. TH_DEL1:  CALL  ALERT_TH
  292.           CALL  ALERT_PLAY
  293.           DJNZ  R2,TH_DEL1
  294.           RET
  295. ;====================================================
  296. ;實(shí)時(shí)溫度值與動(dòng)作溫度設(shè)定值 TH、TL 比較子程序
  297. ;當(dāng)實(shí)際溫度大于 TH 的設(shè)定值時(shí),顯示"H",繼電器1吸合,繼電器2吸合
  298. ;當(dāng)實(shí)際溫度小于 TH 的設(shè)定值時(shí),顯示“O”,繼電器1、2斷開,
  299. ;當(dāng)實(shí)際溫度小于 TL 的設(shè)定值時(shí),顯示“L”。繼電器1吸合,繼電器2斷開
  300. ;閃動(dòng)顯示標(biāo)記符 H、L、O
  301. ;====================================================
  302. TEMP_COMP:
  303.           SETB  TR0             ;啟動(dòng)中斷
  304.           MOV   A,TEMP_TH
  305.           SUBB  A,#01H         
  306.           SUBB  A,TEMP_ZH       ;減數(shù)>被減數(shù),則
  307.           JC    CHULI1            ;借位標(biāo)志位C=1,轉(zhuǎn)
  308.           MOV   A,TEMP_ZH
  309.           SUBB  A,TEMP_TL       ;減數(shù)>被減數(shù),則
  310.           JC    CHULI2            ;借位標(biāo)志位C=1,轉(zhuǎn)
  311.           JNB   FLAG2,T_COMP1    ;FLAG2=0,顯示標(biāo)記字符
  312.           MOV   74H,#0AH         ;熄滅符
  313.           LCALL  DISP1
  314.           JMP    T_COMP2
  315. T_COMP1:  MOV    74H,#00H
  316.           LCALL  DISP1          ;顯示"O"
  317. T_COMP2:
  318.           SETB   C1          ;繼電器1斷開
  319.           SETB   C2          ;繼電器2斷開
  320.           CLR    TR0              ;關(guān)閉中斷
  321.           RET
  322. ;---------------------------------------------
  323. ;超溫處理
  324. ;---------------------------------------------
  325. CHULI1:
  326.         CLR    C1           ;繼電器1吸合
  327.           CLR    C2           ;繼電器2吸合
  328.           JNB    FLAG2,CHULI10
  329.           MOV    74H,#0AH         ;熄滅符
  330.           LCALL  DISP1
  331.           JMP    CHULI11
  332. CHULI10:  MOV    74H,#0DH        
  333.           LCALL  DISP1          ;顯示"H"
  334. CHULI11:
  335.           CLR   TR0              ;關(guān)閉中斷
  336.           RET
  337. ;---------------------------------------------
  338. ;欠溫處理
  339. ;---------------------------------------------
  340. CHULI2:   CLR    C1              ;繼電器1吸合
  341.           SETB   C2              ;繼電器2斷開
  342.           JNB    FLAG2,CHULI20
  343.           MOV    74H,#0AH         ;熄滅符
  344.           LCALL  DISP1
  345.           JMP    CHULI21
  346. CHULI20:  MOV    74H,#0CH        
  347.           LCALL  DISP1          ;顯示"L"
  348. CHULI21:  CLR    TR0              ;關(guān)閉中斷
  349.           RET
  350. ;------------------------------------------------------------
  351. ;把 DS18B20 暫存器里的動(dòng)作溫度設(shè)定值拷貝到EEROM
  352. ;------------------------------------------------------------
  353. WRITE_E2:
  354.         CALL    RESET
  355.         MOV     A,#0CCH        ;跳過ROM匹配
  356.         LCALL   WRITE
  357.         MOV     A,#48H         ;動(dòng)作溫度設(shè)定值拷貝到EEROM
  358.         LCALL   WRITE
  359.         RET
  360. ;--------------------------------------------------------------
  361. ;把 DS18B20 EEROM 里的動(dòng)作溫度設(shè)定值拷貝回暫存器
  362. ;-------------------------------------------------------------

  363. ……………………

  364. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

完整文檔下載(word格式 可編輯):

文檔.doc (433.5 KB, 下載次數(shù): 40)




回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-7-11 16:44 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:209608 發(fā)表于 2017-7-16 17:26 來自觸屏版 | 顯示全部樓層
很有幫助
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表