基于單片機的空調(diào)溫度控制器的設計論文_第1頁
基于單片機的空調(diào)溫度控制器的設計論文_第2頁
基于單片機的空調(diào)溫度控制器的設計論文_第3頁
基于單片機的空調(diào)溫度控制器的設計論文_第4頁
基于單片機的空調(diào)溫度控制器的設計論文_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 . . . 1 / 42接口 技術課程設計報告基于單片機的空調(diào)溫度控制器設計基于單片機的空調(diào)溫度控制器設計摘 要設計了基于 AT89C52 的高精度家用空調(diào)溫度控制系統(tǒng),系統(tǒng)硬件主要由電源電路、溫度采集電路(DS18B20) 、鍵盤、顯示電路、輸出控制電路與其他輔助電路組成;軟件采用 8051C 語言編程;該系統(tǒng)可以完成溫度的顯示、溫度的設定、空調(diào)的控制等多項功能。關鍵詞:單片機;DS18B20;溫度檢測;顯示 . . . 2 / 42目錄目錄1 設計目的與要求 .11.1 設計目的和意義 11.2 設計任務與要求 12 硬件電路設計 .22.1 總體方案設計 22.2 功能模塊電路設計 3

2、2.2.1 單片機的選型 32.2.2 振蕩電路設計 52.2.3 復位電路設計 52.2.4 鍵盤接口電路設計 62.2.5 溫度測量電路設計 62.2.6 系統(tǒng)顯示電路設計 72.2.7 輸出控制電路設計 82.3 總電路設計 82.4 系統(tǒng)所用元器件 93 軟件系統(tǒng)設計 .103.1 軟件系統(tǒng)總體方案設計 103.2 軟件流程圖設計 104 系統(tǒng)調(diào)試 .125 總結(jié) .135.1 本系統(tǒng)存在的問題與改進措施 13參考文獻 .14附錄 1:系統(tǒng)的源程序清單.15附錄 2:系統(tǒng)的 PCB 圖.39 . . . 1 / 421 設計目的與要求1.1 設計目的和意義21 世紀的人們生活質(zhì)量不斷提

3、高,同時也對高科技電子產(chǎn)業(yè)提出了更高的要求,為了使人們生活更人性化、智能化。我設計了這一基于單片機的空調(diào)溫度控制系統(tǒng),人們只有生活在一定的溫度環(huán)境才能長期感覺舒服,才能保證不中暑不受凍,所以對室溫度要求要高。對于不同地區(qū)空調(diào)要求不同,有的需要升溫,有的需要降溫。一般都要維持在 2126C。目前,雖然我國大量生產(chǎn)空調(diào)制冷產(chǎn)品,但由于我國人口眾多,需求量過盛,在我國的北方地區(qū),還有好多家庭還沒有安裝有效地室溫控系統(tǒng)。溫度不能很好的控制在一定的圍,夏天室溫度過高,冬天溫度過低,這些均對人們正常生活帶來不利的影響,溫度、濕度均達不到人們的要求。以前溫度控制主要利用機械通風設備進行室、外空氣的交換來達到

4、降低室溫度,實現(xiàn)室溫度適宜人們生活。以前通風設備的開啟和關停,均是由人手動控制的,即由人們定時查看室外的溫度、濕度情況,按要求開關通風設備,這樣人們的勞動強度大,可靠性差,而且消耗人們體力,勞累成本過高。為此,需要有一種符合機械溫控要求的低成本的控制器,在溫差和濕度超過用戶設定值圍時,啟動制冷通風設備,否則自動關閉制冷通風設備。鑒于目前大多數(shù)制冷設備現(xiàn)在狀況,我設計了一款基于 MCS51 單片機的空調(diào)溫度控制系統(tǒng)。1.2 設計任務與要求系統(tǒng)要求利用單片機設計一空調(diào)溫度控制器,能夠?qū)崟r檢測并顯示室溫,能夠利用鍵盤設定溫度,并且和室溫進行比較,當室溫低于設定溫度時,系統(tǒng)能夠驅(qū)動加熱系統(tǒng)工作,當室溫

