基于arm空調(diào)綜合課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩18頁(yè)未讀, 繼續(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ī)或ARM(任選)作為主控芯片,根據(jù)實(shí)際應(yīng)用狀況設(shè)計(jì)家用空氣調(diào)節(jié)器系統(tǒng),功能需包括:系統(tǒng)啟停、溫度檢測(cè)、溫度設(shè)定、風(fēng)速選擇和工作模式選擇(配合電機(jī)控制)、定時(shí)、顯示等。要求:在Proteus平臺(tái)下完成硬件電路的設(shè)計(jì),在Keil平臺(tái)下完成軟件編程,并與硬件聯(lián)調(diào)。</p><p>  本文主要介紹采用單片機(jī)作為主控芯片的空氣調(diào)節(jié)系統(tǒng)。系統(tǒng)采用AT89c51單片機(jī),通過A/D轉(zhuǎn)換器將

2、溫度傳感器采集來的溫度數(shù)據(jù)送入單片機(jī),單片機(jī)將采集的數(shù)據(jù)與設(shè)定溫度相比較決定電機(jī)的轉(zhuǎn)速,進(jìn)而調(diào)節(jié)室內(nèi)溫度。1 硬件介紹 </p><p>  本章介紹系統(tǒng)硬件的基本功能,包括主控芯片AT89c51,電機(jī)驅(qū)動(dòng)芯片L298,溫度傳感器DS18B20,以及液晶顯示屏LM016L等。</p><p>  1.1 主控芯片AT89c51</p><p>  1.1.1

3、性能特點(diǎn)</p><p>  【1】AT89C51是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)。該器件采用ATMEL高密度,非易失存儲(chǔ)技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系

4、統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><p>  AT89C51內(nèi)部有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口;同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口。AT89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。采用單片AT89C51</p><p

5、>  模塊組成的控制電路,它具有可編程,功能強(qiáng),控制簡(jiǎn)單,集成度高等諸多優(yōu)點(diǎn)。 </p><p>  AT89C51具有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。主要功能特性如下:</p><p> ?。?)兼容MCS—51指令系統(tǒng);全靜態(tài)操作0-24MHz;4k可反復(fù)擦寫(>1000次)Flash ROM;可編程串行通道;128 8bit內(nèi)

6、部RAM;1個(gè)串行中斷;3級(jí)加密位。</p><p>  (2)32個(gè)雙向I/O口;2個(gè)外中斷口;2個(gè)16位可編程定時(shí)計(jì)數(shù)器;2個(gè)全雙工串行通信口。</p><p> ?。?)可直接驅(qū)動(dòng)LED;低功耗空閑和掉電模式;軟件設(shè)置睡眠和喚醒功能。</p><p>  1.1.2 引腳功能</p><p>  AT89C51有40個(gè)引腳,其引腳分布如

7、圖1.1 所示。</p><p>  圖1.1 at89c51引腳圖</p><p><b>  引腳功能如下:</b></p><p>  VCC:接+5V。 </p><p><b>  GND:接地。 </b></p><p>  P0口:P0口為8位漏極開路雙向I/

8、O口,每引腳可吸收8個(gè)TTL門電流。 </p><p>  P1口:P1口是從內(nèi)部提供上拉電阻器的8位雙向I/O口,P1口緩沖器能接收和輸出4個(gè)TTL門電流。 </p><p>  P2口:P2口為內(nèi)部上拉電阻器的8位雙向I/O口,P2口緩沖器可接收和輸出4個(gè)TTL門電流。 </p><p>  P3口:P3口是8個(gè)帶內(nèi)部上拉電阻器的雙向I/O口,可接收和輸出4個(gè)T

9、TL門電流,P3口也可作為AT89C51的特殊功能口。 </p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位時(shí),要保持RST引腳2個(gè)機(jī)器周期的高電平時(shí)間。 </p><p>  ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6,它可用作

10、對(duì)外部輸出的脈沖或用于定時(shí)目的。要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過1個(gè)ALE脈沖。 </p><p>  PSEN:外部程序存儲(chǔ)器的選通信號(hào)。由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期2次PSEN有效,但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這2次有效的PSEN信號(hào)將不出現(xiàn)。 </p><p>  EA/VPP:當(dāng)EA保持低電平時(shí),外部程序存儲(chǔ)器地址為(0000H-FFFFH)不管是否有內(nèi)部程序存

