單片機溫度控制系統(tǒng)唐煒煒_第1頁
單片機溫度控制系統(tǒng)唐煒煒_第2頁
單片機溫度控制系統(tǒng)唐煒煒_第3頁
單片機溫度控制系統(tǒng)唐煒煒_第4頁
單片機溫度控制系統(tǒng)唐煒煒_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、機械與電子工程學(xué)院課程設(shè)計報告課 程 名 稱 單片機課程設(shè)計 設(shè) 計 題 目 基于單片機的溫度控制系統(tǒng) 所學(xué)專業(yè)名稱 自動化 班 級 自動化114 學(xué) 號 學(xué) 生 姓 名 唐煒煒 指 導(dǎo) 教 師 王炳庭 2014年 5 月 18 日機電學(xué)院單片機課程設(shè)計任 務(wù) 書設(shè)計名稱: 基于單片機的溫度控制系統(tǒng) 學(xué)生姓名: 唐煒煒 指導(dǎo)教師: 王炳庭 起止時間:自 2014 年 5 月 5 日起 至 2014 年 5 月 18 日止課程設(shè)計目的設(shè)計一種基于C51單片機的能對發(fā)熱器件進行溫度監(jiān)測和控制的簡單控制系統(tǒng)。課程設(shè)計任務(wù)和基本要求設(shè)計任務(wù):運用單片機技術(shù)結(jié)合ISIS、KEIL軟件進行仿真;能及時監(jiān)測

2、發(fā)熱器件的溫度變化并能對溫度進行設(shè)置;當溫度到達控制溫度時能對發(fā)熱器件進行控制的功能;具有顯示監(jiān)測溫度的擴展功能?;疽螅耗軌?qū)崿F(xiàn)設(shè)計任務(wù)的基本功能;至少設(shè)計兩種運用溫度監(jiān)測及控制器設(shè)計的實例;要求依據(jù)溫度監(jiān)測及控制器的任務(wù)要求,運用單片機原理、制定實驗方案,并撰寫課程設(shè)計論文要求符合模板的相關(guān)要求,字數(shù)要求3000字以上。機電學(xué)院單片機課程設(shè)計指導(dǎo)老師評價表院(部)機電學(xué)院年級專業(yè)自動化114學(xué)生姓名唐煒煒學(xué)生學(xué)號題 目溫度的監(jiān)測與控制系統(tǒng)指導(dǎo)老師評語本設(shè)計一種基于單片機的數(shù)字溫度計控制系統(tǒng)。利用數(shù)字溫度傳感器DS18B20,此傳感器課讀取被測量溫度值,進行轉(zhuǎn)換。報告文字通順,內(nèi)容詳實,論

3、述充分、完整,立論正確,結(jié)構(gòu)合理;報告字數(shù)符合相關(guān)要求,課題背景介紹清楚;設(shè)計方案合理邏輯性強,具有說服力;圖表完備、符合規(guī)范要求;能對整個設(shè)計過程進行全面的總結(jié),得出有一定價值的實驗結(jié)果。課程設(shè)計總體結(jié)構(gòu)合理,思路清晰,設(shè)計方案正確詳細,課程設(shè)計已達到要求。 指導(dǎo)老師簽名: 年 月 日 成績評定指導(dǎo)老師簽名: 年 月 日 目錄摘要與關(guān)鍵詞11.緒論21.1設(shè)計背景21.2設(shè)計要求及任務(wù)22.系統(tǒng)整體方案設(shè)計32.1方案設(shè)計與選擇3方案一:3方案二:3方案確立:33系統(tǒng)硬件設(shè)計63.1溫度采集部分設(shè)計63.2矩陣鍵盤的設(shè)計63.3液晶顯示電路73.4液晶顯示電路84系統(tǒng)軟件設(shè)計94.1讀取DS

4、18B2094.2數(shù)據(jù)處理子程序94.3鍵盤掃描子程序104.4主程序流程圖105系統(tǒng)測試125.1靜態(tài)溫度測試125.2動態(tài)溫控測量125.3結(jié)果分析126總結(jié)13參考文獻13附錄14溫度計的設(shè)計摘要與關(guān)鍵詞摘要:該溫度控制系統(tǒng)采用單片機進行水溫實時采集與控制。溫度采集由“一線總線”數(shù)字化溫度傳感器DS18B20提供,DS18B20在-5525固有測溫分辨率為0.5 。水溫實時控制采用雙向可控硅BT134和光隔離器MOC3041控制電熱絲和風(fēng)扇進行升溫、降溫控制。系統(tǒng)具備較高的測量精度和控制精度,能完成升溫和降溫控制。關(guān)鍵詞:AT89C51;DS18B20 ; BT134; MOC3041;

