基于單片機的智能溫度控制系統(tǒng)方案_第1頁
基于單片機的智能溫度控制系統(tǒng)方案_第2頁
基于單片機的智能溫度控制系統(tǒng)方案_第3頁
基于單片機的智能溫度控制系統(tǒng)方案_第4頁
基于單片機的智能溫度控制系統(tǒng)方案_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE31 / NUMPAGES31基于單片機的智能溫度控制系統(tǒng)的設(shè)計摘 要該水溫控制系統(tǒng)采用單片機進行溫度實時采集與控制。溫度采集由“一線總線”數(shù)字化溫度傳感器DS18B20提供,DS18B20在-5525固有測溫分辨率為0.5 。水溫實時控制采用雙向可控硅BT134和光隔離器MOC3041控制電熱絲和風(fēng)扇進行升溫、降溫控制。系統(tǒng)具備較高的測量精度和控制精度,能完成升溫和降溫控制。通過對基于單片機的相對溫度控制器設(shè)計,加深對傳感器技術(shù)及檢測技術(shù)的了解,鞏固對單片機知識的掌握,并系統(tǒng)的復(fù)習(xí)本專業(yè)所學(xué)過的知識。關(guān)鍵詞:AT89C51 DS18B20 BT134 MOC3041 水溫控制Abst

2、ractThis system uses the microcontroller. an measure the relative humidity of the surrounding air automatically and accurately , and after measuring the data and changing through, send it in the processor, Then through the programming of the software, after changing the value of relative humidity of

3、 the environment at present into the decimal digit, and then in charge of the number to show; And, through software programming, in addition, corresponding control circuit (such some circuit as photoelectric coupling and relay ,etc. make up ), design the relative humidity of the present environment

4、of regulation that can be automatic: When the indoor air humidity is too high. Through designing the controller of relative humidity based on one-chip computer , strengthen the knowledge of the technology of the sensor and detection technique, the ones that consolidated to knowledge of the one-chip

5、computer were mastered, and the systematic knowledge that a speciality has been studied of review.Keyword: AT89C51 DS18B20 BT134 MOC3041 水溫控制目錄 TOC o 1-3 h z u HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544381#_Toc2365443811.系統(tǒng)方案選擇和論證3HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l

6、 _Toc236544382#_Toc2365443821.1任務(wù) PAGEREF _Toc236544382 h 4HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544383#_Toc2365443831.2要求 PAGEREF _Toc236544383 h 4HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544384#_Toc2365443841.2.1基本要求 PAGEREF _Toc236544384 h 4HYPERLINK ./可疑文件夾/1

7、可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544385#_Toc2365443851.2.2發(fā)揮部分 PAGEREF _Toc236544385 h 4HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544386#_Toc2365443861.3 系統(tǒng)基本方案 PAGEREF _Toc236544386 h 4HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544387#_Toc2365443871.3.1各模塊電路的方案選

8、擇及論證 PAGEREF _Toc236544387 h 5HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544388#_Toc2365443881.3.2系統(tǒng)各模塊的最終方案 PAGEREF _Toc236544388 h 6HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544389#_Toc2365443892系統(tǒng)硬件設(shè)計8HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544390#

9、_Toc2365443902.1溫度采集部分設(shè)計8HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544391#_Toc2365443912.2 矩陣鍵盤的設(shè)計9HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544392#_Toc2365443922.3液晶顯電路9HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544393#_Toc2365443932.4 水溫升溫將溫控制.10HYPER

10、LINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544394#_Toc2365443943系統(tǒng)軟件設(shè)計 PAGEREF _Toc236544394 h 11HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544395#_Toc2365443953.1讀取DS18B20溫度模塊子程序 PAGEREF _Toc236544395 h 11HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544396#_Toc

11、2365443963.2數(shù)據(jù)處理子程序 PAGEREF _Toc236544396 h 11HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544397#_Toc2365443973.3鍵盤掃描子程序 PAGEREF _Toc236544397 h 13HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544398#_Toc2365443983.4主程序流程圖 PAGEREF _Toc236544398 h 14HYPERLINK ./可疑文件夾/1可疑文檔/新