11、儲(chǔ)器。FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 </p><p>  XTAL1:反向振蕩器放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 </p><p>  XTAL2:來自反向振蕩器的輸出。 </p><p>  1.1.3 工作原理 </p><p>  AT89C51 P0口為三態(tài)雙向I/O口。對(duì)于內(nèi)部有程序存儲(chǔ)器的單

12、片機(jī)基本系統(tǒng),P0口可以為輸入/輸出口使用,直接連外部的輸入/輸出設(shè)備;P0口也可以作為系統(tǒng)擴(kuò)展的地址/數(shù)據(jù)總線口。P0口的輸出驅(qū)動(dòng)器中有兩個(gè)場(chǎng)效應(yīng)管T1和T2,上管導(dǎo)通下管截止時(shí)輸出高電平,下管導(dǎo)通上管截止時(shí)輸出低電平,上下管都截止時(shí)輸出引腳浮空。P0口的輸出驅(qū)動(dòng)器中也有一個(gè)多路電子開關(guān)。輸出驅(qū)動(dòng)器轉(zhuǎn)接至口鎖存器的Q端時(shí),P0口作為雙響向I/O口使用,P0口的鎖存器為“1”時(shí),輸出驅(qū)動(dòng)器中的兩個(gè)場(chǎng)效應(yīng)管均截止,引腳浮空;而寫入“0”時(shí)

13、,下管道導(dǎo)通輸出低電平。一般情況下,P0作為輸入/輸出口時(shí)應(yīng)外接拉高電阻。當(dāng)輸出驅(qū)動(dòng)器轉(zhuǎn)換至地址/數(shù)據(jù)時(shí),P0口作為地址/數(shù)據(jù)總線口使用,分時(shí)輸出外部存儲(chǔ)器的低8位地址A0~A7和傳送數(shù)據(jù)D0~D7。低8位地址由地址允許鎖存信號(hào)ALE鎖存到外部的地址鎖存器中,接著P0口便輸入/輸出數(shù)據(jù)信息。</p><p>  1.2 溫度傳感器DS18B20</p><p>  【2】DS18B20是

14、由DALLAS公司生產(chǎn)的一種新型的單線數(shù)字溫度傳感器。,其體積小、適用于多種場(chǎng)合、并且適用電壓較寬、更為經(jīng)濟(jì)。數(shù)字化溫度傳感器DS18B20是世界上第一種支持“一線總線”接口的溫度傳感器。其溫度測(cè)量范圍為-55~+125℃,可編程為9位~12位轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625℃。其分辨率設(shè)定參數(shù)以及手動(dòng)設(shè)定的恒定溫度值和定時(shí)時(shí)間值存儲(chǔ)在EEPROM 中,掉電后仍然保存。被測(cè)溫度以符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出,其工作電源既可在遠(yuǎn)

15、端引入,也可通過采用寄生電源方式產(chǎn)生。多個(gè)DS18B20可以同時(shí)并聯(lián)到3根或2根線上,CPU只需要一根端口線就能與諸多DS18B20 進(jìn)行通信,所占用的微處理器端口較少,可以節(jié)省大量的引線和設(shè)計(jì)電路。因此用它來組成一個(gè)測(cè)溫系統(tǒng),線路簡(jiǎn)單,且在一根通信線上可以掛多個(gè)這樣的數(shù)字溫度計(jì),使用十分方便。</p><p>  圖12 DS18B20圖</p><p>  1.2.1 DS18B20

16、溫度傳感器工作原理</p><p>  DS18B20的測(cè)溫原理:低溫系數(shù)晶振的振蕩率受溫度影響很小,用于產(chǎn)生固定頻率脈沖信號(hào)送給計(jì)數(shù)器1;高溫系數(shù)晶振隨溫度變化其振蕩頻率改變明顯,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的輸入脈沖。首先計(jì)數(shù)器1和溫度寄存器預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。開始時(shí)計(jì)數(shù)器1對(duì)低溫系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減為0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將被重新裝入,隨后計(jì)