5、高于設定溫度時,系統(tǒng)能夠驅(qū)動制冷系統(tǒng)工作,當兩者溫度相等時,不做動作。 . . . 2 / 422 硬件電路設計2.1 總體方案設計空調(diào)溫度控制系統(tǒng),主要要完成對溫度的采集、顯示以與設定等工作,從而實現(xiàn)對空調(diào)的控制。傳統(tǒng)采用鉑電阻充當測溫器件的方案,雖然其中段測量線性度好,精度較高,但是測量電路的設計難度高 ,且測量電路系統(tǒng)龐大,難于調(diào)試 ,而且成本相對較高。鑒于上述原因,本系統(tǒng)采用 DS18B20 充當測溫器件。外部溫度信號經(jīng) DS18B20 將輸入的模擬信號轉(zhuǎn)換成 8 位的數(shù)字信號, 通過并 口傳送到單片機系統(tǒng)( AT89C52) 。單片機系統(tǒng)將接收的數(shù)字信號譯碼處理,通過 LCD1602

6、 將溫度顯示出來,同時單片機系統(tǒng)還將完成鍵盤掃描 、按鍵溫度設定、超溫報警等程序的處理 ,將處理的溫度信號與系統(tǒng)設定溫度值比較,形成可以控制空調(diào)制冷、制熱與停止工作三種工作狀態(tài),從而實現(xiàn)空調(diào)的智能化。另外,鍵盤輸入方面,采用了軟件來修正誤操作輸入 ,即輸入的溫度圍必須在系統(tǒng)硬件所確定的圍,直接降低由于誤操作帶來的風險,提高了系統(tǒng)的可靠性 ,體現(xiàn)了人性化的系統(tǒng)設計原則。系統(tǒng)的整體框圖如圖 1 所示:圖圖1 1 系統(tǒng)整體框圖系統(tǒng)整體框圖 . . . 3 / 422.2 功能模塊電路設計2.2.1 單片機的選型由于本系統(tǒng)只需要單片機完成矩陣鍵盤檢測以與處理 DS18B20 送來的溫度數(shù)據(jù)并送 LCD

7、1602 進行顯示對于 I/O 資源以與處理速度無特殊要求,故選擇 ATMEL 公司生產(chǎn)的 AT89C52 單片機,AT89C52 增加了在線調(diào)試功能,即程序可以通過 JTAG 接口下載,調(diào)試和固化,因而該芯片的開發(fā)不再需要昂貴的硬件仿真器,可實現(xiàn)實時仿真,所有的資源都可以為用戶所使用,可以在線編程或在系統(tǒng)編程,更進一步地說,在線編程或在系統(tǒng)編程是開發(fā)的系統(tǒng)具有了通過網(wǎng)絡進行升級、維護的潛在功能。AT89C52 的性能與特點1:與 MCS-51 系列單片機兼容。片有 8K 可在線重復編程的快速 存可擦寫存儲器(Flash Memory) 。存儲器可循環(huán)寫入/擦寫 10000 次以上。存儲器數(shù)據(jù)

8、保存時間為 10 年以上。寬工作電壓圍:Vcc 可為 2.7V-6.5V。全靜態(tài)工作:可從 0Hz-24MHz。程序存儲器具有三級加密保護。256 字節(jié)的部 RAM。32 條可編程 I/O 口線。三個 16 位定時器/計數(shù)器。中斷結(jié)構具有 5 級(6 級)中斷源和兩個優(yōu)下級??删幊倘p工串行通訊。空閑維持低功耗和掉電狀態(tài)保護存儲數(shù)據(jù)。 AT89C52 引腳圖如圖 2 所示。 . . . 4 / 42圖圖 2 2 AT89C52AT89C52 引腳圖引腳圖VCC: +5V 電源輸入GND:接地P0 口是一個雙向 8 位三態(tài) I/O 口,每個口可獨立控制。使用時需外接上拉電阻。P1 口是一個準雙向