12、建 Microsoft Word 文檔.doc l _Toc236544400#_Toc2365444004. 系統(tǒng)測試 PAGEREF _Toc236544400 h 16HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544401#_Toc2365444014.1 靜態(tài)溫度測試 PAGEREF _Toc236544401 h 16HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544402#_Toc2365444024.2動態(tài)溫控測量 PAGEREF _T

13、oc236544402 h 16HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544403#_Toc2365444034.3結(jié)果分析 PAGEREF _Toc236544403 h 16HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc236544404#_Toc236544404附錄1.參考文獻 PAGEREF _Toc236544404 h 18HYPERLINK ./可疑文件夾/1可疑文檔/新建 Microsoft Word 文檔.doc l _Toc2365

14、44405#_Toc236544405附錄2.源代碼 PAGEREF _Toc236544405 h 191.系統(tǒng)方案選擇和論證1.1任務(wù)設(shè)計并制作一個水溫自動控制系統(tǒng),控制對象為1升凈水,容器為搪瓷器皿。水溫可以在一定圍由人工設(shè)定,并能在環(huán)境溫度降低時實現(xiàn)自動控制,以保持設(shè)定的溫度基本不變。1.2要求技術(shù)指標為-40+100度控制精度為1度溫度檢測精度為0.5度控制對象為電爐絲加熱器,介質(zhì)為水,LED數(shù)碼直讀顯示1.3 系統(tǒng)基本方案根據(jù)題目要求系統(tǒng)模塊分可以劃分為:溫度測量模塊,顯示電路模塊,加熱模塊,控制模塊。為實現(xiàn)各模塊的功能,分別做了幾種不同的設(shè)計方案并進行了論證。1.3.1各模塊電路

15、的方案選擇及論證(1)控制器模塊根據(jù)題目要求,控制器主要用于對溫度測量信號的接受和處理、控制電熱絲和風(fēng)扇使控制對象滿足設(shè)計要求、控制顯示電路對溫度值實時顯示以及控制鍵盤實現(xiàn)對溫度值的設(shè)定等。對控制器的選擇有以下二種方案:方案一:由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二:由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,

16、就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計也比較簡單,故采用了方案二。(2)加熱裝置有效功率控制模塊根據(jù)題目,可以使用電熱爐進行加熱,控制電熱爐的功率即可以控制加熱的速度。當(dāng)水溫過高時,關(guān)掉電熱爐進行降溫處理,讓其自然冷卻。在制作中,我們裝設(shè)一個小電風(fēng)扇,當(dāng)水溫超高時關(guān)閉電爐開啟風(fēng)扇散熱,當(dāng)需要加熱時開啟電爐關(guān)閉風(fēng)扇。由于加熱的功率較大,考慮到簡化電路的設(shè)計,我們直接采用220V電源。對加熱裝置控制模塊有以下兩種方案:方案一:采用可控硅來控制加熱器有效功率

17、??煽毓枋且环N半控器件,應(yīng)用于交流電的功率控制有兩種形式:控制導(dǎo)通的交流周期數(shù)達到控制功率的目的;控制導(dǎo)通角的方式控制交流功率。由交流過零檢測電路輸出方波經(jīng)適當(dāng)延時控制雙向可控硅的導(dǎo)通角,延時時間即移相偏移量由溫度誤差計算得到??梢詫崿F(xiàn)對交流電單個周期有效值周期性控制,保證系統(tǒng)的動態(tài)性能指標。該方案電路稍復(fù)雜,需使用光耦合驅(qū)動芯片以及變壓器等器件。但該方案可以實現(xiàn)功率的連續(xù)調(diào)節(jié),因此響應(yīng)速度快,控制精度高。方案二:采用繼電器控制。使用繼電器可以很容易實現(xiàn)地通過較高的電壓和電流,在正常條件下,工作十分可靠。繼電器無需外加光耦,自身即可實現(xiàn)電氣隔離。這種電路無法精確實現(xiàn)電熱絲功率控制,電熱絲只能工