17、數(shù)器1重新開始對(duì)低溫系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0,停止溫度寄存器值的累加,此刻溫度寄存器中的數(shù)值即為所測(cè)溫度。</p><p>  1.2.2 DS18B20溫度傳感器工作特點(diǎn)-</p><p>  (1).采用單總線技術(shù),與單片機(jī)通信只需要一根I/O線;</p><p>  (2). DS18B20具有一個(gè)獨(dú)有不變的64位序列號(hào),

18、可以根據(jù)序列號(hào)訪問相應(yīng)的器件;</p><p>  (3).低壓供電,供電電源范圍為3~5V,可以直接從數(shù)據(jù)線上轉(zhuǎn)接電源(即為寄生電源方式);</p><p>  (4).測(cè)溫范圍為-55℃~+125℃,在-10℃~85℃范圍內(nèi)誤差為±0.5℃;</p><p>  (5).可編程數(shù)據(jù)為9~12位,轉(zhuǎn)換12位溫度最大時(shí)間為750ms;</p>

19、<p>  (6).可以自行手動(dòng)設(shè)定報(bào)警上下限溫度;</p><p>  (7).報(bào)警搜索命令可識(shí)別是否溫度超出預(yù)定值;</p><p>  (8).DS18B20的分辯率可以自行通過EEPROM設(shè)置為9~12位。</p><p>  (9).DS18B20可將測(cè)得的溫度值直接轉(zhuǎn)化為數(shù)字量,并可以通過串行通信的方式與主控制器進(jìn)行數(shù)據(jù)通信。</p&g

20、t;<p>  1.3 電機(jī)驅(qū)動(dòng)芯片L298</p><p>  【3】L298的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片采用15腳封裝。主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載;采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在

21、不受輸入信號(hào)影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用L298芯片驅(qū)動(dòng)電機(jī),該芯片可以驅(qū)動(dòng)兩臺(tái)直流電機(jī)。</p><p>  L298內(nèi)部電路原理圖,如下</p><p>  圖1.3 L298原理圖</p><p>  1.4 液晶顯示屏LM016L</p>

22、<p>  LM016L液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指令碼,只

23、能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼.</p><p>  2 硬件系統(tǒng)的整體結(jié)構(gòu)</p><p>  本設(shè)計(jì)的統(tǒng)硬件體系可以分為三部分,第一部分為微控制器組成的控制核心電路,第二部分為電動(dòng)

24、機(jī)驅(qū)動(dòng)模塊組成的電動(dòng)機(jī)接口電路,第三部分為鍵盤輸入模塊和液晶顯示模塊組成用戶接口電路。</p><p>  2.1 系統(tǒng)硬件的整體結(jié)構(gòu)</p><p>  圖2.1系統(tǒng)總體結(jié)構(gòu)圖</p><p>  2.2 基本硬件組成</p><p>  2.2.1 時(shí)鐘電路</p><p>  如圖3.4所示,at89c5芯

25、片的振蕩器的主要器件是一個(gè)反相放大器,從XTAL1端輸入,從XTAL2端輸出,電路時(shí)鐘能夠由內(nèi)部設(shè)備或者外接設(shè)備產(chǎn)生,從XTAL1和XTAL2引腳上連接某個(gè)定時(shí)器件,其內(nèi)置的振蕩電路就能產(chǎn)生相應(yīng)的自激振蕩。該系統(tǒng)的并聯(lián)諧振電路采用石英晶體和電容器。電路的晶振頻率選擇的是11.0592MHZ,電容器C1、C2的電容均取值30pF,電容的大小可頻率進(jìn)行微調(diào)。</p><p>  圖2.2 時(shí)鐘電路圖</p>

26、;<p>  2.2.2 鍵盤輸入電路</p><p>  本系統(tǒng)采用的是4×4矩陣鍵盤,接到at89c51的P1.0-P1.7口而實(shí)現(xiàn)</p><p>  圖2.3 鍵盤輸入電路圖</p><p>  2.2.3 顯示電路</p><p>  顯示電路采用的是LCD功能組件(LM016L),用來顯示溫度測(cè)量值跟設(shè)

