版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 溫控風(fēng)扇在現(xiàn)代社會(huì)中的生產(chǎn)以及人們的日常生活中都有廣泛的應(yīng)用,如工業(yè)生產(chǎn)中大型機(jī)械散熱系統(tǒng)中的風(fēng)扇、現(xiàn)在筆記本電腦上的廣泛應(yīng)用的智能CPU風(fēng)扇等。本文設(shè)計(jì)了基于單片機(jī)的溫控風(fēng)扇系統(tǒng),采用單片機(jī)作為控制器,利用溫度傳感器DS18B20作為溫度采集元件,并根
2、據(jù)采集到的溫度,通過一個(gè)達(dá)林頓反向驅(qū)動(dòng)器ULN2803驅(qū)動(dòng)風(fēng)扇電機(jī)。根據(jù)檢測(cè)到的溫度與系統(tǒng)設(shè)定的溫度的比較實(shí)現(xiàn)風(fēng)扇電機(jī)的自動(dòng)啟動(dòng)和停止,并能根溫度的變化自動(dòng)改變風(fēng)扇電機(jī)的轉(zhuǎn)速,同時(shí)用LED八段數(shù)碼管顯示檢測(cè)到的溫度與設(shè)定的溫度。</p><p> 關(guān)鍵詞:?jiǎn)纹瑱C(jī)、DS18B20、溫控、風(fēng)扇</p><p><b> 第一章 緒論</b></p>
3、<p><b> 前言</b></p><p> 在現(xiàn)代社會(huì)中,風(fēng)扇被廣泛的應(yīng)用,發(fā)揮著舉足輕重的作用,如夏天人們用的散熱風(fēng)扇、工業(yè)生產(chǎn)中大型機(jī)械中的散熱風(fēng)扇以及現(xiàn)在筆記本電腦上廣泛使用的智能CPU風(fēng)扇等。而隨著溫度控制技術(shù)的發(fā)展,為了降低風(fēng)扇運(yùn)轉(zhuǎn)時(shí)的噪音以及節(jié)省能源等,溫控風(fēng)扇越來越受到重視并被廣泛的應(yīng)用。</p><p> 但是目前市場(chǎng)上的風(fēng)扇多半
4、是采用全硬件電路實(shí)現(xiàn),存在著電路復(fù)雜,功能單一等局限性,因此有必要對(duì)現(xiàn)有的控制器進(jìn)行改進(jìn)。本文設(shè)計(jì)了一種只能溫控風(fēng)扇控制系統(tǒng)。它由ATMEL公司的8052系列單片機(jī)AT89C52作為控制器,采用DALLAS公司的溫度傳感器DS18B20作為溫度采集元件,并通過驅(qū)動(dòng)器ULN2803驅(qū)動(dòng)風(fēng)扇電機(jī)的轉(zhuǎn)動(dòng)。同時(shí)使系統(tǒng)檢測(cè)到得環(huán)境溫度以及系統(tǒng)預(yù)設(shè)的溫度動(dòng)態(tài)的顯示在LED數(shù)碼管上。根據(jù)系統(tǒng)檢測(cè)到得環(huán)境溫度與系統(tǒng)預(yù)設(shè)溫度的比較,實(shí)現(xiàn)風(fēng)扇電機(jī)的自動(dòng)啟停
5、以及轉(zhuǎn)速的自動(dòng)調(diào)節(jié)。該系統(tǒng)成本低,可靠性高,有較高的應(yīng)用價(jià)值。</p><p> 隨著單片機(jī)在各個(gè)領(lǐng)域的廣泛應(yīng)用,許多用單片機(jī)作控制的溫度控制系統(tǒng)也應(yīng)運(yùn)而生,如基于單片機(jī)的溫控風(fēng)扇系統(tǒng)。它使風(fēng)扇根據(jù)環(huán)境溫度的變化實(shí)現(xiàn)自動(dòng)啟停,使風(fēng)扇轉(zhuǎn)速隨著環(huán)境溫度的變化而變化,實(shí)現(xiàn)了風(fēng)扇的智能控制。它的設(shè)計(jì)為現(xiàn)代社會(huì)人們的生活以及生產(chǎn)帶來了諸多便利,在提高人們的生活質(zhì)量、生產(chǎn)效率的同時(shí)還能節(jié)省風(fēng)扇運(yùn)轉(zhuǎn)所需的能量。</p&
6、gt;<p><b> 整體方案設(shè)計(jì)</b></p><p> 2.1 系統(tǒng)整體設(shè)計(jì)</p><p> 本設(shè)計(jì)的整體思路是:利用溫度傳感器DS18B20檢測(cè)環(huán)境溫度并直接輸出數(shù)字溫度信號(hào)給單片機(jī)AT89C52進(jìn)行處理,在LED數(shù)碼管上顯示當(dāng)前環(huán)境溫度值以及預(yù)設(shè)溫度值。其中預(yù)設(shè)溫度值只能為整數(shù)形式,檢測(cè)到的當(dāng)前環(huán)境溫度可精確到小數(shù)點(diǎn)后一位。同時(shí)采用P
7、WM脈寬調(diào)制方式來改變直流風(fēng)扇電機(jī)的轉(zhuǎn)速。并通過兩個(gè)按鍵改變預(yù)設(shè)溫度值,一個(gè)提高預(yù)設(shè)溫度,另一個(gè)降低預(yù)設(shè)溫度值。</p><p> 2.2 系統(tǒng)功能簡(jiǎn)介</p><p> 本系統(tǒng)能夠?qū)崿F(xiàn)單片機(jī)系統(tǒng)檢測(cè)環(huán)境溫度的變化,然后根據(jù)環(huán)境溫度變化來控制風(fēng)扇直流電機(jī)輸入占空比的變化,從而產(chǎn)生不同的轉(zhuǎn)動(dòng)速度,亦可根據(jù)鍵盤調(diào)節(jié)不同的設(shè)置溫度,再由環(huán)境溫度與設(shè)置溫度的差值來控制電機(jī)。當(dāng)環(huán)境溫度低于設(shè)置溫
8、度時(shí),電機(jī)停止轉(zhuǎn)動(dòng);當(dāng)環(huán)境溫度高于設(shè)置溫度時(shí),單片機(jī)對(duì)應(yīng)輸出口輸出不同占空比的PWM信號(hào),控制電機(jī)開始轉(zhuǎn)動(dòng),并隨著環(huán)境溫度與設(shè)置溫度的差值的增加電機(jī)的轉(zhuǎn)速逐漸升高,同時(shí),會(huì)產(chǎn)生高溫報(bào)警信號(hào),系統(tǒng)還能動(dòng)態(tài)的顯示當(dāng)前溫度和設(shè)置溫度,并能通過鍵盤調(diào)節(jié)當(dāng)前的設(shè)置溫度。</p><p><b> 2.3系統(tǒng)原理框圖</b></p><p> 圖2-3 系統(tǒng)原理框圖</
9、p><p> 第三章 系統(tǒng)的硬件設(shè)計(jì)</p><p> 3.1 硬件總設(shè)計(jì)原理圖</p><p> 本系統(tǒng)的硬件模塊有:主控芯片模塊、時(shí)鐘復(fù)位模塊、獨(dú)立鍵盤輸入模塊、溫度轉(zhuǎn)換模塊、聲光報(bào)警模塊、顯示模塊和電機(jī)風(fēng)扇模塊,共七大模塊組成。分別負(fù)責(zé)讀取、顯示、轉(zhuǎn)換、報(bào)警以及運(yùn)轉(zhuǎn)等功能的實(shí)現(xiàn)。其總設(shè)計(jì)原理圖如圖3-1所示:</p><p> 圖3
10、-1 硬件總設(shè)計(jì)原理圖</p><p> 3.2 各模塊電路單元設(shè)計(jì)</p><p> 3.2.1 主控模塊的設(shè)計(jì)</p><p> 本系統(tǒng)的主控模塊如圖3-2-1所示。本模塊主要有AT89C52單片機(jī)組成,其功能主要是讀取相關(guān)數(shù)據(jù)作處理后,把數(shù)據(jù)存儲(chǔ)在單片機(jī)RAM中,再把數(shù)據(jù)傳送到輸出電路用于顯示或控制等。</p><p> 圖3-
11、2-1 主控單片機(jī)模塊</p><p> 下面介紹某些引腳的接法:</p><p> XTAL1和XTAL2連接12MHz的晶振,</p><p> RST接復(fù)位電路引腳,</p><p> P12引腳接驅(qū)動(dòng)電動(dòng)機(jī)的輸入引腳,</p><p> P15接聲光報(bào)警電路的輸入引腳,</p><
12、p> P16和P17分別接的是獨(dú)立按鍵的設(shè)置預(yù)定值的“加”和“減”,</p><p> P37接溫度傳感器的數(shù)據(jù)端口I/O口,</p><p> P0和P2分別接六位數(shù)碼管的段選和位選端口,</p><p> 具體接法請(qǐng)參考圖3-1所示。</p><p> 3.2.2 晶振和復(fù)位電路模塊設(shè)計(jì)</p><p&
13、gt; 本模塊主要由兩部分組成,一個(gè)是晶振電路,另一個(gè)是復(fù)位電路,如圖3-2-2所示:</p><p> 圖3-2-2 晶振電路與復(fù)位電路</p><p> 晶振電路:主要是由兩個(gè)30pF的電容和12M的晶振組成的。</p><p> 復(fù)位電路:主要由一個(gè)10uF的電解電容、10k的電阻和一個(gè)復(fù)位按鍵組成的。其中的RST接的是單片機(jī)的復(fù)位端,有圖可知,本系
14、統(tǒng)采用的是高電平復(fù)位,當(dāng)系統(tǒng)上電時(shí),RST處于高電平,這時(shí)系統(tǒng)就會(huì)復(fù)位,也即是上電復(fù)位。另外,當(dāng)系統(tǒng)啟動(dòng)過后,也可以選擇按鍵復(fù)位,即當(dāng)按下S0按鈕時(shí),也可以使RST置高電平,這時(shí)系統(tǒng)也會(huì)復(fù)位,也即是所謂的按鍵復(fù)位。</p><p> 3.2.3 獨(dú)立鍵盤模塊設(shè)計(jì)</p><p> 獨(dú)立鍵盤由兩個(gè)獨(dú)立按鍵S1和S2組成,一端分別與單片機(jī)的P16和P17相連,另一端接地,當(dāng)按下任一健時(shí),P
15、1口讀取低電平有效。系統(tǒng)上電后,進(jìn)入鍵盤掃描子程序,以查詢的方式確定各按鍵,完成溫度初值的設(shè)定。其中按鍵S1為加按鍵,沒按下一次,對(duì)預(yù)設(shè)值加一,按鍵S2為減按鍵,每按下一次,對(duì)預(yù)設(shè)值進(jìn)行減一運(yùn)算。電路圖如圖3-2-3所示:</p><p> 圖3-2-3 獨(dú)立鍵盤模塊電路</p><p> 3.2.4 溫度檢測(cè)模塊設(shè)計(jì)</p><p> 本模塊的設(shè)計(jì),采用采用
16、美國DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供處理器處理。</p><p> 將DS18B20溫度傳感器的數(shù)據(jù)信號(hào)端口與單片機(jī)的一位I/O口相連,其余兩引腳分別接電源和地即可。本設(shè)計(jì)將DS18B20接在P37口實(shí)現(xiàn)溫度的采集,其與單片機(jī)的連接圖如圖3-2-4所示:</p>
17、<p> 圖3-2-4 溫度檢測(cè)模塊電路</p><p> 3.2.5 聲光報(bào)警模塊設(shè)計(jì)</p><p> 聲光報(bào)警模塊主要由一個(gè)發(fā)光二極管和一個(gè)5V有源蜂鳴器以及相關(guān)元件構(gòu)成。</p><p> 它通過P15接口與單片機(jī)相連,其硬件電路原理圖如圖3-2-5所示:</p><p> 圖3-2-5 聲光報(bào)警模塊原理圖&l
18、t;/p><p> 此報(bào)警模塊電路的功能主要是當(dāng)溫度檢測(cè)器檢測(cè)到的溫度值高于預(yù)設(shè)溫度值10攝氏度時(shí),單片機(jī)的P15引腳端口輸出周期為0.6S的脈沖方波驅(qū)動(dòng)報(bào)警模塊電路工作,二極管閃爍,蜂鳴器叫,其中低電平有效。反之,報(bào)警模塊電路停止工作,二極管不閃,蜂鳴器不叫。</p><p> 3.2.6 數(shù)碼管顯示模塊設(shè)計(jì)</p><p> 本設(shè)計(jì)制作中,選用六位共陰極數(shù)碼管
19、作為顯示模塊,它與單片機(jī)硬件的接口如圖3-2-6所示。其中前3位數(shù)碼管用于顯示溫度傳感器實(shí)時(shí)檢測(cè)采集到的溫度值,可精確到0.1攝氏度,顯示范圍為0到99.9攝氏度;后兩位數(shù)碼管用于顯示系統(tǒng)設(shè)置的初值溫度值,只顯示整數(shù)溫度值,顯示范圍為0到99攝氏度。六位數(shù)碼管的段選a、b、c、d、e、f、g、dp線分別與單片機(jī)的P0口連接,其中P0口接一個(gè)10k的排阻作為上拉電阻;六位數(shù)碼管的位選W1到W6分別與單片機(jī)的P2.0到P2.5口相連接。只要
20、其中一位中輸出低電平時(shí),則選中導(dǎo)通該位數(shù)碼管。</p><p> 圖3-2-6 數(shù)碼管顯示模塊電路</p><p> 3.2.7 電機(jī)風(fēng)扇模塊電路設(shè)計(jì)</p><p> 本設(shè)計(jì)中由單片機(jī)的I/O口輸出PWM脈沖,通過一個(gè)達(dá)林頓反向驅(qū)動(dòng)器ULN2803驅(qū)動(dòng)12V直流無刷風(fēng)扇電機(jī)以及實(shí)現(xiàn)風(fēng)扇電機(jī)速度的調(diào)節(jié)。電路如圖3-2-7所示:</p><p
21、> 圖3-2-7 電機(jī)風(fēng)扇驅(qū)動(dòng)模塊電路</p><p> 鍵盤控制設(shè)置溫度,通過軟件向單片機(jī)輸入相應(yīng)控制指令,由單片機(jī)通過P1.2口輸出與轉(zhuǎn)速相應(yīng)的PWM脈沖,經(jīng)過ULN2803驅(qū)動(dòng)風(fēng)扇直流電機(jī)控制電路,實(shí)現(xiàn)電機(jī)轉(zhuǎn)速與啟停的自動(dòng)控制。當(dāng)環(huán)境溫度升高時(shí),直流電機(jī)的轉(zhuǎn)速會(huì)相應(yīng)按照設(shè)定的等級(jí)有所提高;當(dāng)環(huán)境溫度下降時(shí),電機(jī)的轉(zhuǎn)速會(huì)相應(yīng)的下降;當(dāng)環(huán)境溫度低于設(shè)置溫度時(shí),電機(jī)停止轉(zhuǎn)動(dòng),而環(huán)境溫度又高于預(yù)設(shè)溫度時(shí),
22、電機(jī)重新啟動(dòng)。</p><p> 風(fēng)扇電機(jī)的一端接12V電源,另一端接ULN2803的OUT5引腳,ULN2803的IN5引腳與單片機(jī)的P1.2引腳相連,通過控制單片機(jī)的P1.2引腳輸出PWM信號(hào),由此來控制風(fēng)扇直流電機(jī)的速度和啟停。</p><p> 第四章 系統(tǒng)的軟件設(shè)計(jì)</p><p> 4.1 軟件總設(shè)計(jì)框圖</p><p>
23、 程序設(shè)計(jì)部分主要包括主程序、DS18B20初始化函數(shù)、溫度轉(zhuǎn)換函數(shù)、溫度讀取函數(shù)、鍵盤掃描函數(shù)、數(shù)碼管顯示函數(shù)、溫度處理函數(shù)、風(fēng)扇電機(jī)控制函數(shù)以及中斷報(bào)警函數(shù)等。總設(shè)計(jì)流程圖如圖4-1所示:</p><p> 圖4-1 軟件總流程圖</p><p> 4.2 軟件編程與仿真</p><p> 4.2.1 用Keil C51編寫程序</p>&l
24、t;p> Keil C51是美國Keil Software公司開發(fā)的51系列兼容單片機(jī)C語言的軟件開發(fā)系統(tǒng),與單片機(jī)匯編語言相比,C語言在不僅語句簡(jiǎn)單靈活,而且編寫的函數(shù)模塊可移植性強(qiáng)[9],因而易學(xué)易用,效率高。隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前使用較多的MCS-51系列單片機(jī)開發(fā)的軟件。</p><p> 用Kei
25、l C51編寫的程序入圖4-2-1所示:</p><p> 圖4-2-1 程序編寫圖</p><p> 4.2.2 數(shù)碼管顯示程序分析</p><p> 數(shù)碼管顯示程序采用了動(dòng)態(tài)顯示的方法,分別有五個(gè)變量作顯示緩沖內(nèi)存,依次顯示實(shí)時(shí)溫度的十位,個(gè)位,小數(shù)位和設(shè)定值,程序如下:</p><p> void digitalshow(uch
26、ar a4,a3,a2,a1,a0)</p><p><b> {</b></p><p> dbuf[3]=a0; </p><p> dbuf[4]=a1;</p><p> dbuf[0]=a2;</p><p> dbuf[1]=a3;</p><p>
27、 dbuf[2]=a4;</p><p><b> P2=0xff;</b></p><p> P0=dispcode[dbuf[3]];</p><p> P2=dispbitcode[5];</p><p> Delay(1); </p><p><b> P2=0xff
28、;</b></p><p> P0=dispcode[dbuf[4]];</p><p> P2=dispbitcode[4];</p><p><b> Delay(1);</b></p><p><b> P2=0xff;</b></p><p>
29、P0=dispcode[dbuf[0]];</p><p> P2=dispbitcode[2];</p><p><b> Delay(1);</b></p><p><b> P2=0xff;</b></p><p> P0=dispcode[dbuf[1]];</p>&
30、lt;p> P0=P0|0x80;</p><p> P2=dispbitcode[1];</p><p><b> Delay(1);</b></p><p><b> P2=0xff;</b></p><p> P0=dispcode[dbuf[2]];</p>&
31、lt;p> P2=dispbitcode[0];</p><p><b> Delay(1);</b></p><p><b> }</b></p><p> 4.2.4 溫度處理程序分析</p><p> 這個(gè)溫度處理程序,把溫度傳感器采集到的溫度與設(shè)定值進(jìn)行比較,從而控制高低電平
32、的分配,當(dāng)溫度值小于設(shè)定值時(shí),高電平為零個(gè),低電平有五個(gè);當(dāng)溫度值高于設(shè)定值時(shí),高電平為1,低電平為4,以此類推,從而控制輸出電平的占空比,程序如下:</p><p> void deal(float tmp) //溫度處理</p><p><b> {</b></p><p> if(tmp<=sheding)</p&g
33、t;<p><b> {</b></p><p><b> gao=0;</b></p><p><b> di=5;</b></p><p><b> }</b></p><p> else if((tmp>sheding)
34、&&(tmp<=(sheding+1)))</p><p><b> {</b></p><p><b> gao=1;</b></p><p><b> di=4;</b></p><p><b> }</b></p
35、><p> else if((tmp>(sheding+1))&&(tmp<=(sheding+3)))</p><p><b> {</b></p><p><b> gao=2;</b></p><p><b> di=3;</b></
36、p><p><b> }</b></p><p> else if((tmp>(sheding+3))&&(tmp<=(sheding+5)))</p><p><b> {</b></p><p><b> gao=3;</b></p&g
37、t;<p><b> di=2;</b></p><p><b> }</b></p><p> else if((tmp>(sheding+5))&&(tmp<=(sheding+7)))</p><p><b> {</b></p>
38、<p><b> gao=4;</b></p><p><b> di=1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> { </b><
39、;/p><p><b> gao=5;</b></p><p><b> di=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.2.5 電機(jī)風(fēng)扇控制程序分析<
40、;/p><p> void dianji() </p><p><b> {</b></p><p> uchar q,i;</p><p> for(q=0;q<di;q++)</p><p><b> {</b></p><p>
41、<b> pwm=0;</b></p><p> digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p> for(i=255;i>0;i--)</p><p><b> {</b></p><p> digitalsh
42、ow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p><b> }</b></p><p><b> }</b></p><p> for(q=0;q<gao;q++)</p><p><b> {</b>&
43、lt;/p><p><b> pwm=1;</b></p><p> digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p> for(i=255;i>0;i--)</p><p><b> {</b></p>
44、<p> digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.
45、2.6 用Proteus軟件進(jìn)行仿真</p><p> 總仿真圖如圖4-2-2所示:</p><p> 圖4-2-2 總仿真電路圖</p><p> 仿真過程:點(diǎn)擊開始仿真按鈕,系統(tǒng)開始仿真,寫好的程序把預(yù)設(shè)值設(shè)置為20攝氏度,把溫度傳感器的溫度值才低溫調(diào)至高溫,在調(diào)到小于20攝氏度時(shí),電動(dòng)機(jī)不轉(zhuǎn),報(bào)警電路不工作;當(dāng)調(diào)到大于設(shè)定值20攝氏度時(shí),電動(dòng)機(jī)開始緩慢轉(zhuǎn)
46、動(dòng),當(dāng)調(diào)到更高溫度時(shí),可以看到電機(jī)風(fēng)扇的轉(zhuǎn)速越來越快,且當(dāng)溫度高于設(shè)定值10攝氏度時(shí),報(bào)警器工作。本設(shè)計(jì)為5級(jí)調(diào)速,下圖4-2-3為1級(jí)和3級(jí)下的轉(zhuǎn)速:</p><p><b> 圖4-2-3</b></p><p> 還可以通過按鍵S1和S2來設(shè)置預(yù)設(shè)值。當(dāng)預(yù)設(shè)值大于實(shí)時(shí)溫度值時(shí),電機(jī)風(fēng)扇停止運(yùn)轉(zhuǎn),報(bào)警電路也停止工作,蜂鳴器不叫,閃光燈滅。</p>
47、<p> 通過仿真,可以看出直流風(fēng)扇電機(jī)在系統(tǒng)設(shè)定溫度一定的情況下,其轉(zhuǎn)速隨著環(huán)境溫度(溫度傳感器檢測(cè)到的溫度)的增加而增大。當(dāng)環(huán)境溫度低于系統(tǒng)預(yù)設(shè)的溫度時(shí),風(fēng)扇自動(dòng)停止運(yùn)轉(zhuǎn),實(shí)現(xiàn)了系統(tǒng)所設(shè)計(jì)的功能。當(dāng)然,在此沒有實(shí)現(xiàn)風(fēng)扇直流電機(jī)的無級(jí)調(diào)速,本系統(tǒng)實(shí)現(xiàn)的是電機(jī)在隨環(huán)境溫度變化的五個(gè)等級(jí)的速度變化,環(huán)境溫度在一定小范圍內(nèi)變化風(fēng)扇電機(jī)轉(zhuǎn)速是不變的,只有超過了設(shè)定的某一界限時(shí)轉(zhuǎn)速才會(huì)變化</p><p>
48、 第五章 系統(tǒng)的安裝與調(diào)試</p><p><b> 5.1 制作安裝</b></p><p> 5.1.1 制作流程</p><p> PCB 板是所有設(shè)計(jì)過程的最終產(chǎn)品。PCB 圖設(shè)計(jì)的好壞直接決定了設(shè)計(jì)結(jié) 果是否能滿足要求,PCB 圖設(shè)計(jì)過程中主要有以下幾個(gè)步驟: </p><p> ?。?)創(chuàng)建 PCB
49、文件 </p><p> 在正式繪制之前,要規(guī)劃好 PCB 板的尺寸。這包括 PCB 板的邊沿尺寸和 內(nèi)部預(yù)留的用于固定的螺絲孔,也包括其他一些需要挖掉的空間和預(yù)留的空間。 </p><p> ?。?)設(shè)置 PCB 的設(shè)計(jì)環(huán)境</p><p> ?。?)將原理圖信息傳輸?shù)?PCB 中 </p><p> 規(guī)劃好 PCB 板之后,就可以將原
50、理圖信息傳輸?shù)?PCB 中了。 (4)元件布局 </p><p> 元件布局要完成的工作是把元件在 PCB 板上擺放好。布局可以是自動(dòng)布局,也可以是手動(dòng)布局。 </p><p><b> (5)布線 </b></p><p> 根據(jù)網(wǎng)絡(luò)表,在 Protel DXP 提示下完成布線工作,這是最需要技巧的工作 部分,也是最復(fù)雜的一部分工作。
51、</p><p><b> ?。?)檢查錯(cuò)誤 </b></p><p> 布線完成后,最終檢查 PCB 板有沒有錯(cuò)誤,并為這塊 PCB 板撰寫相應(yīng)的文檔。 </p><p> ?。?)打印 PCB 圖紙[9] </p><p> ?。?)準(zhǔn)備感光板,進(jìn)行曝光 </p><p><b>
52、 ?。?) 顯影 </b></p><p><b> ?。?0)腐蝕 </b></p><p><b> ?。?1)鉆孔</b></p><p><b> ?。?2)焊接</b></p><p> 在 PCB 板的制作時(shí),要考慮電氣要求、散熱、封裝尺寸等。在確定
53、PCB 尺 寸后,再確定特殊元件的位置。最后,根據(jù)電路的功能單元,對(duì)電路的全部元器件進(jìn)行布局。從而完成元器件的安裝與焊接。</p><p><b> 5.2 系統(tǒng)調(diào)試</b></p><p> 5.2.1 軟件調(diào)試</p><p> 按鍵顯示部分的調(diào)試:起初根據(jù)設(shè)計(jì)編寫的系統(tǒng)程序:程序的鍵盤接口采用P1口,數(shù)碼管顯示采用P0口控制LED的
54、斷碼,P2口控制LED的位碼,從而實(shí)現(xiàn)鍵盤功能及數(shù)碼管的顯示。經(jīng)過編譯沒有出錯(cuò),但在仿真調(diào)試時(shí),數(shù)碼管顯示的只是亂碼,沒有正確的顯示溫度,按鍵功能也不靈,當(dāng)按下鍵時(shí),顯示并不變化。</p><p> 經(jīng)過查找分析,發(fā)現(xiàn)鍵盤掃描程序沒有沒有按鍵消抖部分,按鍵在按下與松手時(shí),都會(huì)有一定程度的抖動(dòng),從而可能使單片機(jī)做出錯(cuò)誤的判斷,導(dǎo)致按鍵條件預(yù)設(shè)溫度時(shí)失靈,甚至根本不能工作。因此必須在按鍵掃描程序中加入消抖部分,即在
55、按鍵按下與松手時(shí)加入延時(shí)判斷,以檢測(cè)鍵盤是否真的按下或已完全松手。</p><p> 數(shù)碼管不能正確的顯示,主要是因?yàn)樗詳?shù)碼管的段碼都由P0口傳送,而數(shù)碼管顯示又采用了動(dòng)態(tài)掃描的方式,但在程序中卻沒有設(shè)置顯示段碼的暫存器,導(dǎo)致當(dāng)P0口傳送段碼時(shí)發(fā)生混亂,不能正確識(shí)別段碼。應(yīng)在系統(tǒng)中加入鎖存器,或是在程序中設(shè)定存儲(chǔ)段碼的空間。</p><p> 在鍵盤加入了消抖程序,數(shù)碼管顯示程序中加
56、入了段碼的存儲(chǔ)空間后,數(shù)碼管能夠正常的顯示,按鍵也能夠工作,達(dá)到了較好的效果。</p><p> 溫度程序調(diào)試:在溫度轉(zhuǎn)換程序中,為了能夠正確的檢測(cè)并顯示溫度的小數(shù)位,程序中把檢測(cè)的溫度與10相乘后,再按一個(gè)三位的整數(shù)來處理。如把24.5變?yōu)?45來處理,這樣為程序的編寫帶來了方便。</p><p> 電機(jī)調(diào)速電路調(diào)試:在本設(shè)計(jì)中,采用了達(dá)林頓反向驅(qū)動(dòng)器ULN2803驅(qū)動(dòng)直流電機(jī)。軟件
57、設(shè)置了P1.2口輸出不同的PWM波形,通過達(dá)林頓反向驅(qū)動(dòng)器ULN2803驅(qū)動(dòng)直流電機(jī)轉(zhuǎn)動(dòng),通過軟件中程序設(shè)定,根據(jù)不同溫度輸出不同的PWM波,從而得到不同的占空比控制風(fēng)扇直流電機(jī)。程序?qū)崿F(xiàn)了P1.2口的PWM波形輸出,當(dāng)外界溫度低于設(shè)置溫度時(shí),電機(jī)不轉(zhuǎn)動(dòng)或自動(dòng)停止轉(zhuǎn)動(dòng);當(dāng)外界溫度高于設(shè)置溫度時(shí),電機(jī)的轉(zhuǎn)速升高或是自動(dòng)開始轉(zhuǎn)動(dòng),且外界溫度與設(shè)置溫度的差值越大,電機(jī)轉(zhuǎn)速越高,即占空比增加。</p><p> 5.2
58、.2 硬件部分的調(diào)試</p><p> 數(shù)碼管顯示模塊的硬件調(diào)試</p><p> 聲光報(bào)警器模塊的硬件調(diào)試</p><p> 電機(jī)風(fēng)扇調(diào)速電路模塊的硬件調(diào)試</p><p> 獨(dú)立鍵盤模塊硬件調(diào)試</p><p> 溫度檢測(cè)模塊硬件調(diào)試</p><p><b> 5.3
59、電路總圖:</b></p><p><b> 圖5-3 電路總圖</b></p><p><b> 結(jié) 論</b></p><p> 本次設(shè)計(jì)的系統(tǒng)以單片機(jī)為控制核心,以溫度傳感器DS18B20檢測(cè)環(huán)境溫度,實(shí)現(xiàn)了根據(jù)環(huán)境溫度變化調(diào)節(jié)不同的風(fēng)扇電機(jī)轉(zhuǎn)速,在一定范圍能實(shí)現(xiàn)轉(zhuǎn)速的連續(xù)調(diào)節(jié),LED數(shù)碼管能連
60、續(xù)穩(wěn)定的顯示環(huán)境溫度和設(shè)置溫度,并能通過兩個(gè)獨(dú)立按鍵調(diào)節(jié)不同的設(shè)置溫度,從而改變環(huán)境溫度與設(shè)置溫度的差值,進(jìn)而改變電機(jī)轉(zhuǎn)速。實(shí)現(xiàn)了基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)。</p><p> 本系統(tǒng)設(shè)計(jì)可推廣到各種電動(dòng)機(jī)的控制系統(tǒng)中,實(shí)現(xiàn)電動(dòng)機(jī)的轉(zhuǎn)速調(diào)節(jié)。在生產(chǎn)生活中,本系統(tǒng)可用于簡(jiǎn)單的日常風(fēng)扇的智能控制,為生活帶來便利;在工業(yè)生產(chǎn)中,可以改變不同的輸入信號(hào),實(shí)現(xiàn)對(duì)不同信號(hào)輸入控制電機(jī)的轉(zhuǎn)速,進(jìn)而實(shí)現(xiàn)生產(chǎn)自動(dòng)化,如在電力系統(tǒng)
61、中可以根據(jù)不同的負(fù)荷達(dá)到不同的電壓信號(hào),再由電壓信號(hào)調(diào)節(jié)不同的發(fā)電機(jī)轉(zhuǎn)速,進(jìn)而調(diào)節(jié)發(fā)電量,實(shí)現(xiàn)電力系統(tǒng)的自動(dòng)化調(diào)節(jié)。綜上所述,該系統(tǒng)的設(shè)計(jì)和研究在社會(huì)生產(chǎn)和生活中具有重要地位。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李學(xué)龍.使用單片機(jī)控制的智能遙控電風(fēng)扇控制器[J].電子電路制作,2003,9:13—15.</p>&
62、lt;p> [2] 藍(lán)厚榮.單片機(jī)的PWM控制技術(shù)[J].工業(yè)控制計(jì)算機(jī).2010,23(3):97—98</p><p> [3] 李鋼,趙彥峰.1-Wire總線數(shù)字溫度傳感器DSI8B20原理及應(yīng)用[J].現(xiàn)代電子技術(shù),2005,28(21):77—79.</p><p> [4] 王文海,周歡喜.用Proteus實(shí)現(xiàn)51單片機(jī)的動(dòng)態(tài)仿真調(diào)試[J].IT技術(shù),2006,20
63、:10—11</p><p><b> 附錄:程序代碼:</b></p><p> #include <reg52.h> </p><p> #include<intrins.h></p><p> #define uchar unsigned char</p><p&
64、gt; #define uint unsigned int</p><p> sbit DQ=P3^7;</p><p> sbit key1=P1^6;</p><p> sbit key2=P1^7;</p><p> sbit led=P1^3;</p><p> sbit alarm=P1^5;&l
65、t;/p><p> sbit pwm=P1^2;</p><p> bdata uchar dat;</p><p> sbit dat0=dat^0;</p><p> sbit dat7=dat^7;</p><p> uchar shi,ge,xiaoshu,sheding=20,gao,di,count,
66、tcount;</p><p> uchar dp[16]={0,0,1,1,2,3,3,4,5,5,6,6,7,8,8,9};</p><p> uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, </p><p> 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x7
67、9,0x71}; </p><p> uchar dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; </p><p> uchar dbuf[5]={0,0,0,0,0}; </p><p> void dmsec(uint count) </p><p><b&
68、gt; { </b></p><p> uint i;// 1ms延時(shí)</p><p> while(count--) </p><p><b> {</b></p><p> for(i=0;i<125;i++){}</p><p><b>
69、 }</b></p><p><b> }</b></p><p> void delay15(uchar n)//15us</p><p><b> { do {</b></p><p><b> _nop_();</b></p><
70、;p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _no
71、p_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></
72、p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> n--;</b></p><p> }while(n);</p><p><b> }</b><
73、;/p><p> void digitalshow(uchar a4,a3,a2,a1,a0)</p><p><b> {</b></p><p> dbuf[3]=a0; </p><p> dbuf[4]=a1;</p><p> dbuf[0]=a2;</p><
74、p> dbuf[1]=a3;</p><p> dbuf[2]=a4;</p><p><b> P2=0xff;</b></p><p> P0=dispcode[dbuf[3]];</p><p> P2=dispbitcode[5];</p><p> delay15(20
75、); </p><p><b> P2=0xff;</b></p><p> P0=dispcode[dbuf[4]];</p><p> P2=dispbitcode[4];</p><p> delay15(20);</p><p><b> P2=0xff;</b&
76、gt;</p><p> P0=dispcode[dbuf[0]];</p><p> P2=dispbitcode[2];</p><p> delay15(20);</p><p><b> P2=0xff;</b></p><p> P0=dispcode[dbuf[1]];<
77、;/p><p> P0=P0|0x80;</p><p> P2=dispbitcode[1];</p><p> delay15(20);</p><p><b> P2=0xff;</b></p><p> P0=dispcode[dbuf[2]];</p><p&g
78、t; P2=dispbitcode[0];</p><p> delay15(20);</p><p><b> P2=0xff;</b></p><p><b> }</b></p><p> bit reset(void)</p><p> { bit err
79、;</p><p><b> DQ=0;</b></p><p> delay15(40);</p><p><b> DQ=1;</b></p><p> delay15(4);</p><p><b> err=DQ;</b></p&
80、gt;<p> delay15(18);</p><p> return(err);</p><p><b> }</b></p><p> void wbyte(uchar d)</p><p> { uchar i;</p><p><b> dat=d;&
81、lt;/b></p><p> for(i=8;i>0;i--)</p><p><b> {DQ=0;</b></p><p> delay15(1);</p><p><b> DQ=dat0;</b></p><p> dat=dat>>
82、;1;</p><p> delay15(1);</p><p><b> DQ=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> uchar rbyte(void)</p>
83、<p> { uchar i;</p><p><b> dat=0;</b></p><p> for(i=8;i>0;i--)</p><p> {dat=dat>>1;</p><p><b> DQ=0;</b></p><p&g
84、t;<b> _nop_();</b></p><p><b> DQ=1;</b></p><p> delay15(1);</p><p><b> dat7=DQ;</b></p><p> delay15(4);</p><p><
85、;b> }</b></p><p> return(dat);</p><p><b> }</b></p><p> void convert(void)</p><p> { bit err;</p><p> err=reset();</p>&l
86、t;p> wbyte(0xcc);</p><p> wbyte(0x44);</p><p><b> }</b></p><p> int readt(void)</p><p> { uchar H,L;</p><p><b> int f;</b>
87、</p><p><b> bit err;</b></p><p> err=reset();</p><p> wbyte(0xcc);</p><p> wbyte(0xbe);</p><p> L=rbyte();</p><p> H=rbyte()
88、;</p><p> f=(H*256+L)*0.0625*10;</p><p> return(f);</p><p><b> }</b></p><p> void keyscan()</p><p><b> {</b></p><p&
89、gt; if(key1==0)</p><p><b> {</b></p><p><b> dmsec(5);</b></p><p> if(key1==0)</p><p><b> {</b></p><p> sheding++;
90、</p><p> if(sheding==100)</p><p> sheding=20;</p><p><b> }</b></p><p> while(!key1)digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p&
91、gt;<b> }</b></p><p> else if(key2==0)</p><p><b> {</b></p><p><b> dmsec(5);</b></p><p> if(key2==0)</p><p><b&g
92、t; {</b></p><p> sheding--;</p><p> if(sheding==0)</p><p> sheding=20;</p><p><b> }</b></p><p> while(!key2)digitalshow(shi,ge,xia
93、oshu,sheding/10,sheding%10);</p><p><b> }</b></p><p><b> }</b></p><p> void deal(float tmp) //溫度處理</p><p><b> {</b></p>
94、<p> if(tmp<=sheding)</p><p><b> {</b></p><p><b> gao=0;</b></p><p><b> di=5;</b></p><p><b> }</b></p&
95、gt;<p> else if((tmp>sheding)&&(tmp<=(sheding+2)))</p><p><b> {</b></p><p><b> gao=1;</b></p><p><b> di=4;</b></p>
96、;<p><b> }</b></p><p> else if((tmp>(sheding+2))&&(tmp<=(sheding+4)))</p><p><b> {</b></p><p><b> gao=2;</b></p>
97、<p><b> di=3;</b></p><p><b> }</b></p><p> else if((tmp>(sheding+4))&&(tmp<=(sheding+7)))</p><p><b> {</b></p><
98、p><b> gao=3;</b></p><p><b> di=2;</b></p><p><b> }</b></p><p> else if((tmp>(sheding+7))&&(tmp<=(sheding+10)))</p>&l
99、t;p><b> {</b></p><p><b> gao=4;</b></p><p><b> di=1;</b></p><p><b> }</b></p><p><b> else</b></p&
100、gt;<p><b> { </b></p><p><b> gao=5;</b></p><p><b> di=0;</b></p><p><b> }</b></p><p><b> }</b>&
101、lt;/p><p> void dianji() </p><p><b> {</b></p><p> uchar q,i;</p><p> for(q=0;q<di;q++)</p><p><b> {</b></p><p&g
102、t;<b> pwm=0;</b></p><p> digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p> for(i=50;i>0;i--)</p><p><b> {</b></p><p> digitals
103、how(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p><b> }</b></p><p><b> }</b></p><p> for(q=0;q<gao;q++)</p><p><b> {</b>
104、</p><p><b> pwm=1;</b></p><p> digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p> for(i=50;i>0;i--)</p><p><b> {</b></p>
105、<p> digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> vo
106、id main(void)</p><p> {float tm;</p><p><b> uint t;</b></p><p><b> pwm=0;</b></p><p><b> tcount=0;</b></p><p> TM
107、OD=0x01;</p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> IE=0x82;</b></p><p><b> while(1)</b></p><p>&
108、lt;b> { </b></p><p> convert();</p><p> t=readt();</p><p> xiaoshu=(t%100)%10;</p><p> ge=(t%100)/10;</p><p> shi=t/100;</p><p&g
109、t; keyscan();</p><p><b> dmsec(1);</b></p><p> tm=t/10.0;</p><p> if(tm>sheding+10)</p><p><b> TR0=1;</b></p><p><b>
110、 else</b></p><p><b> { </b></p><p><b> TR0=0;</b></p><p><b> led=1;</b></p><p><b> alarm=1;</b></p><
111、;p><b> }</b></p><p><b> deal(tm);</b></p><p><b> dianji();</b></p><p><b> } </b></p><p><b> }</b&g
112、t;</p><p> void time0(void) interrupt 1 using 1</p><p> { TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> tcount++;</b></p><
113、;p> if(tcount==6)</p><p> { tcount=0;</p><p><b> led=~led;</b></p><p> alarm=~alarm;</p><p><b> }</b></p><p><b> }&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)
- 基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)論文
- 基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)論文
- 基于單片機(jī)的智能溫控系統(tǒng)課程設(shè)計(jì)
- 基于單片機(jī)的智能溫控風(fēng)扇設(shè)計(jì)論文
- 基于單片機(jī)的智能溫控風(fēng)扇設(shè)計(jì)論文
- 基于單片機(jī)的智能溫控風(fēng)扇設(shè)計(jì)論文
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的溫度控制智能電風(fēng)扇
- 基于單片機(jī)的溫控風(fēng)扇設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的智能溫控風(fēng)扇設(shè)計(jì)開題報(bào)告
- 基于單片機(jī)溫控風(fēng)扇轉(zhuǎn)速的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)論文(設(shè)計(jì))基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)
- 畢業(yè)論文(設(shè)計(jì))基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)
- 畢業(yè)論文--基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)
- 基于單片機(jī)的智能溫控風(fēng)扇設(shè)計(jì)-畢業(yè)論文
- 基于單片機(jī)的秒表設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
- 基于單片機(jī)的水溫控制系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--基于單片機(jī)的水溫控制系統(tǒng)
- 51單片機(jī)課程設(shè)計(jì)——智能電風(fēng)扇
- 智能聲控電風(fēng)扇--單片機(jī)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論