1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5708|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

本設(shè)計(jì)為一種溫控風(fēng)扇系統(tǒng),具有靈敏的溫度感測(cè)和顯示功能,系統(tǒng)AT89C5 單片機(jī)作為控制平臺(tái)對(duì)風(fēng)扇轉(zhuǎn)速進(jìn)行控制。可由用戶設(shè)置高、低溫度值,測(cè)得溫度值在高低溫度之間時(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)閉了,使人在睡夢(mèng)中熱醒而不得不起床重新打開風(fēng)扇,增加定時(shí)器時(shí)間,非常麻煩,而且可能多次定時(shí)后最后一次定時(shí)時(shí)間太長,在溫度降低以后風(fēng)扇依舊繼續(xù)吹風(fēng),使人感冒;第三方面是只有簡單的到了定時(shí)時(shí)間就關(guān)閉風(fēng)扇電源的單一功能,不能滿足氣溫變化對(duì)風(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è)備溫度上升,不能兩全其美。為解決上述問題,我們?cè)O(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 溫度傳感器的選用

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

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

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

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

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

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

對(duì)于方案三,由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉(zhuǎn)換等電路的誤差因素,溫度誤差很小,并且由于其感測(cè)溫度的原理與上述兩種方案的原理有著本質(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)。

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

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

2.3顯示電路

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

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

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

對(duì)于方案二,液晶體顯示屏具有顯示字符優(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)速電路。

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

對(duì)于方案二,以電位器控制晶閘管的導(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)

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

對(duì)于方案二,雖然在溫控狀態(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  系統(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 小體積封裝形式。溫度測(cè)量范圍為-55℃——+125℃,可編程為9 位——12 位A/D 轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625℃。被測(cè)溫度用符號(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 DS18B20 內(nèi)部結(jié)構(gòu)

圖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所示。

圖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)勢(shì),當(dāng)對(duì)外部八位地址數(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。因此它可用作對(duì)外部輸出的脈沖或用于定時(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所示。

圖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è)端口分別對(duì)數(shù)碼管進(jìn)行位選,事實(shí)上數(shù)碼管是間斷被點(diǎn)亮的,只是其間斷時(shí)間十分短,掃描周期在20ms以下,利用人眼視覺暫留,我們基本看不出它們的閃爍。

圖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è)定鍵。用于對(duì)風(fēng)速調(diào)節(jié)的上限和下限值TH、TL的設(shè)置。當(dāng)按下S1時(shí),可以加1,

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

圖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。

圖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)”。

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

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

圖9 總電原理圖

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

程序?qū)崿F(xiàn)的功能是上電復(fù)位時(shí)檢測(cè)溫度傳感器DS18B20是否存在或它工作是否正常,當(dāng)不存在或工作不正常時(shí)從蜂鳴器發(fā)出報(bào)警聲,提示用戶檢查DS18B20,安裝或者更換。這部分功能由DS18B20復(fù)位與檢測(cè)子程序RESET完成。當(dāng)檢測(cè)到傳感器工作正常后,發(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軟件對(duì)源程序編譯生成的.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攝氏度,用書對(duì)著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ī)律顯示,但是不能對(duì)風(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)力的功能。

測(cè)試結(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 程序流程圖

主程序流程圖

圖11  主程序流程圖

按鍵掃描子程序流程圖

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

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

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

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

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

溫度顯示子程序流程圖

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

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

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

附錄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ù)位與檢測(cè)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ù)位與檢測(cè)子程序
  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對(duì)閃動(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. ;重新對(duì) 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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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

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




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
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ù) 返回頂部 返回列表