27、定值。顯示電路如圖所示。</p><p>  圖2.4 顯示電路圖</p><p>  2.2.4 溫度檢測(cè)電路</p><p>  本設(shè)計(jì)采用的是DS1820傳感器,如圖所示。因?yàn)榉抡孢^程不可能實(shí)際采樣到溫度,我們才用DS18B20傳感器,通過手動(dòng)調(diào)節(jié)來仿真溫度。</p><p>  圖2.5 溫度檢測(cè)電路圖</p><

28、;p>  2.2.5 電機(jī)驅(qū)動(dòng)電路</p><p>  圖2.6電機(jī)驅(qū)動(dòng)電路圖</p><p>  2.2.6 火災(zāi)報(bào)警電路</p><p>  圖2.7 火災(zāi)報(bào)警電路圖</p><p><b>  3 軟件設(shè)計(jì)</b></p><p>  3.1 系統(tǒng)軟件的整體結(jié)構(gòu)</p&g

29、t;<p>  圖3.1 結(jié)構(gòu)框圖</p><p>  3.2 基本模塊設(shè)計(jì)</p><p>  簡(jiǎn)單介紹各個(gè)模塊基本函數(shù)及原理,LCD顯示、電機(jī)驅(qū)動(dòng)以及報(bào)警模塊比較簡(jiǎn)單,不再一一贅述。</p><p>  3.2.1 溫度檢測(cè)顯示模塊</p><p>  溫度檢測(cè)顯示模塊的全部函數(shù)在下表列出:</p>&l

30、t;p>  表3.1 溫度檢測(cè)顯示模塊函數(shù)表</p><p>  主要介紹獲取當(dāng)前溫度值和顯示溫度函數(shù)。</p><p>  a)獲取當(dāng)前溫度值 getTmpValue()</p><p>  int getTmpValue()</p><p><b>  {</b></p><p>  

31、unsigned int tmpvalue;</p><p>  int value; //存放溫度數(shù)值</p><p><b>  float t;</b></p><p>  unsigned char low, high;</p><p>  sendReadCmd();//連續(xù)讀取兩個(gè)字節(jié)數(shù)據(jù)</p>

32、<p>  low = readByte(); //讀低8位</p><p>  high = readByte();//讀高 8位 //將高低兩個(gè)字節(jié)合成一個(gè)整形變量</p><p>  tmpvalue = high;</p><p>  tmpvalue <<= 8;</p><p>  tmpvalue |

33、= low;</p><p>  value = tmpvalue;//使用DS18B20的默認(rèn)分辨率12位, 精確度為0.0625度, 即讀 回?cái)?shù)據(jù)的最低位代表0.0625度</p><p>  t = value * 0.0625;//將它放大100倍,實(shí)數(shù)變成了整數(shù), 使顯示時(shí)可顯示小數(shù)點(diǎn)后兩位, 并對(duì)小數(shù)點(diǎn)后第三進(jìn)行4舍5入</p><p>  valu

34、e = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0減0.5</p><p>  return value;</p><p><b>  }</b></p><p>  b) 顯示溫度display(int v)</p><p>  void display(

35、int v)</p><p><b>  {</b></p><p>  unsigned char count;</p><p>  unsigned char datas[] = {0, 0, 0, 0, 0};</p><p>  unsigned int tmp = abs(v); //取絕對(duì)值函數(shù)<

36、/p><p>  datas[0] = tmp / 10000;</p><p>  datas[1] = tmp % 10000 / 1000;</p><p>  datas[2] = tmp % 1000 / 100;</p><p>  datas[3] = tmp % 100 / 10;</p><p>  da

37、tas[4] = tmp % 10;</p><p>  writeComm(0xc0+10); </p><p>  if(v < 0) //首先判斷溫度正負(fù)</p><p>  { writeString("- ", 2);</p><p><b>  }</b>&l

38、t;/p><p><b>  else</b></p><p>  { writeString("+ ", 2)</p><p><b>  }</b></p><p>  if(datas[0] != 0)</p><p><b>  {<

39、/b></p><p>  writeData('0'+datas[0]);</p><p><b>  }</b></p><p>  for(count = 1; count != 5; count++)</p><p><b>  {</b></p><

40、;p>  writeData('0'+datas[count]);</p><p>  if(count == 2)</p><p>  {writeData('.') }</p><p><b>  }</b></p><p><b>  }</b></