9、 8 位 I/O 口,它的功能是單一的,只能用作數(shù)據(jù)的輸入或者輸出。P2 口是一個準雙向 8 位 I/O 口,輸出時,從 P2.x 端口可輸出 CPU 寫到鎖存器上的信號。當該接口用做數(shù)據(jù)輸入接口是,應先向該位寫 1,然后,讀該位即可讀入輸入數(shù)據(jù)。P3 口是具有第二功能的準雙向 8 位 I/O 口。ALE/PROG:地址所存/編程信號線。當 P0 口工作在第二功能時從該端口可復用工作,某時刻該端口可以送出地址信號 A0A7,而另外的時刻該端口傳送的是數(shù)據(jù)信號D0D7。利用 ALE 可以將地址信號 A0A7 鎖存到地址鎖存器。/VPP:該控制信號線也具有雙重功能,是允許訪問片外 ROM/編程高電

10、壓引線。EA . . . 5 / 42:程序存儲器允許輸出控制端,常用作片外 ROM 的讀控制信號,低電平有PSEN效。RESET:復位引腳,當該端加上超過 24 個時鐘周期的高電平時,可是 8051 復位。系統(tǒng)復位電路如圖 2.3 所示。X1、X2:外接時鐘引腳。X1 為片振蕩電路的輸入端,X2 為片振蕩電路的輸出端。2.2.2 振蕩電路設計AT89C52 部有一個用于構成片振蕩器的高增益反相放大器, 振蕩器產(chǎn)生的信號送到CPU, 作為 CPU 的時鐘信號,驅(qū)動 CPU 產(chǎn)生執(zhí)行指令功能的機器周期。引腳 XTAL1 和XTAL2 是此放大器的輸人端和輸出端。這個放大器與作為反饋元件的片外石英

11、晶體或瓷諧振器一起可構成一個自激振蕩器, 振蕩電路的連接如圖所示圖 8 所示,外接石英晶體或瓷諧振器以與電容 C1 和 C2 構成并聯(lián)諧振電路, 接在放大器的反饋回路中。對外接電容 C1 和 C2 的值雖然沒有嚴格的要求, 但電容的大小多少會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性、起振圈部振蕩的接法的快速性和溫度穩(wěn)定性。外接石英晶體時, C1 和 C2 一般?。?0pF-10pF) ,外接的是石英晶體, 所以,C1、C2 選擇標稱值 30pF。系統(tǒng)振蕩電路如圖 3 所示。圖圖 3 3 振蕩電路振蕩電路2.2.3 復位電路設計單片機復位是使 CPU 和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),

12、 并從這個狀態(tài)開始工作。無論是在單片機剛開始接上電源時, 還是斷電后或者發(fā)生故障后都要復位。89 系列單片機的復位信號是從 RST 引腳輸人到芯片的施密特觸發(fā)器中的。當系統(tǒng)處于正常工作狀態(tài)時, 且振蕩器穩(wěn)定后, 如果 RST 引腳有一個高電平并維持 2個機器周期(24 個振蕩周期), 則 CPU 就可響應并且將系統(tǒng)復位。復位分為手動復位和上電復位。本設計系統(tǒng)采用的是上電自動復位。系統(tǒng)復位電路如圖 4 所示。 . . . 6 / 42圖圖 4 4 復位電路復位電路2.2.4 鍵盤接口電路設計獨立鍵盤與單片機連接時,每個按鍵都需要單片機的一個 I/O 口,若單片機系統(tǒng)需要較多按鍵,如果用獨立按鍵會