18、作在最大功率或零功率,對控制精度將造成影響。通過比較,我們選擇方案一。(3)溫度采集模塊題目要求溫度靜態(tài)誤差小于等于0.2,溫度信號為模擬信號,本設(shè)計要對溫度進行控制和顯示,所以要把模擬量轉(zhuǎn)換為數(shù)字量。該溫度采集模塊有以下三種方案:方案一:利用熱電阻傳感器作為感溫元件,熱電阻隨溫度變化而變化,用儀表測量出熱電阻的阻值變化,從而得到與電阻值相應(yīng)的溫度值。最常用的是鉑電阻傳感器,鉑電阻在氧化介質(zhì)中,甚至在高溫的條件下其物理,化學(xué)性質(zhì)不變。由鉑電阻阻值的變化經(jīng)小信號變送器XTR101將鉑電阻隨溫度變化的轉(zhuǎn)換為420mA線形變化電路,再將電流信號轉(zhuǎn)化為電壓信號,送到A/D轉(zhuǎn)換器ADC0809.即將模擬

19、信號轉(zhuǎn)換為數(shù)字信號。該方案線性度優(yōu)于0.01。方案二:采用溫度傳感器AD590K。AD590K具有較高精度和重復(fù)性,良好的非線性保證0.1的測量精度。加上軟件非線性補償可以實現(xiàn)高精度測量。AD590將溫度轉(zhuǎn)化為電流信號,因此要加相應(yīng)的調(diào)理電路,將電流信號轉(zhuǎn)化為電壓信號。送入8為A/D轉(zhuǎn)換器,可以獲得255級的精度,基本滿足題目要求。 方案三:采用數(shù)字溫度傳感器DS18B20。DS18B20為數(shù)字式溫度傳感器,無需其他外加電路,直接輸出數(shù)字量??芍苯优c單片機通信,讀取測溫數(shù)據(jù),電路簡單。基于以上分析和現(xiàn)有器件所限,溫度采集模塊選用方案三。DS18B20與傳統(tǒng)的熱敏電阻相比,他能夠直接讀出被測溫度

20、并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。他在測溫精度、轉(zhuǎn)換時間、傳輸距離、分辨率等方面帶來了令人滿意的效果。(4)鍵盤與顯示模塊根據(jù)題目要求,水溫要由人工設(shè)定,并能實時顯示溫度值。對鍵盤和顯示模塊有下面兩種方案: 方案一:采用液晶顯示屏和通用矩陣鍵盤。液晶顯示屏(LCD)具有功耗小、輕薄短小無輻射危險,平面直角顯示以及影象穩(wěn)定不閃爍,可視面積大,畫面效果好,抗干擾能力強,并可靈活的現(xiàn)實多種狀態(tài)。方案二:采用三位LED七段數(shù)碼管分別

21、顯示溫度的十位、個位和小數(shù)位。按鍵采用單列3按鍵進行溫度設(shè)定。數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化,對外界環(huán)境要求較低。同時數(shù)碼管采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。根據(jù)以上論述,51單片機資源豐富,根據(jù)需要,我們選用方案一。1.3.2 系統(tǒng)各模塊的最終方案根據(jù)以上分析,結(jié)合器件和設(shè)備等因素,確定如下方案: 1. 采用AT89C51單片機作為控制器,分別對溫度采集、LCD顯示、溫度設(shè)定、加熱裝置功率控制。2. 溫度測量模塊采用數(shù)字溫度傳感器DS18B20。此器件經(jīng)軟件設(shè)置可以實現(xiàn)高分辨率測量。 3. 電熱絲有效功率控制采用光隔離器和雙向可控硅控制。4. 顯示用LCD

22、液晶顯示實時溫度值。系統(tǒng)的基本框圖如圖1.1所示。CPU(AT 89C51)首先寫入命令給DS18B20,然后DS18B20開始轉(zhuǎn)換數(shù)據(jù),轉(zhuǎn)換后通過89S52來處理數(shù)據(jù)。數(shù)據(jù)處理后的結(jié)果就顯示到數(shù)碼管上。另外由鍵盤設(shè)定溫度值送到單片機,單片機通過數(shù)據(jù)處理發(fā)出溫度控制信息到繼電器。OutputLED數(shù)碼管繼電器DS18B20鍵盤輸入AT89C52Input1.1系統(tǒng)基本框圖2系統(tǒng)硬件設(shè)計2.1溫度采集部分設(shè)計本系統(tǒng)采用半導(dǎo)體溫度傳感器作為敏感元件。傳感器我們采用了DS18B20單總線可編程溫度傳感器,來實現(xiàn)對溫度的采集和轉(zhuǎn)換,DQ接上拉電阻,與單片機P2.6口相連,直接與單片機通訊,大大簡化了電