41、p><p>  3.2.2 鍵盤輸入模塊(溫度設(shè)定模塊)</p><p>  本次設(shè)計(jì)中鍵盤輸入起到溫度設(shè)定,模式選擇以及定時(shí)等功能。以溫度設(shè)定為例,具體介紹如何從鍵盤輸入數(shù)據(jù)給主控芯片。如圖4*4的鍵盤接到P1.0-P1.7腳</p><p>  圖3.2 鍵盤連接圖</p><p>  我們采用查詢方式進(jìn)行鍵盤輸入處理,首先判斷有無按鍵按

42、下,即把所有列線P1.0-P1.3置為低電平,然后檢查各行線的狀態(tài),若行線不全為高電平,則表示鍵盤中有鍵按下,反之則沒有。然后查找具體按鍵。同樣先置列線為低電平,檢查行線,記下行線為高的鍵。接著行線置為低電平,檢查列線,記下列線為高的鍵。如此對(duì)應(yīng)的鍵即可確定。</p><p>  Int n,m;//n表示行,m表示列</p><p>  uint wendu[4][3]={1,2,3,

43、4,5,6,7,8,9,0}; //按鍵對(duì)應(yīng)數(shù)字</p><p>  void scanwendu()//掃描溫度</p><p>  {int hang=0; //有鍵按下的標(biāo)志</p><p>  if(hang==0){P1=0xf0;</p><p>  if(P1!=0xf0) { temp=P1; //置列線為低電平</

44、p><p>  switch(temp)</p><p>  { case 0xe0: n=0;hang=1; break;</p><p>  case 0xd0: n=1;hang=1; break;</p><p>  case 0xb0: n=2;hang=1; break;</p><p>  ca

45、se 0x70: n=3;hang=1;</p><p>  break;}} }</p><p>  if(hang==1){P1=0x0f; //置行線為低電平 </p><p>  if(P1!=0x0f) { temp=P1; //next 為設(shè)置的標(biāo)志位,即表示第一次按鍵結(jié)束</p><p>  switch(temp)<

46、;/p><p>  { case 0x0e: m=3;next=1; break;</p><p>  case 0x0d: m=2;next=1; break;</p><p>  case 0x0b: m=1;next=1; break;</p><p>  case 0x07: m=0;</p><p>

47、;<b>  break;}}</b></p><p><b>  } </b></p><p>  掃描兩次按鍵,轉(zhuǎn)化為溫度</p><p>  void setwendu() //設(shè)置溫度</p><p>  { int count=0; int biaozhi=0; temp=P1;

48、</p><p>  while(biaozhi!=2){</p><p>  while(next!=1){ scanwendu();</p><p>  temp3=wendu[n][m]; </p><p>  tm=temp3; //第一次值保存在tm中</p><p>  writeComm(0xc

49、0+10);//顯示</p><p>  writeData('0'+tm);</p><p><b>  }</b></p><p>  delayMs(2000); </p><p><b>  next=0;</b></p><p>  while(n

50、ext!=1){scanwendu(); temp3=wendu[n][m]; } //第二次值保存在temp3中 </p><p>  writeComm(0xc0+11);</p><p>  writeData('0'+temp3);</p><p>  biaozhi=2;</p><p>  } de

51、layMs(1000);</p><p><b>  }</b></p><p>  3.2.3 模式選擇及處理模塊 </p><p>  溫度檢測(cè)顯示模塊的全部函數(shù)在下表列出:</p><p>  表3.2 模式選擇及處理模塊函數(shù)表</p><p>  主要介紹獲取選擇模式和溫度處理函數(shù)。

52、</p><p>  void selectmodel(int n)//選擇模式</p><p>  { if(n==0)model0(getTmpValue()); //n為scanmode()函數(shù)所得到的模式選擇值</p><p>  if(n==1)model1(getTmpValue());</p><p>

53、  if(n==2)model2(getTmpValue());</p><p><b>  }</b></p><p>  void model0(int t) //智能溫度處理函數(shù)</p><p>  { int q;</p><p>  q=tm*10+temp3;//從鍵盤得到輸入溫度</p>

54、;<p><b>  t=t/100; </b></p><p>  writeComm(0x80);writeString(table,10);</p><p>  writeComm(0x89);display1();//顯示設(shè)定溫度</p><p>  writeComm(0xc0);</p><p>