13、占用過多的 I/O 口資源。單片機系統(tǒng)中 I/O 口資源往往比較寶貴,當用到多個按鍵時,為了節(jié)省 I/O 口線,一般需使用矩陣鍵盤。本系統(tǒng)共需使用 16 個按鍵,故選擇的矩陣鍵盤。鍵盤接口電路如圖 5 所示。44圖圖 5 5 鍵盤接口電路鍵盤接口電路2.2.5 溫度測量電路設計 本系統(tǒng)的溫度測量電路采用 DS18B20 來實現(xiàn)。DS18B20 是美國 DALLAS 半導體公司推出的第一片采用“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾、能力強、易配微處理器等優(yōu)點,可直接將溫度轉(zhuǎn)化成串行數(shù)字信號供處理器處理。DS18B20 的性能與特點2:適應電壓圍寬,電壓圍在,在寄生電源

14、方式下可由數(shù)據(jù)線供電。V5 . 50 . 3獨特的單線接口方式,它與微處理器連接時僅需一條口線即可實現(xiàn)微處理器與 . . . 7 / 42DS18B20 的雙向通信。支持多點組網(wǎng)功能,多個 DS18B20 可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。在使用中不需要任何外接元件,全部傳感元件與轉(zhuǎn)換電路集成在形如一只三極管的集成電路里。測溫圍-55+125,在-10+85時精度為0.5??删幊谭直媛蕿?912 位,對應的可分辨溫度分別為 0.5,0.25,0.125和 0.0625,可實現(xiàn)高精度測溫。在 9 位分辨率時,最多在 93.75ms 把溫度轉(zhuǎn)換為數(shù)字;12 位分辨率時,最多在750ms 把

15、溫度值轉(zhuǎn)換為數(shù)字。測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給 CPU,同時可傳送 CRC 校驗碼,具有極強的抗干擾糾錯能力。負壓特性。電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。系統(tǒng)溫度測量電路如圖 6 所示。圖圖 6 6 溫度測量電路溫度測量電路2.2.6 系統(tǒng)顯示電路設計本系統(tǒng)采用 LCD1602 作為系統(tǒng)的顯示器件,1602 字符型液晶是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,能分兩行顯示,它有若干個或者等75115點陣字符位組成,每個點陣字符位都可以顯示一個字符。1602 型液晶接口信號如下:1 腳 VSS:電源地。2 腳 VDD:電源正極。3 腳 V

16、O:液晶顯示對比度調(diào)節(jié)端。4 腳 RS:數(shù)據(jù)/命令選擇端(H/L)。5 腳 R/:讀寫選擇端(H/L) 。W6 腳 E:使能信號。腳:數(shù)據(jù)口。147D7D015 腳 BL1:背光電源正極。16 腳 BL2:背光電源負極。系統(tǒng)顯示電路如圖 7 所示。 . . . 8 / 42圖圖 7 7 系統(tǒng)顯示電路系統(tǒng)顯示電路2.2.7 輸出控制電路設計系統(tǒng)要求在當前室溫低于設定溫度時,能夠自動驅(qū)動加熱系統(tǒng)工作 ;在當前室溫高于設定溫度時能夠自動驅(qū)動制冷系統(tǒng)工作。本系統(tǒng)在復位后即置 P26 腳和 P27 腳為低電平,在當前室溫低于設定溫度時,通過置 P27 腳為高電平來驅(qū)動后級加熱系統(tǒng),本系統(tǒng)采用紅色 LED

17、 來代替加熱系統(tǒng);在當前室溫高于設定溫度時,通過置 P26 腳高電平來驅(qū)動后級制冷系統(tǒng),本系統(tǒng)采用藍色 LED 來代替制冷系統(tǒng)。輸出控制電路如圖 8 所示。圖圖 8 8 輸出控制電路輸出控制電路2.3 總電路設計系統(tǒng)總電路圖如圖 9 所示。 . . . 9 / 42圖圖 9 9 系統(tǒng)總電路圖系統(tǒng)總電路圖2.4 系統(tǒng)所用元器件本系統(tǒng)所用的元器件清單如表 1 所示。表表 1 1 系統(tǒng)所用元器件系統(tǒng)所用元器件元器件名稱元器件名稱數(shù)量數(shù)量點觸式開關1630pF 瓷片電容210uF 電解電容1藍色 LED1紅色 RED15V 電源插座1自鎖開關1LCD160211/4W10K 電阻310K 可調(diào)電阻1A

