2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論