目 錄
1 緒 論1
11 智能風(fēng)扇發(fā)展史1
12 智能風(fēng)扇的工作原理2
13 本次設(shè)計(jì)的主要任務(wù)和內(nèi)容2
2 方案論證3
21 控制核心的選擇3
22 顯示電路的選擇3
23 調(diào)速方式的選擇4
24 溫度傳感器的選擇5
25 超聲波發(fā)生器的選擇5
3 系統(tǒng)主要硬件電路設(shè)計(jì)7
31 系統(tǒng)總體設(shè)計(jì)7
32 電源電路設(shè)計(jì)7
33 單片機(jī)最小系統(tǒng)電路設(shè)計(jì)8
331 AT89C51單片機(jī)簡(jiǎn)介8
332 單片機(jī)最小系統(tǒng)電路10
34 溫度采集電路設(shè)計(jì)11
341 DS18B20溫度傳感器簡(jiǎn)介11
342 溫度采集電路13
35 溫度顯示電路設(shè)計(jì)14
351 LED數(shù)碼管簡(jiǎn)介14
352 溫度顯示電路15
36 驅(qū)蚊電路設(shè)計(jì)15
361 TCT40-16T超聲波發(fā)射器簡(jiǎn)介15
362 驅(qū)蚊電路16
37 驅(qū)動(dòng)與調(diào)速電路設(shè)計(jì)17
371 達(dá)林頓反相器ULN2803簡(jiǎn)介17
372 驅(qū)動(dòng)與調(diào)速電路18
38 獨(dú)立按鍵電路設(shè)計(jì)18
4 軟件設(shè)計(jì)20
41 系統(tǒng)總體軟件設(shè)計(jì)流程圖20
42 用Keil C51進(jìn)行程序編輯21
5 系統(tǒng)調(diào)試與仿真22
51 系統(tǒng)軟件調(diào)試22
52 程序下載22
53 系統(tǒng)仿真22
6 結(jié) 論26
致 謝27
參考文獻(xiàn)28
附 錄29
1 緒 論 在現(xiàn)實(shí)生活中,我們要經(jīng)常使用一些降溫設(shè)備。雖然現(xiàn)在不少城市家庭都用空調(diào)設(shè)備作為降溫工具,但在大部分農(nóng)村家庭風(fēng)扇仍然是作為夏季降溫的主要工具。春夏或者夏秋交替季節(jié),早晚溫差比較大,白天溫度很高,風(fēng)扇應(yīng)該轉(zhuǎn)動(dòng)的比較快,這樣才能給人帶來(lái)涼爽。到了晚上,氣溫下降的很多,當(dāng)人們?nèi)胨螅L(fēng)扇的轉(zhuǎn)動(dòng)速度應(yīng)慢慢減下來(lái),防止感冒。雖然現(xiàn)在的風(fēng)扇有不同的檔位可以調(diào)節(jié),但都必須人工來(lái)?yè)Q擋,當(dāng)人們熟睡時(shí)就無(wú)能為力了。盡管現(xiàn)在普遍采用定時(shí)的方式解決這個(gè)問(wèn)題,但定時(shí)時(shí)間有限,一般最多只有兩個(gè)小時(shí),在這兩個(gè)小時(shí)內(nèi)溫度并不一定就會(huì)下降的很多,風(fēng)扇關(guān)閉后,人們可能就會(huì)因?yàn)檠谉嵩俅涡褋?lái)開啟電扇,這樣會(huì)使人的睡眠質(zhì)量大大降低。從以上的分析可知,需要設(shè)計(jì)出一種很智能化的電風(fēng)扇來(lái)解決。本設(shè)計(jì)用單片機(jī)作為控制核心,用溫度傳感器采集當(dāng)前溫度,LED數(shù)碼管顯示實(shí)時(shí)溫度,并根據(jù)當(dāng)前檢測(cè)到的溫度,輸出不同占空比的PWM脈沖信號(hào),從而風(fēng)扇實(shí)現(xiàn)了不同的轉(zhuǎn)速。 1.1 電風(fēng)扇的發(fā)展史 電風(fēng)扇簡(jiǎn)稱電扇,香港稱為風(fēng)扇,日本及韓國(guó)稱為扇風(fēng)機(jī),從發(fā)明到現(xiàn)在已經(jīng)經(jīng)過(guò)了一百多年,是炎熱夏季的寵物。電風(fēng)扇起源于1830年,是叫詹姆斯的一個(gè)美國(guó)人發(fā)明了一種用發(fā)條來(lái)驅(qū)動(dòng)的,可以固定在天花板上的電風(fēng)扇。1880年,一個(gè)叫舒樂(lè)的美國(guó)人第一次將葉片直接裝到電動(dòng)機(jī)上,再接上電源,葉片便很快速旋轉(zhuǎn)起來(lái)。1882年,一個(gè)叫休伊?斯卡茨?霍伊拉的紐約人最早發(fā)明了商品化的電風(fēng)扇。 中國(guó)生產(chǎn)的第一臺(tái)風(fēng)扇起于1916年,直到1925年華生電器制造廠才正式生產(chǎn)電風(fēng)扇,并很快贏得市場(chǎng)好評(píng)。 一開始電風(fēng)扇不能很好的控制時(shí)間,過(guò)了一段時(shí)間,便出現(xiàn)了一種可以設(shè)置風(fēng)扇轉(zhuǎn)動(dòng)時(shí)間,及可以根據(jù)設(shè)定的時(shí)間來(lái)開啟或者關(guān)閉的電風(fēng)扇,這種風(fēng)扇在當(dāng)時(shí)相當(dāng)受好評(píng),也受到廣大人民的喜愛(ài)。電風(fēng)扇的操作方式從一原先的旋鈕,到按鍵,再到現(xiàn)在的觸摸式操作[1]。 1.2 電風(fēng)扇的工作原理 電風(fēng)扇的主要功能器件是交流電機(jī),通電后線圈在磁場(chǎng)中因受力而轉(zhuǎn)動(dòng),能量的轉(zhuǎn)化形式是這樣的:電能主要是轉(zhuǎn)化為機(jī)械能,同時(shí)由于電阻問(wèn)題,電能還有一部分轉(zhuǎn)化成內(nèi)能。電風(fēng)扇工作時(shí),因?yàn)橛须娏髁鬟^(guò)電風(fēng)扇的線圈,而線圈是有電阻的,所以會(huì)產(chǎn)生部分熱量向外擴(kuò)散,因此電風(fēng)扇的溫度會(huì)增高。但人們?yōu)槭裁磿?huì)感覺(jué)到?jīng)鏊兀恳驗(yàn)槿梭w的表面在夏天有大量的汗液,當(dāng)電風(fēng)扇工作后,室內(nèi)的空氣會(huì)隨著電風(fēng)扇流動(dòng),所以就能夠蒸發(fā)人體表面的汗液,由物理學(xué)原理蒸發(fā)需要吸熱,故人們會(huì)感覺(jué)到非常涼爽[2] 。 1.3 本次設(shè)計(jì)的主要任務(wù)和內(nèi)容 本設(shè)計(jì)是以AT8951單片機(jī)為主要控制核心,利用51單片機(jī)對(duì)溫度傳感器采集到的數(shù)據(jù)進(jìn)行處理,并且通過(guò)各種電子元器件對(duì)電風(fēng)扇各種工作狀態(tài)進(jìn)行實(shí)時(shí)控制,從而可以達(dá)到用戶的要求。 本次設(shè)計(jì)主要完成以下內(nèi)容: (1) 能夠檢測(cè)當(dāng)前溫度并顯示,可根據(jù)預(yù)設(shè)溫度自動(dòng)開啟關(guān)閉,當(dāng)當(dāng)前溫度大于預(yù)設(shè)溫度,自動(dòng)開啟,小于預(yù)設(shè)溫度自動(dòng)關(guān)閉。 (2) 預(yù)設(shè)溫度可通過(guò)按鍵增加或減少。 (3) 可隨著外界溫度的增加風(fēng)扇可自行調(diào)速,主要分為五個(gè)檔位,溫度每升高五度風(fēng)扇自動(dòng)增加一檔。 (4) 具有驅(qū)蚊功能。
2 方案論證
2.1 控制核心的選擇 方案一:采用單片機(jī)作為主要控制芯片。在本設(shè)計(jì)中采用AT89C51單片機(jī),通過(guò)軟件編程的方法來(lái)實(shí)現(xiàn)對(duì)溫度的實(shí)時(shí)采集和控制,在其I/O口輸出相應(yīng)的控制信號(hào)。單片機(jī)AT89C51工作電壓相對(duì)比較低,單片內(nèi)含有4k字節(jié)的ROM和256字節(jié)的RAM,并且價(jià)格也相對(duì)較便宜。 方案二:采用電壓比較電路作為控制執(zhí)行部件。將采集到的溫度信號(hào)轉(zhuǎn)換為電信號(hào)并經(jīng)放大電路放大,集成運(yùn)算放大器組成的比較電路來(lái)判斷決定電風(fēng)扇的轉(zhuǎn)動(dòng)速度。 對(duì)于方案一,用單片機(jī)作為控制器件,通過(guò)簡(jiǎn)單的程序編寫可以將溫度傳感器DS18B20檢測(cè)的溫度通過(guò)LED數(shù)碼管顯示出來(lái),而且可以通過(guò)按鍵掃描程序通過(guò)單片機(jī)的外部按鍵對(duì)預(yù)設(shè)的初值進(jìn)行增加或者減少,同時(shí)對(duì)于驅(qū)蚊功能采用單片機(jī)的軟件編程更易實(shí)現(xiàn),成本低,故以單片機(jī)AT89C51為控制核心,適合本次設(shè)計(jì)。對(duì)于AT89C51的具體參數(shù)參見下面“硬件設(shè)計(jì)”中的各器件介紹。 對(duì)于方案二,采用電壓比較電路作為控制的核心,雖然電路比較簡(jiǎn)單、容易實(shí)現(xiàn),但不能對(duì)預(yù)設(shè)溫度的值進(jìn)行更改,無(wú)法滿足不同用戶的需求,故本次設(shè)計(jì)不采用。 2.2 顯示電路的選擇 方案一 :采用LCD液晶顯示器顯示。 方案二:采用數(shù)碼管做顯示器件,共陰極接法,動(dòng)態(tài)方式顯示[3]。 對(duì)于方案一,液晶顯示屏顯示的字符非常優(yōu)美,這一優(yōu)點(diǎn)LED數(shù)碼管是無(wú)法做到的,但是液晶顯示屏價(jià)格太過(guò)昂貴,驅(qū)動(dòng)程序編寫起來(lái)也是相當(dāng)復(fù)雜的,本次設(shè)計(jì)不采用。 對(duì)于方案二,用LED顯示,成本非常低,溫度顯示清晰可見,即使夜間也能看見,顯示程序的編寫也比較容易,因此這種顯示方式得到了廣泛的應(yīng)用。不足的地方是采用該方案可能會(huì)產(chǎn)生閃爍現(xiàn)象,因?yàn)檫@種動(dòng)態(tài)掃描方式五個(gè)LED數(shù)碼管是逐個(gè)點(diǎn)亮的,但由于人眼有個(gè)視覺(jué)暫留效應(yīng),為20MS,我們只要設(shè)定合適的掃面周期就可以避免閃爍現(xiàn)象,故這一方案可行。關(guān)于LED的詳細(xì)參數(shù)參看下面“硬件設(shè)計(jì)”中的各器件介紹。 2.3 調(diào)速方式的選擇 方案一:采用變壓器調(diào)節(jié)方式,運(yùn)用變壓器原理將市電220V交流電壓通過(guò)線圈降壓到不同的值,電風(fēng)扇電機(jī)接到不同電壓值的線圈上就可以來(lái)控制直流電機(jī)的轉(zhuǎn)速。 方案二:采用單片機(jī)的PWM軟件編程方式。PWM中文意思是脈沖寬度調(diào)制,英文意思是Pulse Width Modulation的簡(jiǎn)寫形式,它是一種按某種規(guī)律變化的脈沖方波,在PWM驅(qū)動(dòng)直流電機(jī)的調(diào)節(jié)控制系統(tǒng)當(dāng)中,最常用的是矩形PWM脈沖波信號(hào),也是編寫程序最簡(jiǎn)單的。在對(duì)直流電機(jī)的轉(zhuǎn)速進(jìn)行控制時(shí),需要根據(jù)當(dāng)前溫度來(lái)輸出不同占空比的PWM脈沖。PWM脈沖的占空比是指高電平的時(shí)間在一個(gè)周期時(shí)間內(nèi)的百分比,若全為低電平,占空比為零,風(fēng)扇不轉(zhuǎn);若全為高電平,占空比為100%時(shí),轉(zhuǎn)速達(dá)到最大 [4]。用單片機(jī)輸出PWM脈沖信號(hào)時(shí),有如下兩種方法: (1) 利用軟件延時(shí)。可以利用單片機(jī)自帶的定時(shí)器編程實(shí)現(xiàn)不同占空比的PWM脈沖的輸出,利用中斷程序?qū)纹瑱C(jī)輸出的電平進(jìn)行高低轉(zhuǎn)換,從而實(shí)現(xiàn)風(fēng)扇的調(diào)速,本設(shè)計(jì)采用該方法。設(shè)計(jì)不同占空比的PWM脈沖的思路是:假設(shè)采用1S的周期方波,以50MS為基準(zhǔn),則20個(gè)基準(zhǔn)便就是一個(gè)1S,那么當(dāng)其中4個(gè)連續(xù)的50MS的高電平脈沖,然后16連續(xù)的50MS低電平脈沖,便得到了占空比為20%的PWM方波信號(hào)。 (2) 利用單片機(jī)自帶的PWM功能。但本次設(shè)計(jì)所用得AT89C51單片機(jī)沒(méi)有這種功能,只有STC系列的才有,故不可行。 對(duì)于方案一,該方案可以對(duì)直流風(fēng)扇進(jìn)行調(diào)速,但調(diào)節(jié)不是很方便,而且采用變壓器來(lái)改變電壓,不能適應(yīng)人性化要求。 對(duì)于方案二,采用PWM 脈沖調(diào)制的純軟件的方法來(lái)實(shí)現(xiàn)對(duì)直流電機(jī)的實(shí)時(shí)調(diào)速,具有很大的靈活性,而且可以更充分地發(fā)揮單片機(jī)的功能,綜合考慮選用方案二。 2.4 溫度傳感器的選擇 方案一:用熱電偶來(lái)作為檢測(cè)溫度的元器件,配合適當(dāng)?shù)耐鈬娐罚瑢z測(cè)到的溫度信號(hào)送入單片機(jī)AT89C51處理。 方案二:用熱敏電阻作為檢測(cè)溫度的元器件,經(jīng)過(guò)運(yùn)算放大器放大,由于溫度變化會(huì)引起熱敏電阻的電阻值發(fā)生相應(yīng)的變化、便可以得到輸出電壓變化的信號(hào)。 方案三:用高精度集成溫度傳感器DS18B20作為檢測(cè)溫度的元器件,直接輸出數(shù)字溫度信號(hào)給單片機(jī)處理[5]。 對(duì)于方案一,采用熱電偶作為檢測(cè)元器件,其檢測(cè)的溫度范圍非常寬,可檢測(cè)-50攝氏度到1600攝氏度,但是電路設(shè)計(jì)比較復(fù)雜,故本設(shè)計(jì)不采用該方案。 對(duì)于方案二,采用熱敏電阻價(jià)格相對(duì)便宜、元器件也很容易買到,但熱敏電阻對(duì)溫度的變化不是很敏感,在檢測(cè)溫度信號(hào)的時(shí)候,還有可能產(chǎn)生失真和誤差,故本設(shè)計(jì)不采用該方案。 對(duì)于方案三,由于溫度傳感器DS18B20的集成度很高,大大減少了外接電路,從而檢測(cè)誤差也會(huì)變小很多,DS18B20檢測(cè)溫度的原理與前面兩種方案的原理有著很大的不同。其檢測(cè)到的溫度值可以直接送入單片機(jī)處理,不用編寫更多的轉(zhuǎn)換程序,簡(jiǎn)化了程序的編寫,且只用一根線便可與單片機(jī)相連,接口相當(dāng)簡(jiǎn)單,本次設(shè)計(jì)采用該方案。關(guān)于DS18B20的詳細(xì)參數(shù)參看下面“硬件設(shè)計(jì)”中的器件介紹。 2.5 超聲波發(fā)射器的選擇 本設(shè)計(jì)的原理是根據(jù)蚊子的生理特性來(lái)的,主要靈感來(lái)源是現(xiàn)在的智能手機(jī)上帶有驅(qū)蚊的軟件。在夏天咬人的一般都是雌蚊,雄蚊幾乎是不咬人的,雌蚊在夏天大部分都是懷卵的且在懷卵期間又不喜歡與雄蚊接近,因此當(dāng)它們感覺(jué)到雄蚊發(fā)出頻率在22KHZ的超聲波信號(hào)時(shí),就會(huì)自動(dòng)離開,因此只需控制超聲波發(fā)射器發(fā)射出模擬雄蚊的超聲波就可達(dá)到驅(qū)蚊的目的。產(chǎn)生該頻率的超聲波有一下兩種方案: 方案一:可以通過(guò)軟件編寫,定時(shí)器T1產(chǎn)生頻率在22KHZ的方波信號(hào),并通過(guò)并聯(lián)的反相器用來(lái)增大驅(qū)動(dòng)能力,然后接入超聲波發(fā)射器,使超聲波發(fā)射器發(fā)出模擬雄蚊的超聲波,從而驅(qū)逐雌蚊,進(jìn)而可以避免蚊子的叮咬。 方案二:用NE555構(gòu)成多諧振蕩器產(chǎn)生可調(diào)頻率的方波,從而驅(qū)動(dòng)超聲波發(fā)射器,使其發(fā)射我們需要的超聲波信號(hào),達(dá)到驅(qū)蚊目的[6]。 對(duì)于方案一:AT89C51單片機(jī)定時(shí)器T1工作在方式1,可通過(guò)初值的設(shè)置,輸出22KHz的時(shí)鐘信號(hào)輸出,不用反復(fù)中斷,提高了系統(tǒng)的執(zhí)行效率。 超聲波發(fā)射器選擇的是TCT40-16T ,為了增大驅(qū)動(dòng)能力,單片機(jī)P3.5口產(chǎn)生的方波信號(hào)經(jīng)過(guò)并聯(lián)反相器后加在超聲波發(fā)射器的兩端,這樣超聲波發(fā)射器就可以發(fā)射22KHz的超聲波,本設(shè)計(jì)采用該方案。關(guān)于TCT40-16T的詳細(xì)參數(shù)參看下面“硬件設(shè)計(jì)”中的器件介紹。 對(duì)于方案二:由于NE555產(chǎn)生的超聲波頻率調(diào)節(jié)是依靠調(diào)節(jié)滑動(dòng)變阻器實(shí)現(xiàn)的,不好可視化的調(diào)節(jié)頻率,不方便用戶使用。
3 系統(tǒng)主要硬件電路設(shè)計(jì)
3.1 系統(tǒng)總體設(shè)計(jì) 本次設(shè)計(jì)的思路:本次設(shè)計(jì)主要利用AT89C51單片機(jī)為控制核心,利用溫度傳感器DS18B20采集當(dāng)前溫度送入單片機(jī)處理,單片機(jī)根據(jù)當(dāng)前溫度與預(yù)設(shè)溫度的比較決定是否開啟風(fēng)扇,并通過(guò)五段LED數(shù)碼管顯示當(dāng)前溫度和預(yù)設(shè)溫度。當(dāng)當(dāng)前溫度高于預(yù)設(shè)溫度,風(fēng)扇開啟,低預(yù)設(shè)溫度時(shí)風(fēng)扇關(guān)閉。單片機(jī)根據(jù)當(dāng)前的溫度輸出相應(yīng)占空比的PWM脈沖,并通過(guò)ULN2803增大驅(qū)動(dòng)后,送入12V的直流電機(jī),從而產(chǎn)生不同轉(zhuǎn)速。 本次設(shè)計(jì)的系統(tǒng)總框圖如圖3.1所示:  圖3.1系統(tǒng)總體框圖 3.2 電源電路設(shè)計(jì) 直流穩(wěn)壓電源作為直流能源的提供者,在電路中起到很關(guān)鍵的作用,因此對(duì)電源的要求比較高,尤其是對(duì)電源紋波系數(shù)和輸出電流能力的要求上,如果電源沒(méi)有達(dá)到設(shè)計(jì)所需電源的要求,將直接影響系統(tǒng)的正常工作。 常用的轉(zhuǎn)5V電源有線性型穩(wěn)壓芯片和開關(guān)型穩(wěn)壓芯片兩大類。線性型穩(wěn)壓芯片線性度高,紋波小,外圍電路簡(jiǎn)單。開關(guān)型穩(wěn)壓電路功耗小,轉(zhuǎn)換率高,但紋波大,受尖峰脈沖干擾嚴(yán)重。綜合考慮選用線性型三端穩(wěn)壓芯片LM7805。 本次設(shè)計(jì)需要兩個(gè)幅度不同的直流電壓5V和12V。其中5V電壓的產(chǎn)生是將市電~220V交流電經(jīng)過(guò)降壓器降壓,橋式整流濾波后送入穩(wěn)壓器件LM7805,輸出的電壓可能還含有紋波,在通過(guò)470uf帶極性的電容濾除低頻信號(hào),0.1uf不帶極性的電容濾除高頻信號(hào),進(jìn)而可以得到穩(wěn)定的5V電壓[7]。12V電壓只需將5V電壓經(jīng)過(guò)運(yùn)算放大器放大即可得到,5V和12V電壓產(chǎn)生電路如圖3.2(a)和3.2(b)所示: 
圖3.2(a) 5V電壓產(chǎn)生電路