23、路的復(fù)雜度。DS18B20的測溫電路如圖2.1所示。圖2.1 DS18B20測溫電路2.2 矩陣鍵盤的設(shè)計由于控制鍵位較多,方便程序設(shè)計,硬件安全可靠,我們設(shè)計44矩陣鍵盤,與單片機P1口相連,電路如圖2.2所示。圖2.2 矩陣鍵盤電路2.3液晶顯電路我們用單片機P0口作為1602的數(shù)據(jù)傳輸口,P2.0為數(shù)據(jù)命令選擇端、P2.1讀寫、P2.2使能端。硬件電路如圖2.3所示。圖2.3 液晶硬件電路圖2.4 水溫升溫將溫控制. 本設(shè)計中涉及到了強電部分,因此對電爐的控制我們用moc3041和bt13電路如圖2.4,對風(fēng)扇我們采用繼電器,電路如圖2.5.圖2.4 電爐控制圖圖2.5 風(fēng)扇電路圖3系統(tǒng)

24、軟件設(shè)計3.1讀取DS18B20溫度模塊子程序每次對DA18B20操作時多要按造DS18B20工作過程中的協(xié)議進行。初始化- RoM操作命令- 存儲器操作命令- 處理數(shù)據(jù) 程序流程圖如圖3.1所示。3.2數(shù)據(jù)處理子程序由于DS18B20轉(zhuǎn)換后的代碼并不是實際的溫度值,所以要進行數(shù)據(jù)處理。由于本程序采用的是0.0625的精度,小數(shù)部分的值,可以用后四位代表的實際數(shù)值乘以0.0625,得到真正的數(shù)值,數(shù)值可能帶幾個小數(shù)位,所以采取四舍五入,保留一位小數(shù)即可。也就說,本系統(tǒng)的溫度精確到了0.1度。首先程序判斷溫度是否是零下,如果是,則DS18B20保存的是溫度的補碼值,需要對其低8位(LS Byte

25、)取反加一變成原碼。處理過后把DS18B20的溫度復(fù)制到單片機的RAM中,里面已經(jīng)是溫度值的Hex碼了,然后轉(zhuǎn)換Hex碼到BCD碼,分別把小數(shù)位,個位,十位的BCD碼存入RAM中。數(shù)據(jù)處理子程序流程圖如圖3.2所示。開始開始初始化DS18B20存在?ROM操作命令存儲操作命令讀取溫度值返回是否圖3.1 讀取DS18B20溫度子程序流程圖返回數(shù)據(jù)傳遞溫度是否為負?BCD碼轉(zhuǎn)換求補運算圖3.2 數(shù)據(jù)處理子程序流程圖3.3鍵盤掃描子程序設(shè)置上下限報警溫度開始鍵盤掃描功能鍵是否按下?是主函數(shù)否圖3.3 鍵盤子程序流程圖3.4主程序流程圖總模塊流程圖如圖3.4所示。本軟件設(shè)計采用循環(huán)查詢來處理各個模塊,

26、溫度是緩慢變化量所以可以滿足性能要求。初始化開始數(shù)據(jù)處理顯示子程序鍵盤掃描子程序繼電器可控硅ds18b20是否存在是顯示上次數(shù)值否溫度是否高于設(shè)置溫度是否風(fēng)扇電爐4. 系統(tǒng)測試4.1 靜態(tài)溫度測試測試方式:由于條件的限制,采用模擬加熱方式進行測試。測量儀器:空調(diào)溫度顯示屏測試結(jié)果如表4.1所示:表4.1 測試結(jié)果數(shù)據(jù)標準溫度/2022252728測量溫度/19.822.124.726.827.6誤差/0.20.10.30.20.44.2動態(tài)溫控測量測試方式:加熱方式用體溫對傳感器DS18B20進行加熱。設(shè)定控制溫度,記錄超調(diào)溫度,穩(wěn)態(tài)誤差。超調(diào)溫度與加熱的功率有關(guān),這里不再測量。測量儀器:空調(diào)