18、T89C521DS18B20112MHz 晶振1 . . . 10 / 423 軟件系統(tǒng)設計3.1 軟件系統(tǒng)總體方案設計 系統(tǒng)軟件由主程序模塊、測溫程序模塊、鍵盤掃描程序模塊以與液晶驅(qū)動程序模塊組成。3.2 軟件流程圖設計系統(tǒng)軟件流程圖如圖 10 所示。圖圖 1010 系統(tǒng)軟件流程圖系統(tǒng)軟件流程圖 . . . 11 / 424 4 系統(tǒng)調(diào)試系統(tǒng)調(diào)試程序在 Keil uVision4 環(huán)境下編寫,編譯通過后生成. .hex 文件加載到 Protuse 下可正常運行。程序默認溫度為 21.0,Protuse 下設定 DS18B20 的溫度也為 21.0,故開始運行時兩路 LED 燈都不點亮。當利用

19、鍵盤設定的溫度高于 DS18B20 默認的21.0時,紅色 LED 燈被點亮;當設定的溫度低于 DS18B20 默認的 21.0時,藍色LED 燈被點亮。附上仿真圖當設定的溫度高于 DS18B20 默認的 21.0時,紅色 LED 燈被點亮,如圖 11 所示。圖圖 1111 紅色紅色 LEDLED 燈點亮燈點亮當設定的溫度低于 DS18B20 默認的 21.0時,藍色 LED 燈被點亮。如圖 12 所示。 . . . 12 / 42圖圖 1212 藍色藍色 LEDLED 燈點亮燈點亮 . . . 13 / 425 5 總結(jié)總結(jié)5.1 本系統(tǒng)存在的問題與改進措施本系統(tǒng)所設計的空調(diào)溫度控制器僅對溫

20、度部分實現(xiàn)了控制,但對于實際空調(diào)中的模式選擇以與定時運行等工作過程還無法實現(xiàn),希望在以后的學習研究中能夠解決這些問題。5.2 心得體會 本次課程設計從獲得題目開始便著手準備,首先分析系統(tǒng)要求,在 Protuse 里完成硬件原理圖的搭建,然后開始在 Keil 環(huán)境下著手編寫各部分程序,調(diào)試相應的程序,在調(diào)試通過后再下載到 Protuse 里進行仿真,發(fā)現(xiàn)問題后再返回 Keil 下修改相應程序,直到最后仿真通過,最后在 Altium Designer 6 中畫出電路原理圖。在本次課程設計過程中得到了老師以與許多同學的幫助,感那些提供過幫助的老師和同學。 . . . 14 / 42參考文獻1 郭文川

21、主編. 單片機原理與接口技術. :中國農(nóng)業(yè),2007.2 郭天祥主編. 51 單片機 C 語言教程. :電子工業(yè),2009. . . . 15 / 42附錄 1:系統(tǒng)的源程序清單global.hglobal.h:ifndef _global_H#define _global_H#include#define uchar unsigned char/宏定義#define uint unsigned int#defineK_UP0X20/定義鍵值#defineK_DOWN0X21#defineK_CLEAR 0X24#defineK_OK0X25#defineK_ONE0X30#defineK_F

22、OUR0X31#defineK_SEVEN 0X32#defineK_POINT0X33#defineK_TWO0X34#defineK_FIVE0X43#defineK_EIGHT0X36#defineK_ZERO0X37#defineK_THREE0X38 . . . 16 / 42#defineK_SIX0X40#defineK_NINE0X41#defineK_SET0X42extern float TEMP_NOW;extern float TEMP_SET;extern uint T_Count;extern uint S_Count;extern uint P_Count;ext