圖3.2(b) 12V電壓產(chǎn)生電路 3.3 單片機(jī)最小系統(tǒng)電路設(shè)計(jì) 3.3.1 AT89C51簡(jiǎn)介 AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓?jiǎn)纹瑱C(jī),其含有4K字節(jié)的ROM和256字節(jié)的RAM,兼容MCS-51指令。其中央處理器是8位的,且含有Flash存儲(chǔ)單元,功能非常強(qiáng)大。 AT89C51單片機(jī)具有以下標(biāo)準(zhǔn)的功能:一個(gè)8位CPU頻率范圍1.2-12MHZ,4K字節(jié)Flash閃存,256字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM,4個(gè)8位并行I/O口,一個(gè)全雙工串行口,2個(gè)16位定時(shí)/計(jì)數(shù)器,5個(gè)中斷源的中斷控制系統(tǒng),片內(nèi)自帶振蕩器和時(shí)鐘電路。 AT89C51單片機(jī)管腳圖如3.3所示: 
圖3.3AT89C51單片機(jī)
各管腳功能如下[8]: VCC:40引腳接5V供電電壓。 GND:20引腳接地。 XTAL1:19引腳為單片機(jī)提供外部時(shí)鐘信號(hào),外接石英晶體和微調(diào)電容。 XTAL2:18引腳為單片機(jī)提供外部時(shí)鐘信號(hào),外接石英晶體和微調(diào)電容。 P0口:P0.7~P0.0,這組引腳共8條,其中P0.7為最高位,P0.0為最低位。是漏極開路的8位準(zhǔn)雙向I/O口,有兩種功能。第一:做通用I/O口,無(wú)片外內(nèi)存時(shí),P0口可做通用I/O接口使用。第二:做地址/數(shù)據(jù)口,在訪問(wèn)外部?jī)?nèi)存時(shí),用作地址總線的低8位和數(shù)據(jù)總線。 P1口:P1.7~P1.0,其中P1.7為最高位,P1.0為最低位,僅用作I/O口。 P2口:P2.7~P2.0,其中P2.7為最高位,P2.0為最低位。P2口是帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O接口,具有兩種功能。第一:做通用I/O口,無(wú)片外內(nèi)存時(shí),P2口可用作通用I/O口。第二:做地址口,在訪問(wèn)外部?jī)?nèi)存時(shí),用作地址總線的高8位。 P3 口:P3.7~P3.0,其中P3.7為最高位,P3.0為最低位。P3口是雙功能口。具有兩種功能。第一:用作通用I/O口。第二功能:P3.0RXD串行口輸入;P3.1TXD串行口輸出;P3.2INTO外部中斷0輸入;P3.3INT1外部中斷1輸入;P3.4T0定時(shí)計(jì)數(shù)器的脈沖輸入;P3.5T1定時(shí)計(jì)數(shù)器的脈沖輸入;P3.6WR片外RAM寫信號(hào);P3.4RD片外RAM讀信號(hào)。 RST:9引腳復(fù)位輸入,高電平有效。 :29引腳外部程序內(nèi)存讀信號(hào)。當(dāng)訪問(wèn)外部程序內(nèi)存時(shí),此腳定時(shí)輸出脈沖作為讀片外程序內(nèi)存的選通信號(hào),通常接EPROM的OE端。 端在每個(gè)機(jī)器周期中兩次有效,但當(dāng)訪問(wèn)外部RAM時(shí),兩次 負(fù)脈沖不出現(xiàn)。 可驅(qū)動(dòng)8個(gè)LS型TTL。 ALE/ :30引腳地址鎖存允許/編程線,當(dāng)訪問(wèn)片外存儲(chǔ)器時(shí),在P0.7~P0.0引腳線上輸出片外存儲(chǔ)器低8位地址的同時(shí)還在ALE/ 線上輸出一個(gè)高電位脈沖,其下降沿用于把這個(gè)片外存儲(chǔ)器低8位地址鎖存到外部專用地址鎖存器。 /VPP:31引腳內(nèi)外部程序內(nèi)存選擇輸入端。 =1,CPU訪問(wèn)片外ROM,并執(zhí)行其指令。當(dāng)PC>0FFFH時(shí),自動(dòng)轉(zhuǎn)向片外ROM。 =0,不論片內(nèi)是否含有內(nèi)存,只執(zhí)行片外ROM的指令。
3.3.2 單片機(jī)最小系統(tǒng)電路 單片機(jī)工作時(shí)需要時(shí)鐘信號(hào),時(shí)鐘信號(hào)通常可由外部方式或者單片機(jī)的內(nèi)部方式提供。本次設(shè)計(jì)采用內(nèi)部時(shí)鐘方式,利用單片機(jī)內(nèi)部自帶的反相放大器,XTAL2為放大器的輸出端,XTAL1為放大器的輸入端,這兩個(gè)引腳外接石英晶體振蕩器和微電容,構(gòu)成可以自激的振蕩器。本設(shè)計(jì)在XTAL1和XTAL2外接了一個(gè)12MHZ的晶振,30pf的電容[9]。 復(fù)位是使單片機(jī)回復(fù)到初使的狀態(tài),就跟計(jì)算機(jī)的重啟差不多,并從初始狀態(tài)從新工作。單片機(jī)是高電平復(fù)位,一般有兩種方式:按鍵復(fù)位和上電復(fù)位,兩種復(fù)位方式均可。本次設(shè)計(jì)采用按鍵復(fù)位,當(dāng)按下按鍵開關(guān)S1時(shí),系統(tǒng)復(fù)位一次,電阻R2、R3為10k。其時(shí)鐘電路與復(fù)位電路如圖3.4所示:

圖3.4最小系統(tǒng)電路 3.4 溫度采集電路設(shè)計(jì) 3.4.1 DS18B20簡(jiǎn)介 DS18B20內(nèi)部結(jié)構(gòu)主要有四個(gè)部分:64位的只讀程序存儲(chǔ)器ROM、溫度傳感器、非揮發(fā)的報(bào)警觸發(fā)器TH和TL、配置寄存器。總共有三個(gè)管腳,包含DQ,GND,VDD。其中DQ為數(shù)字信號(hào)端,GND為電源地,VDD為電源輸入端。 DS18B20的主要性能特點(diǎn)如下: (1) 僅可用一個(gè)端口便可以通信; (2) 無(wú)須外部器件; (3) DS18B20支持多點(diǎn)組網(wǎng)功能; (4) 適應(yīng)電壓范圍廣,電壓范圍為3.0~5.5V; (5) 待機(jī)功耗為零; (6) 溫度以9位或12位數(shù)字; (7) 具有報(bào)警命令識(shí)別功能; (8) 具有負(fù)電壓特性,電源接反時(shí),芯片不會(huì)燒壞; DS18B20的管腳圖及部分溫度值與DS18B20輸出的數(shù)字量對(duì)照表見圖 3.5和表3-1所示:

圖3.5 DS18B20溫度傳感器
表3-1 部分溫度值與DS18B20輸出的數(shù)字量對(duì)照
溫度值/℃ 數(shù)字輸出(二進(jìn)制) 數(shù)字輸出(十六進(jìn)制) | +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H +25.625 0000 0001 1001 0001 0191H +10.125 0000 0000 1010 0010 00A2H +0.5 0000 0000 0000 1000 0008H 0 0000 0000 0000 0000 0000H -0.5 1111 1111 1111 1000 FFF8H -10.125 1111 1111 0110 1110 FF5EH -25.625 1111 1111 0110 1111 FF6FH -55 1111 1100 1001 0000 FC90H |
3.4.3 溫度采集電路 DS18B20數(shù)字溫度傳感器檢測(cè)現(xiàn)場(chǎng)溫度,將檢測(cè)到的溫度值送入AT89C51單片機(jī)的P1.0口,經(jīng)過(guò)單片機(jī)處理后顯示此時(shí)溫度值,并與設(shè)定溫度值做比較,輸出相應(yīng)占空比的PWM脈沖信號(hào)。電路如圖3.6所示: 
圖3.6 溫度采集電路 3.5 溫度顯示電路設(shè)計(jì) 3.5.1 LED數(shù)碼管簡(jiǎn)介 本設(shè)計(jì)選用五個(gè)LED數(shù)碼管來(lái)進(jìn)行溫度顯示。LED又稱為數(shù)碼管,主要是由8個(gè)發(fā)光二極管構(gòu)的。LED數(shù)碼管按結(jié)構(gòu)可以分為共陰極和共陽(yáng)極兩種結(jié)構(gòu),如圖3.7所示:共陰極把8個(gè)發(fā)光二極管陰極連接在一起,共陽(yáng)極把8個(gè)發(fā)光二極管陽(yáng)極連接在一起。通過(guò)編程的方式使單片機(jī)的引腳輸出不同的高低電平,便可以得到相應(yīng)的數(shù)字,這種數(shù)碼管的顯示方式就被稱做段選碼[10]。
 
 
圖3.7 七段LED數(shù)碼管
表3-2 七段LED數(shù)碼管的段選碼
假如一個(gè)數(shù)碼管采用共陰極接法接入單片機(jī)中,想要顯示數(shù)字“5”須使a、c﹑d﹑f﹑g這5個(gè)二極管同時(shí)發(fā)光 (即這5個(gè)二極管接入高電平),而其他二極管不發(fā)光。只要P0口輸入01101101(6dH)即可。字形與段選碼的對(duì)照見表3-2。 3.5.2 溫度顯示電路 本次設(shè)計(jì)主要顯示當(dāng)前溫度值和預(yù)設(shè)溫度值,其中前三個(gè)LED數(shù)碼管顯示當(dāng)前溫度值,可顯示0到99.9不同的溫度,后兩個(gè)LED數(shù)碼管顯示之前預(yù)設(shè)定的溫度值。數(shù)碼管顯示采用共陰極接法,其中a,b,c,d,e,f,g,dp分別與P0.0到P0.7相連,作為段選信號(hào),又因?yàn)镻0口輸出的是低電平,所以在P0口接了10K的上拉電阻,P2.0到P2.5分別接到1,2,3,4,5,6引腳作為位選信號(hào)。顯示電路如圖3.8所示: 
圖3.8 溫度顯示電路 3.6 驅(qū)蚊電路設(shè)計(jì) 3.6.1 TCT40-16T超聲波發(fā)射器簡(jiǎn)介 TCT40-16T是一種較小的超聲波發(fā)射器,它能發(fā)射出不同頻率的超聲波,適用于家用電器及其他電子設(shè)備的超聲波遙控裝置。其器件外觀如圖3.9所示:
圖3.9 超聲波發(fā)射器TCT40-16T 3.6.2 驅(qū)蚊電路 P3.5是單片機(jī)定時(shí)器T1的時(shí)鐘輸出端口,我們可以利用定時(shí)器T1輸出頻率為22KHZ的方波信號(hào),并通過(guò)并聯(lián)反相器增大驅(qū)動(dòng)后送入超聲波發(fā)射器TCT40-16T來(lái)模擬雄蚊發(fā)出的超聲波,進(jìn)而達(dá)到驅(qū)蚊目的[11]。驅(qū)蚊電路如圖3.10所示:

圖3.10 驅(qū)蚊電路
3.7 驅(qū)動(dòng)與調(diào)速電路設(shè)計(jì) 3.7.1 達(dá)林頓反相器ULN2803簡(jiǎn)介 因?yàn)橹绷麟姍C(jī)工作時(shí)需要較大的電流,而單片機(jī)I/O口輸出的電流都在幾十毫安級(jí)別,無(wú)法滿足直流電機(jī)的工作電流,所以必須要外加驅(qū)動(dòng)電路。在本設(shè)計(jì)驅(qū)動(dòng)電路中,選用達(dá)林頓反向驅(qū)動(dòng)器ULN2803來(lái)驅(qū)動(dòng)直流風(fēng)扇電機(jī)。ULN2803在使用時(shí)接口非常簡(jiǎn)單,并且操作很容易,可為電機(jī)提供幾百毫安的驅(qū)動(dòng)電流,它實(shí)際上是一個(gè)集成芯片,單塊芯片可同時(shí)驅(qū)動(dòng)8個(gè)直流電機(jī)。 ULN2803實(shí)際上是16個(gè)NPN晶體管組成,總共含有18個(gè)引腳。 ULN2803的管腳圖如下圖3.11所示:
圖3.11 ULN2803管腳圖
各引腳簡(jiǎn)介如下: 1-8引腳:8個(gè)輸入端口; 9引腳:接地端; 10引腳:為COM端,一般懸空或接電源,但與負(fù)載的電源共同接在一起,驅(qū)動(dòng)效果更好,本次設(shè)計(jì)接12電源。ULN2803可以輸出最大電流可達(dá)500毫安,最大電壓可達(dá)50V。本系統(tǒng)選用的電機(jī)為12V直流無(wú)刷電機(jī),所需電流為300毫安左右,因此可用ULN2803來(lái)驅(qū)動(dòng)。 11-18引腳:8個(gè)輸出端口; 3.7.2 驅(qū)動(dòng)與調(diào)速電路 本次設(shè)計(jì)利用PWM脈沖寬度調(diào)制技術(shù)對(duì)直流電機(jī)進(jìn)行實(shí)時(shí)調(diào)速,風(fēng)扇分為五檔,預(yù)設(shè)溫度t0為25度,溫度每增高5度,風(fēng)扇增加一檔。當(dāng)當(dāng)前溫度低于預(yù)設(shè)溫度時(shí),輸出占空比為0的PWM脈沖,風(fēng)扇不轉(zhuǎn)。當(dāng)當(dāng)前溫度大于預(yù)設(shè)溫度時(shí),風(fēng)扇轉(zhuǎn)動(dòng),并且可以根據(jù)當(dāng)前溫度輸出相應(yīng)占空比的PWM脈沖,進(jìn)而實(shí)現(xiàn)了對(duì)風(fēng)扇的自動(dòng)調(diào)速。 驅(qū)動(dòng)與調(diào)速電路如下圖3.12所示:直流風(fēng)扇電機(jī)與ULN2803的COM端供接12V電源,直流電機(jī)另一端接ULN2803的4C,單片機(jī)的P3.4口接4B,通過(guò)單片機(jī)的P3.4口輸出不同占空比的PWM脈沖信號(hào),便可以對(duì)直流電機(jī)進(jìn)行調(diào)速,系統(tǒng)選用的電機(jī)為12V直流無(wú)刷電機(jī)。 圖3.12驅(qū)動(dòng)與調(diào)速電路 3.8 獨(dú)立按鍵電路設(shè)計(jì) 本次設(shè)計(jì)需要兩個(gè)獨(dú)立按鍵S2和S3,主要是用來(lái)對(duì)預(yù)設(shè)溫度初值進(jìn)行調(diào)整。當(dāng)S2每按下一次,預(yù)設(shè)初值自動(dòng)加一,S3每按下一次預(yù)設(shè)溫度初值自動(dòng)減一。加減采用中斷方式實(shí)現(xiàn),將S2與P3.2相連,S3與P3.3相連。當(dāng)有鍵按下立刻執(zhí)行中斷程序,低電平有效。獨(dú)立按鍵電路如下圖3.13所示:
圖3.13 獨(dú)立按鍵電路
4 軟件設(shè)計(jì)
4.1 系統(tǒng)總體軟件設(shè)計(jì)流程圖 初始化程序后,傳感器采集溫度送入單片機(jī),通過(guò)LED顯示。當(dāng)有鍵按下時(shí)處理按鍵,無(wú)鍵按下,根據(jù)溫度得到不同的轉(zhuǎn)速,如圖4.1所示: 
圖4.1 軟件總體設(shè)計(jì)流程圖 4.2 用Keil C51進(jìn)行程序編寫 Keil C51 軟件目的主要在于解決嵌入式軟件開發(fā)商面臨的問(wèn)題,當(dāng)有新項(xiàng)目的時(shí)候,只需要從設(shè)備數(shù)據(jù)庫(kù)選擇使用的設(shè)備,uVision IDE 將設(shè)置好所有的編譯器,鏈接器和存儲(chǔ)器選項(xiàng)[12]。Keil C51是美國(guó)Keil Software公司開發(fā)的51系列并且兼容單片機(jī)C語(yǔ)言的嵌入式開發(fā)軟件,與單片機(jī)匯編語(yǔ)言相比,C語(yǔ)言的靈活性更強(qiáng)一點(diǎn),程序編寫相比于匯編也更簡(jiǎn)單,很容易學(xué)習(xí)和使用,且編寫的函數(shù)模塊可移植性強(qiáng)[13]。一般創(chuàng)建一個(gè)Keil C51應(yīng)用程序需要按照下面的步驟: (1) 創(chuàng)建一個(gè)工程項(xiàng)目文件; (2) 為工程項(xiàng)目選擇目標(biāo)器件; (3) 為工程項(xiàng)目設(shè)置軟硬件調(diào)試環(huán)境; (4) 創(chuàng)建源程序項(xiàng)目文件; (5) 保存創(chuàng)建的源程序項(xiàng)目文件; (6) 把源程序文件添加到項(xiàng)目中; Keil C51使用界面如圖4.2:

圖4.2Keil C51使用界面
5 系統(tǒng)調(diào)試與仿真
5.1 系統(tǒng)軟件調(diào)試 源程序通過(guò)編譯,只能說(shuō)明源程序的語(yǔ)法沒(méi)有問(wèn)題,但不能保證程序的邏輯功能和需要的邏輯功能一致,所以還必須對(duì)程序進(jìn)行調(diào)試。程序調(diào)試時(shí)可以采用單步執(zhí)行或者連續(xù)執(zhí)行,連續(xù)執(zhí)行速度快,但當(dāng)出錯(cuò)時(shí)不易查出錯(cuò)誤的地方。單步執(zhí)行簡(jiǎn)單方便,可以檢查每條指令的正確性,但比較繁瑣,消耗大量時(shí)間。因此可先連續(xù)調(diào)試,對(duì)有問(wèn)題的地方在單步調(diào)試[14]。 5.2 程序下載 程序調(diào)試好以后,就可以下載了,將經(jīng)過(guò)編譯后生成的.HEX文件下載到單片機(jī)上,下載在單片機(jī)上的程序?qū)⒃诔绦虼鎯?chǔ)器儲(chǔ)存起來(lái),即使掉電后仍然保存,不會(huì)因此而丟失。本次設(shè)計(jì)的總程序清單見附錄2。 5.3 系統(tǒng)仿真 本次設(shè)計(jì)采用protues軟件進(jìn)行仿真,Proteus軟件是英國(guó)Labcenter electronics 公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。Proteus是世界上著名的EDA工具,從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)[15]。Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,其中包含標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇窗口、圖形編輯窗口。
(1) 本次設(shè)計(jì)的預(yù)設(shè)溫度值為25度,當(dāng)當(dāng)前溫度大于設(shè)定溫度時(shí)直流電機(jī)開始轉(zhuǎn)動(dòng)。當(dāng)當(dāng)前溫度為26度時(shí)直流電機(jī)轉(zhuǎn)動(dòng)情況如圖5.1所示:
圖5.1 當(dāng)前溫度為26度的轉(zhuǎn)速情況
(2) 當(dāng)當(dāng)前溫度值升高至31度時(shí),其電機(jī)轉(zhuǎn)速如圖5.2所示:顯然轉(zhuǎn)速較溫度為26的時(shí)候有了明顯的增加,表明單片機(jī)對(duì)電機(jī)的轉(zhuǎn)速控制功能能夠正常實(shí)現(xiàn)。    圖5.2 當(dāng)前溫度為31度的轉(zhuǎn)速情況
(3) 當(dāng)我們通過(guò)獨(dú)立按鍵S2將預(yù)設(shè)溫度增加到29大于當(dāng)前溫度26時(shí),輸出占空比為零的脈沖,直流電機(jī)將停止轉(zhuǎn)動(dòng),如圖5.3所示:    
圖5.3 當(dāng)前溫度小于設(shè)定溫度的轉(zhuǎn)速情況
6 結(jié) 論
本次設(shè)計(jì)以單片機(jī)AT89C51為主控芯片,硬件主要包含電源電路、單片機(jī)最小系統(tǒng)電路、溫度采集電路、溫度顯示電路、獨(dú)立按鍵電路、驅(qū)蚊電路、驅(qū)動(dòng)與調(diào)速電路。用DS18B20溫度傳感器采集當(dāng)前溫度送入單片機(jī)處理,LED數(shù)碼管能正常顯示當(dāng)前溫度和設(shè)定溫度,并能根據(jù)當(dāng)前溫度和設(shè)定溫度的差值調(diào)節(jié)風(fēng)扇轉(zhuǎn)速,在一定范圍內(nèi)實(shí)現(xiàn)了對(duì)風(fēng)扇的實(shí)時(shí)調(diào)速。獨(dú)立按鍵部分也能正常使用,可以調(diào)節(jié)預(yù)設(shè)溫度t0的值。同時(shí)超聲波發(fā)射器也能正常工作,達(dá)到了驅(qū)蚊目的。 本次設(shè)計(jì)對(duì)于現(xiàn)實(shí)生活具有積極的作用,可以用來(lái)作為降溫工具,環(huán)保且智能,能夠給人帶來(lái)很多方便,同時(shí)驅(qū)蚊的功能在夏季還是很有必要。
附錄一 電路總圖
單片機(jī)源程序如下: - #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit DQ=P1^0;
- sbit key2=P3^2;
- sbit key3=P3^3;
- sbit P3_4=P3^4;
- sbitP3_5=P3^5;
- float ff;
- uint y3;
- uchar shi,ge,xiaoshu,yushe=25;
- uchar code dispcode[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71}; //段碼
- uchar code tablel[]={
- 0xbf,0x86,0xdb,0xcf,
- 0xe6,0xed,0xfd,
- 0x87,0xff,0xef}; //帶小數(shù)點(diǎn)的段碼
- uchar dispbitcode[]={ //位選
- 0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f};
- uchar dispbuf[8]={0,0,0,0,0,0,0,0};
- void Delay(uint num)// 延時(shí)函數(shù)
- {
- while( --num );
- }
- void digitalshow(uchar a4,uchar a3,uchar a2,uchar a1,uchar a0)
- {
- dispbuf[0]=a0;
- dispbuf[1]=a1;
- dispbuf[2]=a2;
- dispbuf[3]=a3;
- dispbuf[4]=a4;
-
- P2=0xff;
- P0=dispcode[dispbuf[0]];
- P2=dispbitcode[5];
- Delay(1);
-
- P2=0xff;
- P0=dispcode[dispbuf[1]];
- P2=dispbitcode[4];
- Delay(1);
-
- P2=0xff;
- P0=dispcode[dispbuf[2]];
- P2=dispbitcode[2];
- Delay(1);
-
- P2=0xff;
- P0=tablel[dispbuf[3]];
- P2=dispbitcode[1];
- Delay(1);
-
- P2=0xff;
- P0=dispcode[dispbuf[4]];
- P2=dispbitcode[0];
- Delay(1);
- }
- void dmsec(uint count)
- {
- uint i; // 1ms延時(shí)
- while(count--)
- {
- for(i=0;i<125;i++){}
- }
- }
-
- void tmreset(void)
- {
- DQ=0;
- Delay(90); // 精確延時(shí) 大于 480us
- DQ=1;
- Delay(4); // 90,4 可以小范圍變化
- }
-
- void tmpre(void)
- {
- while(DQ);
- while(~DQ);
- Delay(4);
- }
-
- bit tmrbit(void)
- {
- uint i;
- bit dat;
- DQ=0;
- i++; // i++;大概1us
- DQ=1;
- i++;
- i++;
- dat=DQ;
- Delay(8);
- return(dat);
- }
-
- uchar tmrbyte(void) //讀一個(gè)比特
- {
- uchar i,j,dat;
- dat=0;
- for(i=1;i<=8;i++)
- {
- j=tmrbit();
- dat=(j<<7)|(dat>>1);
- }
- return(dat);
- }
-
- void tmwbyte(uchar dat) //寫一個(gè)比特
- {
- uint i;
- uchar j;
- bit testb;
- for(j=1;j<=8;j++)
- {
- testb=dat&0x01;
- dat=dat>>1; // 從低位開始
- if(testb) // Write 1
- {
- DQ=0; // 先拉低
- i++;
- i++; // >1us
- DQ=1;
- Delay(4);
- }
- else // Write 0
- {
- DQ=0;
- Delay(4);
- DQ=1;
- i++;
- i++; // 再拉高
- }
- }
- }
- void tmstart(void) //ds1820開始轉(zhuǎn)換
- {
- dmsec(1);
- tmreset();
- tmpre();
- dmsec(1);
- tmwbyte(0xcc); // skip rom
- tmwbyte(0x44); // 轉(zhuǎn)換
- }
- uchar tmrtemp(void) //讀取溫度
- {
- uchar a,b;
- tmreset();
- tmpre();
- dmsec(1);
- tmwbyte(0xcc); // skip rom
- tmwbyte(0xbe); // 轉(zhuǎn)換
- a=tmrbyte(); // LSB低8位
- b=tmrbyte(); // MSB高8位
- y3=b;
- y3<<=8;
- y3=y3|a;
- ff=y3*0.0625;
- y3=ff*10+0.5;
- return(y3);
- }
- void keyscan(void)
- {
- if(key2==0)
- {
- dmsec(5);
- if(key2==0)
- {
- yushe++;
- if(yushe==100)
- yushe=25;
- }
- while(!key2);
- }
- else if(key3==0)
- {
- dmsec(5);
- if(key3==0)
- {
- yushe--;
- if(yushe==0)
- yushe=25;
- }
- while(!key3);
- }
- }
- void time0_int(void) interrupt 1 //定時(shí)器T0產(chǎn)生不同占空比的PWM
- { uint tmp;
- static unsigned char j;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- j=j+1;
- if(tmp<=yushe)
- {
- P3_4=0;
- j=0; //占空比00%
- }
- else if((tmp>yushe)&&(tmp<=(yushe+5)))
- {
- if(j==4)
- P3_4=0;
- else if(j==20)
- P3_4=1;
- j=0;
- } //占空比為20%
- else if((tmp>(yushe+5))&&(tmp<=(yushe+10)))
- {
- if(j==8)
- P3_4=0;
- else if(j==20)
- P3_4=1;
- j=0;
- } //占空比為40%
- else if((tmp>(yushe+10))&&(tmp<=(yushe+15)))
- {
- if(j==12)
- P3_4=0;
- else if(j==20)
- P3_4=1;
- j=0;
- } //占空比為60%
- else if((tmp>(yushe+15))&&(tmp<=(yushe+20)))
- {
- if(j==16)
- P3_4=0;
- else if(j==20)
- P3_4=1;
- j=0;
- } //占空比為80%
- else if(tmp>(yushe+20))
- P3_4=1;
- j=0; //占空比100%
- }
- void time1_int(void) interrupt 1 //定時(shí)器T1產(chǎn)生頻率為22KHz的驅(qū)蚊超聲波
- {
- P_3.5=!P3_5;
- TH0=(65536-2500)/256;
- TL0=(65536-2500)%256;
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載: |