5、水溫控制1.緒論1.1設(shè)計背景數(shù)字溫度計采用溫度敏感元件也就是溫度傳感器(如鉑電阻,熱電偶,半導(dǎo)體,熱敏電阻等),將溫度的變化轉(zhuǎn)換成電信號的變化,如電壓和電流的變化,溫度變化和電信號的變化有一定的關(guān)系,如線性關(guān)系,一定的曲線關(guān)系等,這個電信號可以使用模數(shù)轉(zhuǎn)換的電路即A/D轉(zhuǎn)換電路將模擬信號轉(zhuǎn)換為數(shù)字信號,數(shù)字信號再送給處理單元,如單片機或者PC機等,處理單元經(jīng)過內(nèi)部的軟件計算將這個數(shù)字信號和溫度聯(lián)系起來,成為可以顯示出來的溫度數(shù)值,如25.0攝氏度,然后通過顯示單元,如LED,LCD或者電腦屏幕等顯示出來給人觀察。1.2設(shè)計要求及任務(wù)1.1任務(wù)該水溫自動控制系統(tǒng),控制對象為1升凈水,容器為搪瓷

6、器皿。水溫可以在一定范圍內(nèi)由人工設(shè)定,并能在環(huán)境溫度降低時實現(xiàn)自動控制,以保持設(shè)定的溫度基本不變。1.2要求技術(shù)指標為-40+100度控制精度為1度溫度檢測精度為0.5度控制對象為電爐絲加熱器,介質(zhì)為水,LED數(shù)碼直讀顯示2.系統(tǒng)整體方案設(shè)計2.1方案設(shè)計與選擇系統(tǒng)模塊分可以劃分為:溫度測量模塊,顯示電路模塊,加熱模塊,控制模塊。為實現(xiàn)各模塊的功能,分別做了幾種不同的設(shè)計方案并進行了論證。方案一:由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計

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

8、要加熱時開啟電爐關(guān)閉風(fēng)扇。由于加熱的功率較大,考慮到簡化電路的設(shè)計,我們直接采用220V電源。對加熱裝置控制模塊有以下兩種方案:方案一:采用可控硅來控制加熱器有效功率??煽毓枋且环N半控器件,應(yīng)用于交流電的功率控制有兩種形式:控制導(dǎo)通的交流周期數(shù)達到控制功率的目的;控制導(dǎo)通角的方式控制交流功率。由交流過零檢測電路輸出方波經(jīng)適當延時控制雙向可控硅的導(dǎo)通角,延時時間即移相偏移量由溫度誤差計算得到。可以實現(xiàn)對交流電單個周期有效值周期性控制,保證系統(tǒng)的動態(tài)性能指標。該方案電路稍復(fù)雜,需使用光耦合驅(qū)動芯片以及變壓器等器件。但該方案可以實現(xiàn)功率的連續(xù)調(diào)節(jié),因此響應(yīng)速度快,控制精度高。方案二:采用繼電器控制。

9、使用繼電器可以很容易實現(xiàn)地通過較高的電壓和電流,在正常條件下,工作十分可靠。繼電器無需外加光耦,自身即可實現(xiàn)電氣隔離。這種電路無法精確實現(xiàn)電熱絲功率控制,電熱絲只能工作在最大功率或零功率,對控制精度將造成影響。通過比較,我們選擇方案一。溫度采集模塊由于溫度靜態(tài)誤差小于等于0.2,溫度信號為模擬信號,本設(shè)計要對溫度進行控制和顯示,所以要把模擬量轉(zhuǎn)換為數(shù)字量。該溫度采集模塊有以下三種方案:方案一:利用熱電阻傳感器作為感溫元件,熱電阻隨溫度變化而變化,用儀表測量出熱電阻的阻值變化,從而得到與電阻值相應(yīng)的溫度值。最常用的是鉑電阻傳感器,鉑電阻在氧化介質(zhì)中,甚至在高溫的條件下其物理,化學(xué)性質(zhì)不變。由鉑電