23、ern uint N_Count;extern uint M_Count;extern uchar Current_Temp_Display_Buffer;extern uchar set_Temp_Display_Buffer;extern int sel;sbit lcden=P21;/液晶使能sbit lcdrs=P20;/液晶數(shù)據(jù)/命令選擇端sbit DQ =P22;/DS18B20 數(shù)據(jù)端sbit XX =P25;/讀寫選擇端sbit cold =P26;/輸出信號sbit warm =P27;/輸出信號#endifmain.cmain.c:#include#includegloba

24、l.h#includekey.h#include18B20.h#includeLCD.h/全局變量/float TEMP_NOW=0.0;float TEMP_SET=21.0;uint T_Count=0;uint S_Count=0;uint P_Count=0;uint N_Count=0; . . . 17 / 42uint M_Count=1;uchar Current_Temp_Display_Buffer= NOW:-23.5 ;uchar set_Temp_Display_Buffer= SET: 21.0 ;int sel=0;void Comparison();/定時/vo

25、id timer0_init(void)TMOD = 0 x00 ; /設置定時器 0 的工作方式TH0 = (8192-5000)/32;/單片機晶振為 12MHz,機器周期為 1us,t=5ms, /N=5000/1=5000TL0 = (8192-5000)%32;IE =0 x82;TR0=1;void timer0() interrupt 1 TH0 = (8192-5000)/32;TL0 = (8192-5000)%32; if(+T_Count = 100) /100 為 0.5s TR0=0;Read_Temperature();Display_Temperature() ;

26、T_Count=0;if(+P_Count = 6) N_Count=1; TR0=1;/主程序/void main() . . . 18 / 42init_lcd();Init_DS18B20();timer0_init();while(1)Print();set_num();Comparison();void Comparison()if(N_Count&M_Count)if(TEMP_NOWTEMP_SET)cold=1;warm=0;if(TEMP_NOW=TEMP_SET)cold=0;warm=0;18B20.h:18B20.h:#ifndef _18B20_H . . .

27、 19 / 42#define _18B20_H#includeglobal.hextern uchar Init_DS18B20(); extern void Read_Temperature();extern void Display_Temperature();#endif18B20.c:18B20.c:#includeglobal.h#include intrins.h#define delayNOP() _nop_();_nop_();_nop_();_nop_();uchar code Temperature_Char8 = 0 x0c,0 x12,0 x12,0 x0c,0 x0

28、0,0 x00,0 x00,0 x00;uchar code df_Table=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;uchar CurrentT = 0;uchar Temp_Value=0 x00,0 x00;uchar Display_Digit=0,0,0,0;bit DS18B20_IS_OK = 1;void Delay_INI(uint x) while(-x);void Delay(unsigned int n)do_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_

29、(); . . . 20 / 42n-;while(n);uchar Init_DS18B20() uchar status;DQ = 1;Delay_INI(8);DQ = 0;Delay_INI(90);DQ = 1;Delay_INI(8);status=DQ;Delay_INI(100);DQ = 1;return status;uchar ReadOneByte() uchar i,dat=0;DQ = 1;_nop_();for(i=0;i= 1;DQ = 1;_nop_();_nop_();if(DQ)dat |= 0X80;Delay(30); . . . 21 / 42DQ

30、= 1;return dat;void WriteOneByte(uchar dat) uchar i;for(i=0;i= 1;void Read_Temperature() if(Init_DS18B20()=1)DS18B20_IS_OK=0;elseWriteOneByte(0 xcc);WriteOneByte(0 x44);Init_DS18B20();WriteOneByte(0 xcc);WriteOneByte(0 xbe);Temp_Value0 = ReadOneByte(); Temp_Value1 = ReadOneByte();DS18B20_IS_OK=1;voi

31、d Display_Temperature() . . . 22 / 42uchar t = 150, ng = 0;if(Temp_Value1&0 xf8)=0 xf8) Temp_Value1 = Temp_Value1;Temp_Value0 = Temp_Value0+1;if(Temp_Value0=0 x00)Temp_Value1+;ng = 1;Display_Digit0 = df_TableTemp_Value0&0 x0f;CurrentT = (Temp_Value0&0 xf0)4) | (Temp_Value1&0 x07)4);D