27、溫度顯示屏測量結(jié)果如表4.2所示:表4.2 測試結(jié)果數(shù)據(jù)設(shè)定溫度/29303335超調(diào)溫度/1.30.91.10.6穩(wěn)態(tài)誤差/0.20.40.20.44.3結(jié)果分析有以上的測量結(jié)果可見,系統(tǒng)基本上達到了所要求的指標,靜態(tài)測溫的精度主要由DS18B20來決定。在控溫指標中,影響系統(tǒng)的性能的因素很多。最關(guān)鍵的是加熱系統(tǒng)本身的物理性質(zhì)及控制算法。由于條件的限制,在本設(shè)計中采用體溫進行測試。 附錄1.參考文獻1勇 編 數(shù)字電路 電子工業(yè) 20042正振 編 電子電路設(shè)計與制作 廣西交通職業(yè)技術(shù)學(xué)院信息工程系 20073子文 編 單片機原理及應(yīng)用 電子科技大學(xué) 2006 王法能 編4單片機原理及應(yīng)用 科

28、學(xué) 20045全國大學(xué)生電子設(shè)計競賽培訓(xùn)系列教程 高吉祥 主編附錄2.源代碼#define uchar unsigned char#define uint unsigned intunsigned char key_value;/bit dir=1;unsigned char pwm=30;float temperature;unsigned char key_value; /存放鍵盤返回float temperature;unsigned char t2,*pt/用來存放溫度值,測溫程序就是通過這個數(shù)組與主函數(shù)通信的uchar key_flag=0;/定義有鍵按下的標志#include re

29、g52.h#include user.h#include hardware.c#include lcd.c#include ds18b20.h#include key.cvoid main()LCD_Initial();sys_init();setds18b20(TH,TL,RS);/設(shè)置上下限報警溫度和分辨率delay_18B20(100);Init_DS18B20();while(1)pt=ReadTemperature();/讀取溫度,溫度值存放在一個兩個字節(jié)的數(shù)組中,temper_LCD();/實測溫度轉(zhuǎn)化為ACSII碼,并送液晶顯示緩沖區(qū)LCD_Print(0,0,TempBuffe

30、r0);LCD_Print(0,1,TempBuffer1);key_value=kbscan();if(key_flag=1)key_value=kbscan();key_command(key_value);alarm=1;delay_20ms(20);alarm=0;else alarm=0;useralarm();void timer1(void) interrupt 3TH1=(65536-pwm*100)/256;TL1=(65536-10000)%256;#include /液晶顯示程序/Port Definitions*sbit LcdRs= P20;sbit LcdRw= P

31、21;sbit LcdEn = P22;sfr DBPort = 0 x80;/P0=0 x80,P1=0 x90,P2=0 xA0,P3=0 xB0.數(shù)據(jù)端口void lcd_delay(unsigned char t) unsigned char i,j;for(i=0;it;i+)for(j=0;j100;j+);/部等待函數(shù)void LCD_Wait(void)/讀忙狀態(tài)LcdRs=0;LcdRw=1;/向LCD寫入命令或數(shù)據(jù)#define LCD_COMMAN0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0 x0

32、1 / 清屏#define LCD_HOMING 0 x02 / 光標返回原點void LCD_Write(bit style, unsigned char input) /寫數(shù)據(jù)1/命令0LcdRs=style;LcdRw=0;DBPort=input;LcdEn=1;lcd_delay(10);LcdEn=0;LCD_Wait();/設(shè)置顯示模式#define LCD_SHOW0 x04 /顯示開#define LCD_HIDE0 x00 /顯示關(guān)#define LCD_CURSO0 x02 /顯示光標#define LCD_NO_CURSOR0 x00 /無光標#define LCD_F

33、LASH0 x01 /光標閃動#define LCD_NO_FLASH0 x00 /光標不閃動/設(shè)置輸入模式#define LCD_AC_UP 0 x02#define LCD_AC_DOWN 0 x00 / default#define LCD_MOVE 0 x01 / 畫面可平移#define LCD_NO_MOVE 0 x00 /default/初始化LCDvoid LCD_Initial(void) /初始化LCDLCD_Write(0,0 x38); /8位數(shù)據(jù)端口,2行顯示,5*7點陣lcd_delay(300);LCD_Write(0,0 x0c); /顯示模式LCD_Write