55、;  writeString(table1, 10);</p><p>  delayMs(1000); //溫度轉(zhuǎn)換時(shí)間需要750ms以上</p><p>  writeComm(0xc0+10);display(getTmpValue()); //顯示當(dāng)前溫度</p><p>  if(t<q) //如果當(dāng)前溫度小于設(shè)定溫度,則電機(jī)不轉(zhuǎn)</p&g

56、t;<p>  { L29B_ENA=0;</p><p><b>  }</b></p><p>  if(t-q>=3){ //如果當(dāng)前溫度比設(shè)定大的多,則電機(jī)快速轉(zhuǎn)動(dòng),快速降溫</p><p>  L298_forward(20,5); }</p><p>  if(t-q&l

57、t;3&&t-q>=0) { L298_forward(15,15);} // 如果當(dāng)前溫度比設(shè)定高一點(diǎn),則緩慢降溫</p><p><b>  }</b></p><p>  3.2.5 定時(shí)模塊</p><p>  表3.3 定時(shí)模塊函數(shù)表</p><p>  設(shè)置時(shí)間和設(shè)定溫度基本相似,為

58、簡(jiǎn)化處理,只提供了3個(gè)定時(shí)時(shí)間,分別是10分鐘,15分鐘,30分鐘,對(duì)應(yīng)鍵盤的1,2,3號(hào)鍵 </p><p>  void scantime()//掃描時(shí)間</p><p><b>  {</b></p><p><b>  P1=0xef;</b></p><p>  if(P1!=0xef){

59、{temp=P1;</p><p>  switch(temp)</p><p>  { case 0xe7: time=0; break;</p><p>  case 0xeb: time=1; break;</p><p>  case 0xed: time=2; break;</p><p> 

60、 case 0xee: time=3;</p><p>  break;}}}</p><p><b>  }</b></p><p>  采用定時(shí)器T0來實(shí)現(xiàn)定時(shí) </p><p>  void timer1_init()</p><p>  {TMOD=0x01; //使用定時(shí)

61、器T0的模式1</p><p>  if(time==0){ TH0=(65536-50000)/256; // 50ms</p><p>  TL0=(65536-50000)%256;}</p><p><b>  }</b></p><p>  void Time0(void) interrup

62、t 1 using 0 // 當(dāng)達(dá)到設(shè)定時(shí)間,風(fēng)扇停止旋轉(zhuǎn)</p><p><b>  { int i;</b></p><p><b>  i=i+1;</b></p><p>  if(i=time*1200) L298_forward(0,0);</p><p><b> 

63、 } </b></p><p><b>  4 基本功能演示</b></p><p><b>  4.1按鍵功能圖</b></p><p>  圖4.1 按鍵功能圖</p><p><b>  4.2溫度設(shè)定</b></p><p>

64、  系統(tǒng)啟動(dòng)后,首先需要用戶輸入設(shè)定溫度,LCD顯示“Please enter the temp”</p><p>  圖4.2 設(shè)定溫度圖</p><p>  通過鍵盤輸入溫度,比如此時(shí)先后按下“2”、“3”顯示23,表示已設(shè)定23度</p><p>  圖4.3 設(shè)定溫度23度圖</p><p><b>  4.3 模式選擇

65、</b></p><p>  當(dāng)用戶設(shè)定完溫度,LCD提示選擇功能模式。按下模式選擇鍵進(jìn)入模式選擇。簡(jiǎn)單介紹三個(gè)模式:模式0為智能溫度模式,當(dāng)前溫度小于設(shè)定則不啟動(dòng)風(fēng)扇,高于設(shè)定很多,則快速降溫,高一點(diǎn)則緩慢降溫。模式1為快速降溫,當(dāng)前溫度高于設(shè)定則快速降溫。模式2為定時(shí)降溫,當(dāng)達(dá)到設(shè)定時(shí)間,風(fēng)扇即停止旋轉(zhuǎn)。</p><p>  以選擇模式1為例,設(shè)定溫度23度。</p&

66、gt;<p>  圖4.4 選擇模式圖</p><p>  當(dāng)前溫度31,風(fēng)扇快速旋轉(zhuǎn)。</p><p>  圖4.5 當(dāng)前溫度圖 圖4.6 轉(zhuǎn)速圖</p><p>  當(dāng)前溫度24,風(fēng)扇緩慢旋轉(zhuǎn)。</p><p>  圖4.7 當(dāng)前溫度圖

67、 圖4.8 轉(zhuǎn)速圖</p><p>  當(dāng)前溫度22,風(fēng)扇停止旋轉(zhuǎn)</p><p>  圖4.9 當(dāng)前溫度圖 圖4.10 轉(zhuǎn)速圖</p><p><b>  5 實(shí)驗(yàn)總結(jié)</b></p><p>  用AT89C51和DSB1620

68、溫度傳感器設(shè)計(jì)一個(gè)簡(jiǎn)單的空氣調(diào)節(jié)器。 本次設(shè)計(jì)基本實(shí)現(xiàn)了課題要求的功能。包括系統(tǒng)啟停、溫度檢測(cè)、溫度設(shè)定、風(fēng)速選擇和工作模式選擇(配合電機(jī)控制)、定時(shí)、顯示等,此外還增加了火災(zāi)報(bào)警功能,當(dāng)室內(nèi)溫度過高時(shí)(>100度),即會(huì)報(bào)警。</p><p>  通過本次課程設(shè)計(jì),鞏固了我所學(xué)的專業(yè)知識(shí),也使我把理論與實(shí)踐從真正意義上相結(jié)合起來;鍛煉了借助互聯(lián)網(wǎng)搜集、查閱相關(guān)文獻(xiàn)資料,組織材料的能力;從中可以自我測(cè)驗(yàn),認(rèn)

69、識(shí)到自己哪方面有欠缺、不足,以便于在日后的學(xué)習(xí)和工作中得以改進(jìn)、提高;通過使用 keil以及Proteus軟件,實(shí)現(xiàn)軟硬件聯(lián)調(diào),讓我熟悉了整個(gè)設(shè)計(jì)流程。</p><p>  在本次設(shè)計(jì)的過程中,我遇到最大的困難就是鍵盤輸入,確切的說應(yīng)該是溫度設(shè)定功能的實(shí)現(xiàn)。因?yàn)檩斎霚囟葧r(shí)需要兩次(0~9)按鍵,單片機(jī)無法識(shí)別對(duì)第一次按鍵是否結(jié)束,進(jìn)而進(jìn)行第二次的輸入。經(jīng)過反復(fù)試驗(yàn),除了增加消顫,我還增加了延時(shí)以及按鍵標(biāo)志位,最終