32、isplay_Digit3 = CurrentT/100;Display_Digit2 = CurrentT%100/10;Display_Digit1 = CurrentT%10;Current_Temp_Display_Buffer11 = Display_Digit0 + 0;Current_Temp_Display_Buffer10 = .;Current_Temp_Display_Buffer9 = Display_Digit1 + 0;Current_Temp_Display_Buffer8 = Display_Digit2 + 0;Current_Temp_Display_Buf

33、fer7 = Display_Digit3 + 0;TEMP_NOW=Display_Digit2*10+Display_Digit1+Display_Digit0*0.1 ;if(Display_Digit3 = 0)Current_Temp_Display_Buffer7 = ;if(Display_Digit2 = 0&Display_Digit3=0)Current_Temp_Display_Buffer8 = ;if(ng)TEMP_NOW=-(Display_Digit2*10+Display_Digit1+Display_Digit0*0.1); if(Current_T

34、emp_Display_Buffer8 = )Current_Temp_Display_Buffer8 = -;else if(Current_Temp_Display_Buffer7 = )Current_Temp_Display_Buffer7 = -; . . . 23 / 42else Current_Temp_Display_Buffer6 = -; KEY.hKEY.h:#ifndef _KEY_H#define _KEY_H#includeextern unsigned char Keys_Scan();extern void set_num();extern void set(

35、);#endifKEY.cKEY.c:#include #include #include #include18B20.huchar code KeyCodeTable= 0 x11,0 x12,0 x14,0 x18,0 x21,0 x22,0 x24,0 x28,0 x41,0 x42,0 x44,0 x48,0 x81,0 x82,0 x84,0 x88;void Delay_key() uchar i;for(i=0;i200;i+);uchar Keys_Scan() . . . 24 / 42 uchar sCode,kCode,k;P3 = 0 xf0;if(P3&0 x

36、f0)!=0 xf0) Delay_key();if(P3&0 xf0)!=0 xf0) sCode = 0 xfe;for(k=0;k47)&(set_Temp_Display_Buffer1147)&(set_Temp_Display_Buffer947)&(set_Temp_Display_Buffer848)&(set_Temp_Display_Buffer1148)&(set_Temp_Display_Buffer948)&(set_Temp_Display_Buffer858) set_Temp_Display_Buffer8

37、-=1;else if(set_Temp_Display_Buffer8=48) set_Temp_Display_Buffer8=57; if(K_ONE = key)while(Keys_Scan() = K_ONE);set_Temp_Display_Buffer11=1;sel+;if(K_TWO = key)while(Keys_Scan() = K_TWO);set_Temp_Display_Buffer11=2;sel+;if(K_THREE = key)while(Keys_Scan() = K_THREE);set_Temp_Display_Buffer11=3;sel+;i

38、f(K_FOUR = key)while(Keys_Scan() = K_FOUR); . . . 28 / 42set_Temp_Display_Buffer11=4;sel+;if(K_FIVE = key)while(Keys_Scan() = K_FIVE);set_Temp_Display_Buffer11=5;sel+;if(K_SIX = key)while(Keys_Scan() = K_SIX);set_Temp_Display_Buffer11=6;sel+;if(K_SEVEN = key)while(Keys_Scan() = K_SEVEN);set_Temp_Dis