10、阻阻值的變化經(jīng)小信號變送器XTR101將鉑電阻隨溫度變化的轉(zhuǎn)換為420mA線形變化電路,再將電流信號轉(zhuǎn)化為電壓信號,送到A/D轉(zhuǎn)換器ADC0809.即將模擬信號轉(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ù)字量

11、??芍苯优c單片機通信,讀取測溫數(shù)據(jù),電路簡單。基于以上分析和現(xiàn)有器件所限,溫度采集模塊選用方案三。DS18B20與傳統(tǒng)的熱敏電阻相比,他能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。他在測溫精度、轉(zhuǎn)換時間、傳輸距離、分辨率等方面帶來了令人滿意的效果。鍵盤與顯示模塊水溫要由人工設(shè)定,并能實時顯示溫度值。對鍵盤和顯示模塊有下面兩種方案: 方案一:采用液晶顯示屏和通用矩陣鍵盤。液晶顯示屏(LCD)具有功耗小、輕薄短小無輻射

12、危險,平面直角顯示以及影象穩(wěn)定不閃爍,可視面積大,畫面效果好,抗干擾能力強,并可靈活的現(xiàn)實多種狀態(tài)。方案二:采用三位LED七段數(shù)碼管分別顯示溫度的十位、個位和小數(shù)位。按鍵采用單列3按鍵進行溫度設(shè)定。數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化,對外界環(huán)境要求較低。同時數(shù)碼管采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。根據(jù)以上論述,51單片機資源豐富,根據(jù)需要,我們選用方案一。2.2 系統(tǒng)各模塊的最終方案根據(jù)以上分析,結(jié)合器件和設(shè)備等因素,確定如下方案: 采用AT89C51單片機作為控制器,分別對溫度采集、LCD顯示、溫度設(shè)定、加熱裝置功率控制。溫度測量模塊采用數(shù)字溫度傳感器DS18

13、B20。此器件經(jīng)軟件設(shè)置可以實現(xiàn)高分辨率測量。 電熱絲有效功率控制采用光隔離器和雙向可控硅控制。顯示用LCD液晶顯示實時溫度值。系統(tǒng)的基本框圖如圖2.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鍵盤輸入AT89C51Input2-1系統(tǒng)基本框圖3系統(tǒng)硬件設(shè)計3.1溫度采集部分設(shè)計本系統(tǒng)采用半導(dǎo)體溫度傳感器作為敏感元件。傳感器我們采用了DS18B20單總線可編

14、程溫度傳感器,來實現(xiàn)對溫度的采集和轉(zhuǎn)換,DQ接上拉電阻,與單片機P2.6口相連,直接與單片機通訊,大大簡化了電路的復(fù)雜度。DS18B20的測溫電路如圖3.1所示。圖3-1 DS18B20測溫電路3.2矩陣鍵盤的設(shè)計由于控制鍵位較多,方便程序設(shè)計,硬件安全可靠,我們設(shè)計44矩陣鍵盤,與單片機P1口相連,電路如圖3.2所示。圖3-2 矩陣鍵盤電路3.3液晶顯示電路我們用單片機P0口作為1602的數(shù)據(jù)傳輸口,P2.0為數(shù)據(jù)命令選擇端、P2.1讀寫、P2.2使能端。硬件電路如圖3.3所示。圖3-3 液晶硬件電路圖3.4液晶顯示電路本設(shè)計中涉及到了強電部分,因此對電爐的控制我們用moc3041和bt13

15、電路如圖2.4,對風(fēng)扇我們采用繼電器,電路如圖3.5.圖3-4 電爐控制圖圖3-5 風(fēng)扇電路圖4系統(tǒng)軟件設(shè)計4.1讀取DS18B20每次對DA18B20操作時多要按造DS18B20工作過程中的協(xié)議進行。初始化- Rom操作命令- 存儲器操作命令- 處理數(shù)據(jù) 程序流程圖如圖4.1所示。開始開始初始化DS18B20存在?ROM操作命令存儲操作命令讀取溫度值返回是否圖4-1 讀取DS18B20溫度子程序流程圖/*讀取ds18b20當前溫度*/unsigned char *ReadTemperature(void)unsigned char tt2;EA=0;Init_DS18B20();WriteO