34、(0,0 x01); /清屏LCD_Write(0,0 x06); /輸入模式/*void GotoXY(unsigned char x, unsigned char y)EA=0;if(y=0) LCD_Write(0,0 x80|x);if(y=1) LCD_Write(0,0 xc0|x);EA=1;/輸出字符串void Print(unsigned char *str)EA=0;while(*str!=0)LCD_Write(1,*str+);EA=1;void LCD_Print(unsigned char x, unsigned char y, unsigned char *str

35、)EA=0;GotoXY(x,y);Print(str);EA=1;/hardware.c 硬件程序sbit alarm=P25;sbit hot=P27;sbit cold=P24;void sys_init(void) /*EA=1;ET1=1;TMOD=0X01;TH1=15536/256;TL1=15536%256;TR1=1; */alarm=0;cold=0;hot=0;/ 矩陣鍵盤程序#include char code tab44= .,1,4,7,/7,8,9, E UP0,2,5,8,/4,5,6, D downF,3,6,9,/1,2,3 , C SETB,C,D,E;

36、/0到F的16個鍵植/A .,0,F +/- ,B OKvoid delay(unsigned char a)unsigned char i;while(a-)for(i=100;i0;i-);unsigned char kbscan() /鍵盤掃描unsigned char hang,lie,key;key_flag=0;P1=0 x0f;if(P1!=0 x0f)delay(10);if(P1!=0 x0f)alarm=1;delay_20ms(3);alarm=0;key_flag=1;P1=0 x0f;switch(P1&0 x0f)case 0 x0e:lie=0;break;cas

37、e 0 x0d:lie=1;break;case 0 x0b:lie=2;break;case 0 x07:lie=3;break;P1=0 xf0;switch(P1&0 xf0)case 0 xe0:hang=0;break;case 0 xd0:hang=1;break;case 0 xb0:hang=2;break;case 0 x70:hang=3;break;P1=0 x0f;while(P1!=0 x0f);key=tabhanglie;return (key);else return(key_value);void settmper(void)unsigned char i;L

38、CD_Write(0,1);GotoXY(0,0);Print(H_Tmp:);for(i=0;i2;i+)key_flag=0;while(key_flag=0) key_value=kbscan();while(1)if(key_value!=B&key_value!=C&key_value!=D&key_value!=E&key_value!=F&key_value!=.) break;else key_value=kbscan();get_hti=key_value;LCD_Write(1,key_value+0 x30);GotoXY(0,1);Print(L_Tmp:);for(i

39、=0;i2;i+)key_flag=0;while(key_flag=0) key_value=kbscan();while(1)if(key_value!=B&key_value!=C&key_value!=D&key_value!=E&key_value!=F&key_value!=.) break;else key_value=kbscan();get_lti=key_value;LCD_Write(1,key_value+0 x30);while(1)key_value=kbscan();if(key_value=C) break;TH=get_ht0*10+get_ht1;TL=ge

40、t_lt0*10+get_lt1;setds18b20(TH,TL,RS); /設(shè)置上下限報警溫度和分辨率LCD_Write(0,0 x01);GotoXY(0,0);Print(Set Sucess!);delay_20ms(50);LCD_Write(0,0 x01);void setusertmper(void)unsigned char i;LCD_Write(0,1);GotoXY(0,0);Print(Set Tmper:);for(i=0;i2;i+)key_flag=0;while(key_flag=0)key_value=kbscan();while(1)if(key_val

41、ue!=B&key_value!=C&key_value!=D&key_value!=E&key_value!=F&key_value!=.) break;else key_value=kbscan();get_tmi=key_value;LCD_Write(1,key_value+0 x30);while(1)key_value=kbscan();if(key_value=B) break;user_temper=get_tm0*10+get_tm1;LCD_Write(0,0 x01);GotoXY(0,0);Print(Set Sucess!);delay_20ms(50);LCD_Write(0,0 x01);void key_command(unsigned char key_value)switch (key_value)case

溫馨提示

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

評論

0/150

提交評論