39、play_Buffer11=7;sel+;if(K_EIGHT = key)while(Keys_Scan() = K_EIGHT);set_Temp_Display_Buffer11=8;sel+;if(K_NINE = key)while(Keys_Scan() = K_NINE);set_Temp_Display_Buffer11=9;sel+;if(K_ZERO = key) . . . 29 / 42while(Keys_Scan() = K_ZERO);set_Temp_Display_Buffer11=0;sel+;if(K_OK = key)while(Keys_Scan()

40、= K_OK);TEMP_SET=(set_Temp_Display_Buffer8-48)*10+(set_Temp_Display_Buffer9-48)+(set_Temp_Display_Buffer11-48)*0.1;sel=0;M_Count=1;if(sel=1)key = Keys_Scan();if(K_CLEAR = key)while(Keys_Scan() = K_CLEAR);set_Temp_Display_Buffer8 = ;set_Temp_Display_Buffer9 = ;set_Temp_Display_Buffer10= ;set_Temp_Dis

41、play_Buffer11= ; M_Count=0;cold=0;warm=0;sel=0; if(K_ONE = key)while(Keys_Scan() = K_ONE);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=1;sel+; . . . 30 / 42if(K_TWO = key)while(Keys_Scan() = K_TWO);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Displa

42、y_Buffer11=2;sel+;if(K_THREE = key)while(Keys_Scan() = K_THREE);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=3;sel+;if(K_FOUR = key)while(Keys_Scan() = K_FOUR);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=4;sel+;if(K_FIVE = key)whil

43、e(Keys_Scan() = K_FIVE);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=5;sel+;if(K_SIX = key)while(Keys_Scan() = K_SIX);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=6;sel+; . . . 31 / 42if(K_SEVEN = key)while(Keys_Scan() = K_SEVEN);se

44、t_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=7;sel+;if(K_EIGHT = key)while(Keys_Scan() = K_EIGHT);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=8;sel+;if(K_NINE = key)while(Keys_Scan() = K_NINE);set_Temp_Display_Buffer10=set_Temp_Displ

45、ay_Buffer11 ;set_Temp_Display_Buffer11=9;sel+;if(K_ZERO = key)while(Keys_Scan() = K_ZERO);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=0;sel+;if(sel=2)key = Keys_Scan(); if(K_CLEAR = key)while(Keys_Scan() = K_CLEAR); . . . 32 / 42set_Temp_Display_Buffer8 = ;set_Temp

46、_Display_Buffer9 = ;set_Temp_Display_Buffer10= ;set_Temp_Display_Buffer11= ; M_Count=0;cold=0;warm=0;sel=0; if(K_POINT = key)while(Keys_Scan() = K_POINT);set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=.;sel+;if(sel=3

47、)key = Keys_Scan(); if(K_CLEAR = key)while(Keys_Scan() = K_CLEAR);set_Temp_Display_Buffer8 = ;set_Temp_Display_Buffer9 = ;set_Temp_Display_Buffer10= ;set_Temp_Display_Buffer11= ; M_Count=0;cold=0;warm=0;sel=0; if(K_ONE = key) . . . 33 / 42while(Keys_Scan() = K_ONE);set_Temp_Display_Buffer8=set_Temp_

48、Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=1;sel+;if(K_TWO = key)while(Keys_Scan() = K_TWO);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;

49、set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=2;sel+;if(K_THREE = key)while(Keys_Scan() = K_THREE);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Dis

50、play_Buffer11=3;sel+;if(K_FOUR = key)while(Keys_Scan() = K_FOUR);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=4;sel+;if(K_FIVE = key) . . . 34 / 42while(Keys_Scan(

51、) = K_FIVE);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=5;sel+;if(K_SIX = key)while(Keys_Scan() = K_SIX);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Te

52、mp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=6;sel+;if(K_SEVEN = key)while(Keys_Scan() = K_SEVEN);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Bu

53、ffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=7;sel+;if(K_EIGHT = key)while(Keys_Scan() = K_EIGHT);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=8;sel

54、+; . . . 35 / 42if(K_NINE = key)while(Keys_Scan() = K_NINE);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11=9;sel+;if(K_ZERO = key)while(Keys_Scan() = K_ZERO);set_Temp_Display_Buffer8=set_Temp_Dis

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論