16、neChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉(zhuǎn)換delay_18B20(70); / 溫度轉(zhuǎn)化要一段時間Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度tt0=ReadOneChar(); /讀取溫度值低位tt1=ReadOneChar();/讀取溫度值高位return(tt);EA=1;4.2數(shù)據(jù)處理子程序由于DS18B20轉(zhuǎn)換后的代碼并不是實際的溫度值,所以要進行數(shù)據(jù)處理。由于本程序采用的是0.

17、0625的精度,小數(shù)部分的值,可以用后四位代表的實際數(shù)值乘以0.0625,得到真正的數(shù)值,數(shù)值可能帶幾個小數(shù)位,所以采取四舍五入,保留一位小數(shù)即可。也就說,本系統(tǒng)的溫度精確到了0.1度。首先程序判斷溫度是否是零下,如果是,則DS18B20保存的是溫度的補碼值,需要對其低8位(LS Byte)取反加一變成原碼。處理過后把DS18B20的溫度復(fù)制到單片機的RAM中,里面已經(jīng)是溫度值的Hex碼了,然后轉(zhuǎn)換Hex碼到BCD碼,分別把小數(shù)位,個位,十位的BCD碼存入RAM中。4.3鍵盤掃描子程序設(shè)置上下限報警溫度開始鍵盤掃描功能鍵是否按下?是主函數(shù)否圖4-2鍵盤子程序流程圖/ 矩陣鍵盤程序#includ

18、e 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; /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() /鍵盤掃描4.4主程序流程圖總模塊流程圖如圖4.4所示。本軟件設(shè)計采用循環(huán)查詢來處理各個模塊,溫度是緩慢變化量所以可以滿足性能要求。初始化開始數(shù)據(jù)處理顯示子程序鍵盤掃描子程序繼

19、電器可控硅ds18b20是否存在是顯示上次數(shù)值否溫度是否高于設(shè)置溫度是否風(fēng)扇電爐 圖4-3總模塊流程圖5系統(tǒng)測試5.1靜態(tài)溫度測試測試方式:由于條件的限制,采用模擬加熱方式進行測試。測量儀器:空調(diào)溫度顯示屏測試結(jié)果如表5.1所示:表5-1 測試結(jié)果數(shù)據(jù)標準溫度/2022252728測量溫度/19.822.124.726.827.6誤差/0.20.10.30.20.45.2動態(tài)溫控測量測試方式:加熱方式用體溫對傳感器DS18B20進行加熱。設(shè)定控制溫度,記錄超調(diào)溫度,穩(wěn)態(tài)誤差。超調(diào)溫度與加熱的功率有關(guān),這里不再測量。測量儀器:空調(diào)溫度顯示屏測量結(jié)果如表5.2所示:表5-2 測試結(jié)果數(shù)據(jù)設(shè)定溫度/

20、29303335超調(diào)溫度/1.30.91.10.6穩(wěn)態(tài)誤差/0.20.40.20.45.3結(jié)果分析有以上的測量結(jié)果可見,系統(tǒng)基本上達到了所要求的指標,靜態(tài)測溫的精度主要由DS18B20來決定。在控溫指標中,影響系統(tǒng)的性能的因素很多。最關(guān)鍵的是加熱系統(tǒng)本身的物理性質(zhì)及控制算法。由于條件的限制,在本設(shè)計中采用體溫進行測試。 圖5-1 仿真圖11.如圖5-3所示。此時溫度時43度,超出上限溫度,黃燈亮,實現(xiàn)報警。圖5-2 仿真圖22.如圖5-4所示。此時溫度為5度,低于下限溫度,綠燈亮,實現(xiàn)報警。 6總結(jié)隨著社會的發(fā)展,機電控制的應(yīng)用越來越廣泛。不管做什么樣的工作,不管用到什么樣的機器,都要人為地、

21、有目的地進行控制。進而就要求控制元件的微型化、控制工作量的精確化等。這些要求使得單片機的作用越來越顯著。但就目前單片機控制的情況來看,單片機還遠遠滿足不了社會的要求。單片機要繼續(xù)朝著單一化、微型化等方面發(fā)展。與此同時還要努力提高傳感器、放大器以及轉(zhuǎn)換器等外圍元件的精度。這樣才能全面地提高單片機的控制質(zhì)量。整體地提高機電控制的質(zhì)量。進而能更好的服務(wù)于社會。參考文獻1劉勇 編 數(shù)字電路 電子工業(yè)出版社 20042王淑珍,王立萍.單片機系統(tǒng)設(shè)計.單片機原理與接口技術(shù) 科學(xué)出版社20083楊子文 編 單片機原理及應(yīng)用 2006 4單片機原理及應(yīng)用 科學(xué)出版社 20045基于單片機的溫度監(jiān)控系統(tǒng)的設(shè)計與