70、實(shí)現(xiàn)了溫度的輸入。當(dāng)然還有好多不足,比如為了簡(jiǎn)化,定時(shí)我只設(shè)置了10,15,30,分鐘這樣三種定時(shí)。按鍵輸入時(shí),會(huì)出現(xiàn)反應(yīng)不靈敏并且每次按鍵必須恢原樣后才能進(jìn)行下一次按鍵,有些麻煩。不過,我相信如果繼續(xù)反復(fù)調(diào)試修改,一定能夠解決這些問題。</p><p><b>  參 考 文 獻(xiàn)</b></p><p>  [1] 孔超,張瑋 化繁為簡(jiǎn) 51單片機(jī)應(yīng)該這樣學(xué)[M].

71、 北京: 中國(guó)鐵道出版社,2013-5</p><p>  [2] 安特凌電子DS18B20中文資料 [OB/OL] www.aterlin.com/zh-cn/a/8/2333.html </p><p>  [3] 孟英紅,齊婉玉,段學(xué)鋒 用L297,L298組成步進(jìn)電機(jī)驅(qū)動(dòng)電路 [J]. 天津: 儀器儀表學(xué)報(bào),2003.12-26.</p><p>

72、  [4] 張毅剛等 單片機(jī)原理及應(yīng)用[M]. 北京:高等教育出版社,2013-6</p><p>  [5] 蔡建清,徐禹田. 淺談樓宇自控中空調(diào)系統(tǒng)設(shè)計(jì)的幾個(gè)問題[J]. 智能筑,2007,(05) .</p><p>  [6] 周潤(rùn)景、袁偉亭、景曉松編著,Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例[M].北京:電子工業(yè)出版社,2006..10.</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論