22、實現(xiàn) 機械工業(yè)出版社2006附錄1 仿真圖附錄2 源代碼#define uchar unsigned char#define uint unsigned intunsigned char key_value;unsigned char pwm=30;float temperature;unsigned char key_value; /存放鍵盤返回float temperature;unsigned char t2,*pt/用來存放溫度值,測溫程序就是通過這個數(shù)組與主函數(shù)通信的uchar key_flag=0;/定義有鍵按下的標志#include reg52.h#include user.h#

23、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,TempBuffer0);LCD_Print(0,1,Tem

24、pBuffer1);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= P21;sbit LcdEn = P22;s

25、fr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口void lcd_delay(unsigned char t) unsigned char i,j;for(i=0;it;i+)for(j=0;j100;j+);/內(nèi)部等待函數(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_SCREEN0x01 / 清屏#define LCD_HOMING 0

26、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_SHOW0x04 /顯示開#define LCD_HIDE0x00 /顯示關(guān)#define LCD_CURSO0x02 /顯示光標#define LCD_NO_CURSOR0x00 /無光標#define LCD_FLASH0x01 /光標閃動#define LCD_NO_FL

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

28、(unsigned char x, unsigned char y)EA=0;if(y=0) LCD_Write(0,0x80|x);if(y=1) LCD_Write(0,0xc0|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)EA=0;GotoXY(x,y);Print(str);EA=1;/hardware.c 硬件程序sbit

29、 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; /0到F的16個鍵植/A .,0,F +/- ,B OKvoid delay(unsigned char a

30、)unsigned char i;while(a-)for(i=100;i0;i-);unsigned char kbscan() /鍵盤掃描unsigned char hang,lie,key;key_flag=0;P1=0x0f;if(P1!=0x0f)delay(10);if(P1!=0x0f)alarm=1;delay_20ms(3);alarm=0;key_flag=1;P1=0x0f;switch(P1&0x0f)case 0x0e:lie=0;break;case 0x0d:lie=1;break;case 0x0b:lie=2;break;case 0x07:lie=3;bre

31、ak;P1=0xf0;switch(P1&0xf0)case 0xe0:hang=0;break;case 0xd0:hang=1;break;case 0xb0:hang=2;break;case 0x70:hang=3;break;P1=0x0f;while(P1!=0x0f);key=tabhanglie;return (key);else return(key_value);void settmper(void)unsigned char i;LCD_Write(0,1);GotoXY(0,0);Print(H_Tmp:);for(i=0;i2;i+)key_flag=0;while(

32、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+0x30);GotoXY(0,1);Print(L_Tmp:);for(i=0;i2;i+)key_flag=0;while(key_flag=0) key_value=kbscan();while(1)if(key_

33、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+0x30);while(1)key_value=kbscan();if(key_value=C) break;TH=get_ht0*10+get_ht1;TL=get_lt0*10+get_lt1;setds18b20(TH,TL,RS); /設(shè)置上下限報警溫度和分辨率LCD_Write(0,0x01);Go

34、toXY(0,0);Print(Set Sucess!);delay_20ms(50);LCD_Write(0,0x01);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_value!=B&key_value!=C&key_value!=D&key_value!=E&key_value!=F&key_value!=.) bre

35、ak;else key_value=kbscan();get_tmi=key_value;LCD_Write(1,key_value+0x30);while(1)key_value=kbscan();if(key_value=B) break;user_temper=get_tm0*10+get_tm1;LCD_Write(0,0x01);GotoXY(0,0);Print(Set Sucess!);delay_20ms(50);LCD_Write(0,0x01);void key_command(unsigned char key_value)switch (key_value)case C:settmper();break;case B:setusertmper();break;default:break;/ DS18B20程序sbit DQ = P26;#include#define warnning 0xecvoid delay_18B20(unsigned int i)while(i-);/*ds18b20初始化函數(shù)*/void In

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論