版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課程名稱(chēng): 自動(dòng)化專(zhuān)業(yè)控制系統(tǒng)課程設(shè)計(jì) </p><p> 課題名稱(chēng): 電加熱水溫控制系統(tǒng) </p><p> 系 部: 電氣與信息工程學(xué)院 </p><p> 專(zhuān)業(yè)班級(jí): </p><p> 學(xué)生姓名:
2、 </p><p> 指導(dǎo)教師: </p><p> 完成時(shí)間: 2012年12月18日 </p><p> 報(bào)告成績(jī): </p><p><b> 目錄<
3、;/b></p><p> 摘要…………………………………………………………………………………..2</p><p> Abstract…………………………………………………………………...………3</p><p> 第一章 系統(tǒng)設(shè)計(jì)…………………………………………………………………4</p><p> 1.1 項(xiàng)目概要 …
4、……………………………………………………………………4</p><p> 1.2 設(shè)計(jì)任務(wù)和要求 ………………………………………………………………4</p><p> 第二章 硬件設(shè)計(jì) …………………………………………………………….….5</p><p> 2.1 硬件設(shè)計(jì)概要 …………………………………………………………………5</p>&l
5、t;p> 2.2 信息處理模塊 …………………………………………………………………5</p><p> 2.3 溫度采集模塊 …………………………………………………………………6</p><p> 2.3.1 傳感器DS18B20簡(jiǎn)介 …………………………………………………….6</p><p> 2.3.2 實(shí)驗(yàn)?zāi)M電路圖 …………………………………
6、……………………….6</p><p> 2.3.3 程序流程圖 ……………………………………………………………….7</p><p> 2.4 控制調(diào)節(jié)模塊 …………………………………………………………………9</p><p> 2.4.1 升溫調(diào)節(jié)系統(tǒng) ………………………………………………………...….10</p><p> 2
7、.4.2 溫度上下限調(diào)節(jié)系統(tǒng) ……………………………………………..….….10</p><p> 2.5 顯示模塊 …………………………………………………………………...…12</p><p> 第三章 仿真顯示成果 …………………………………………………...……13</p><p> 實(shí)習(xí)總結(jié) ………………………………………………………………………….
8、15</p><p> 致謝 ………………………………………………………………………………..16</p><p> 參考文獻(xiàn) …………………………………………………………………….……17</p><p> 附錄 …………………………………………………………………………….….18</p><p> 1、原理圖 …………………………
9、……..………………………………….……..18</p><p> 2、源程序 ……………………………….……………………………….…….…..19</p><p> 摘要:在現(xiàn)代工業(yè)生產(chǎn)中,溫度是常用的測(cè)量被控因素。本設(shè)計(jì)是基于51單片機(jī)控制,將DS18b20溫度傳感器實(shí)時(shí)溫度轉(zhuǎn)化,并通過(guò)1602液晶對(duì)溫度實(shí)行實(shí)時(shí)顯示,并通過(guò)加熱片(PWM波,改變其占空比)加熱與步進(jìn)電機(jī)降溫逐次逼近
10、的方式,將溫度保持在設(shè)定溫度,通過(guò)按鍵調(diào)節(jié)溫度報(bào)警區(qū)域,實(shí)現(xiàn)對(duì)溫度在0℃-99℃控制的自動(dòng)化。實(shí)驗(yàn)結(jié)果表明此結(jié)構(gòu)完全可行,溫度偏差可達(dá)0.1℃以?xún)?nèi)。</p><p> 關(guān)鍵字: 單片機(jī);傳感器;溫控;DS18b20</p><p> Abstract: In modern industrial production, the temperature is commonly measu
11、red controlled factors.The design is based on the 51 SCM control, the DS18b20 temperature sensor real time temperature transformation, and through the 1602 LCD on the temperature of the real-time display, and by heating
12、the sheet (PWM wave, changing its duty cycle) heating and stepper motor cooling successive approximation approach, keeping the temperature at the set temperature, through the buttons adjust temperature a</p><p
13、> Key word: monolithic integrated circuit ; Sensors; Temperature control; DS18b20</p><p><b> 第一章 系統(tǒng)設(shè)計(jì)</b></p><p><b> 1.1 項(xiàng)目概要</b></p><p> 溫度控制系統(tǒng)無(wú)論是工業(yè)生
14、產(chǎn)過(guò)程,還是日常生活都起著非常重要的作用,過(guò)低或過(guò)高的溫度環(huán)境不僅是一種資源的浪費(fèi),同時(shí)也會(huì)對(duì)機(jī)器和工作人員的壽命產(chǎn)生嚴(yán)重影響,極有可能造成嚴(yán)重的經(jīng)濟(jì)財(cái)產(chǎn)損失,給生活生產(chǎn)帶來(lái)許多利的因素,基于AT89S52的單片機(jī)溫度控制系統(tǒng)與傳統(tǒng)的溫度控制相比具有操作方便、價(jià)價(jià)格便宜、精確度高和開(kāi)展容易等優(yōu)點(diǎn),因此市場(chǎng)前景好。</p><p> 1.2設(shè)計(jì)任務(wù)和要求:</p><p> 1、采用DS
15、18B20作為溫度傳感器進(jìn)行溫度檢測(cè)。</p><p> 2、對(duì)采集溫度進(jìn)行顯示(顯示溫度分辨率0.1℃);</p><p> 3、采集溫度數(shù)值應(yīng)采用數(shù)字濾波措施,保證顯示數(shù)據(jù)穩(wěn)定。</p><p> 4、設(shè)計(jì)相應(yīng)的溫度控制電路,根據(jù)測(cè)得的溫度情況對(duì)加熱器進(jìn)行控制,將溫度保持在設(shè)定溫度。</p><p> 5、通過(guò)按鍵設(shè)置溫度上下限,
16、超限通過(guò)LED、蜂鳴器報(bào)警。</p><p><b> 第二章 硬件設(shè)計(jì)</b></p><p> 2.1 硬件設(shè)計(jì)概要</p><p> 根據(jù)需求,我們將系統(tǒng)分為五個(gè)模塊,信息處理模塊,溫度采集模塊、控制調(diào)節(jié)模塊、報(bào)警電路模塊,顯示模塊。</p><p> 2.2 信息處理模塊</p><
17、p> AT89C52是ATMEL公司的以8031核構(gòu)成的8位Flash單片機(jī)系列。這個(gè)系列單片機(jī)的最大特點(diǎn)就是在片內(nèi)含有Flash存儲(chǔ)器,AT89S52單片機(jī)是一種低功耗高性能的CMOS8位微控制器,內(nèi)置8KB可在線(xiàn)編程閃存。該器件采用Atmel公司的高密度非易失性存儲(chǔ)技術(shù)生產(chǎn),其指令與工業(yè)標(biāo)準(zhǔn)的80C51指令集兼容。片內(nèi)程序存儲(chǔ)器允許重復(fù)在線(xiàn)編程,允許程序存儲(chǔ)器在系統(tǒng)內(nèi)通過(guò)SPI串行口改寫(xiě)或用同用的非易失性存儲(chǔ)器改寫(xiě)。通過(guò)把通
18、用的8位CPU與可在線(xiàn)下載的Flash集成在一個(gè)芯片上,AT89S52便成為一個(gè)高效的微型計(jì)算機(jī)。它的應(yīng)用范圍廣,可用于解決復(fù)雜的控制問(wèn)題,且成本較低。單片機(jī)模塊如圖(1) 所示。</p><p><b> 圖(1)單片機(jī)模塊</b></p><p> 2.3 溫度采集模塊</p><p> 2.3.1傳感器DS18b20簡(jiǎn)介</p
19、><p> DALLAS最新單線(xiàn)數(shù)字溫度傳感器DS18b20簡(jiǎn)介新的“一線(xiàn)器件”,體積更小、適用電壓更寬、更經(jīng)濟(jì)。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS18b20是世界上第一片支持“一線(xiàn)總線(xiàn)”接口溫度傳感器。一線(xiàn)總線(xiàn)獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶(hù)可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新的概念。DS18b20、DS1822“一線(xiàn)總線(xiàn)”數(shù)字化溫度傳感器同DS1820一樣,DS18b20也支持“一線(xiàn)總線(xiàn)”接口,
20、測(cè)量溫度范圍為-55℃ ~ +125℃,在-10℃~ +85℃范圍內(nèi),精度為0.5℃。DS18b20的精度較差為2℃?,F(xiàn)場(chǎng)溫度直接以“一線(xiàn)總線(xiàn)”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)量類(lèi)消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~ 5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。DS18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度
21、傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18b20的實(shí)驗(yàn)板原理接線(xiàn)圖如圖(2):</p><p> 圖(2) DS18b20的實(shí)驗(yàn)板接線(xiàn)圖</p><p> 其中:DQ為數(shù)字信號(hào)輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線(xiàn)方式時(shí)接地)</p><p> 2.3.2實(shí)驗(yàn)?zāi)M電路圖</p><p&g
22、t; 溫度檢測(cè)控制模擬電路圖ds18b20原件及其連線(xiàn)如圖(3)溫度此傳感器上顯示的溫度同步顯示到LED顯示器上,并有加溫,減溫按鈕。</p><p> 圖(3)溫度檢測(cè)控制模擬電路圖</p><p> 2.3.3程序流程圖</p><p> 圖(4)主程序流程圖</p><p> 圖(5)初始化子程序流程圖</p>
23、<p> 圖(6)讀按鍵的程序流程圖</p><p><b> 2.4控制調(diào)節(jié)模塊</b></p><p> 2.4.1升溫調(diào)節(jié)系統(tǒng)</p><p> 通過(guò)繼電器的開(kāi)合來(lái)控制加熱片電路的通斷,來(lái)達(dá)到設(shè)溫效果,我們預(yù)設(shè)溫度為25度,當(dāng)溫度低于25度時(shí),單片機(jī)P3.6引腳輸出高電平,繼電器導(dǎo)通,對(duì)溫度傳感器加熱,加熱模塊如圖(7)
24、所示。</p><p> 圖(7)加溫控制電路</p><p> 2.4.2溫度上下限調(diào)節(jié)系統(tǒng)</p><p> 通過(guò)按鍵控制鍵選著調(diào)節(jié)對(duì)象,通過(guò)上升下降調(diào)節(jié)值大小,模擬電路圖如圖(78主控電路:我們?cè)O(shè)定溫度為0--30度,為表示方便,這里讓?zhuān)刂崎_(kāi)關(guān),升溫開(kāi)關(guān),降溫開(kāi)關(guān)分別為,k1,k2,k3,開(kāi)始顯示的是當(dāng)前溫度,K1主控開(kāi)關(guān),用來(lái)控制進(jìn)入的是當(dāng)前溫度,溫
25、度上限,下限的調(diào)節(jié)界面。按k1,一次進(jìn)入三個(gè)界面。按K2為加1開(kāi)關(guān),按一下,加1,k3減1開(kāi)關(guān),按一下,減1.</p><p> 例如:開(kāi)始時(shí)顯示的是當(dāng)前溫度界面,按下k1進(jìn)入高溫設(shè)定界面,顯示器上顯示當(dāng)前溫度和溫度上限,按k2,上限加1,按k3,上限減1,再按k1進(jìn)入顯現(xiàn)設(shè)定界面,顯示器顯示當(dāng)前溫度,和溫度下限,按k2,下限加1,按k3,下限減1,再按k1,進(jìn)入顯示當(dāng)前溫度界面。如圖(8)</p>
26、<p> 2.4.3 報(bào)警電路系統(tǒng)</p><p> 通過(guò)led燈的閃爍以及蜂鳴器的鳴叫實(shí)現(xiàn)報(bào)警,如果溫度超過(guò)上限燈D4亮,蜂鳴器鳴叫,低于下限燈D2亮,蜂鳴器鳴叫。常溫D1亮如圖(9)(10)。</p><p> 圖(8)溫度設(shè)定開(kāi)關(guān)</p><p><b> 圖(9)報(bào)警模塊</b></p><p&
27、gt; 圖(10)P3.7接蜂鳴器</p><p><b> 2.5顯示模塊</b></p><p> 通過(guò)采集ds18b20的溫度,同步顯示到LED顯示器上,精確到小數(shù)點(diǎn)后第一位。如下圖</p><p><b> 圖(11)顯示電路</b></p><p> 第三章 仿真顯示成果<
28、/p><p> 3.1 運(yùn)用proteus仿真</p><p> 圖(12)開(kāi)始啟動(dòng)時(shí),顯示學(xué)號(hào)</p><p> 圖(13)顯示當(dāng)前溫度</p><p> 圖(14)溫度低于低溫下限,低溫報(bào)警燈亮,蜂鳴器鳴叫</p><p> 圖(15)溫度高于溫度上限,高溫報(bào)警燈亮,蜂鳴器鳴叫</p><
29、p><b> 實(shí)習(xí)總結(jié)</b></p><p> 剛開(kāi)始接觸到題目,一頭霧水,第一周,我從網(wǎng)上下載了,《基于8051+PROTEUS仿真100實(shí)例》這個(gè)文檔,從最簡(jiǎn)單的點(diǎn)亮一個(gè)流水燈,讓數(shù)碼管顯示數(shù)字開(kāi)始,第一周就做了這些簡(jiǎn)單的例子,100例做了20多個(gè)。剛開(kāi)始很慢,仿真模型里的原器件都不會(huì)找,編的程序編譯時(shí)總出現(xiàn)報(bào)警、錯(cuò)誤。一遇到錯(cuò)誤我們就慌了神了,所以起步很難。后來(lái)在老師和同學(xué)
30、的幫助下,慢慢積累,知道了常見(jiàn)的報(bào)警和錯(cuò)誤的解決方法,編完調(diào)試成功20個(gè)例子后,算是對(duì)單片機(jī)有了一定的基礎(chǔ)。但這時(shí)一周已經(jīng)過(guò)去了,別的小組已經(jīng)仿真通過(guò),開(kāi)始實(shí)際運(yùn)行了,而我們這組才開(kāi)始。</p><p> 第二周開(kāi)始了,第一天我們沒(méi)做設(shè)計(jì),把各個(gè)小組的程序,電路圖都拿來(lái)看,不懂得就請(qǐng)他們幫忙講解。由于前面有了知識(shí),一些模塊都看得懂,學(xué)得很快了。發(fā)現(xiàn)主要是把各個(gè)模塊融合到一起,頭文件寫(xiě)到最前面,通過(guò)函數(shù)的調(diào)用!給
31、單片機(jī)接口高低電平,來(lái)實(shí)現(xiàn)功能。這正好是我們的強(qiáng)項(xiàng),一星期20個(gè)例子的功勞。第二天我們開(kāi)始自己編程,但是融合的過(guò)程中總出現(xiàn)錯(cuò)誤,要嘛是變量沒(méi)定義,要嘛是頭文件重復(fù)!還有一個(gè),報(bào)警電路的數(shù)碼管總是不亮,但單片機(jī)對(duì)應(yīng)的接口有高低電平的變化,實(shí)際電路板上也成功,這個(gè)問(wèn)題困擾了我們很久,怎么辦都不亮,當(dāng)時(shí)有想砸電腦的沖動(dòng),后來(lái)還是解決了,原來(lái),是標(biāo)號(hào)標(biāo)錯(cuò)了位置,一點(diǎn)小問(wèn)題,困擾了我們2天。當(dāng)解決這個(gè)問(wèn)題時(shí),那心靈的喜悅是這輩子都忘不了的!<
32、;/p><p> 通過(guò)兩周的實(shí)習(xí),我們從一個(gè)小白成長(zhǎng)為一個(gè)對(duì)單片機(jī)入了門(mén),并能實(shí)現(xiàn)簡(jiǎn)單的編程,還能解決實(shí)際問(wèn)題的小人物了!雖然過(guò)程很苦,每天對(duì)著電腦,就吃飯和上洗手間離開(kāi)板凳!一直盯著屏幕看!不過(guò)2周熬過(guò)來(lái)了,收獲蠻大的!例如后來(lái)我又在我們的程序中加入了降溫程序!溫度高,調(diào)動(dòng)電動(dòng)機(jī)吹風(fēng)降溫!</p><p> 感覺(jué)無(wú)論做什么事都要吃得了苦受得了罪,天下沒(méi)有什么事是難的,只有懶惰的人,只要用
33、心去做,什么事都能成功!</p><p><b> 致謝</b></p><p> 兩周的實(shí)習(xí)中,我遇到了許許多多的困難,但我能走過(guò)來(lái),這和我組成員共同研究,共同討論問(wèn)題的辛勤是分不開(kāi)的,灰心時(shí)我們相互鼓勵(lì),相互打氣,。感謝同組成員。開(kāi)始接觸單片機(jī),我是一個(gè)小白級(jí)人物,謝謝把我領(lǐng)入門(mén)的同班同學(xué)們,當(dāng)我有問(wèn)題請(qǐng)教時(shí),他們會(huì)放下手頭的工作,傾心為我解答,程序編譯錯(cuò)誤時(shí)
34、,他們會(huì)幫我一起看提示,該錯(cuò)誤!謝謝同班同學(xué)們!</p><p> 當(dāng)然,我們實(shí)習(xí)時(shí),老師一直陪伴著我們,盡管我沒(méi)有問(wèn)過(guò)老師問(wèn)題,老師也沒(méi)有幫我調(diào)試程序,但還是要謝謝劉老師,呂老師,你和我們?cè)谝黄穑瑹o(wú)形中給了我們莫大的動(dòng)力!同時(shí)也起到了監(jiān)督我們的作用,使我們不能夠偷懶,不會(huì)出現(xiàn)有一組同學(xué)完成了,那么全班都完成了的情況!正由于你們的嚴(yán)格的要求,我們這次實(shí)習(xí)才能圓滿(mǎn)的完成,同學(xué)們都做出了想要的結(jié)果。</p&g
35、t;<p><b> 參考文獻(xiàn)</b></p><p> [1] 郭天祥.新概念51單片機(jī)C語(yǔ)音教程——入門(mén)提高開(kāi)發(fā)拓展攻略[M].北 京:北京:電子工業(yè)出版社,2009.</p><p> [2] 韓廣興.電子元器件與實(shí)用電路基礎(chǔ)[M].北京:電子工業(yè)出版社,2005.</p><p> [3] 方大千,朱麗.電子控
36、制系統(tǒng)裝置制作入門(mén)[M].北京:國(guó)防出版社,2006.</p><p> [4] 劉向舉,劉麗娜. 基于單片機(jī)的智能溫度測(cè)控系統(tǒng)的設(shè)計(jì)[J]. 齊齊哈爾大 學(xué)學(xué)報(bào)(自然科學(xué)版). 2012(03)</p><p> [5] 黃文力,鄧小磊. DS18B20數(shù)字溫度傳感器接口程序的時(shí)序[J]. 儀器儀表 用戶(hù). 2011(06)</p><p> [6]
37、黃曉林.一種實(shí)用型智能恒溫控制系統(tǒng)設(shè)計(jì)[J]. 自動(dòng)化技術(shù)與應(yīng)用. </p><p><b> 2011(11)</b></p><p> [7] 王文,王直.基于ARM和DS18B20的溫度監(jiān)測(cè)系統(tǒng)[J]. 電子設(shè)計(jì)工程. 2011(20)</p><p> [8] 陳錫華,賈磊磊.溫度傳感器DS18B20序列號(hào)批量搜索算法[
38、J]. 單片機(jī)與 嵌入式系統(tǒng)應(yīng)用. 2011(09)</p><p><b> 附錄:</b></p><p> Proteus系統(tǒng)原理圖:</p><p> 圖(16)系統(tǒng)原理圖</p><p><b> 源程序:</b></p><p> #include&l
39、t;reg52.h></p><p> #include <intrins.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit DQ=P3^3;//ds18b20與單片機(jī)連接口</p&g
40、t;<p> sbit RS=P2^0;</p><p> sbit RW=P2^1;</p><p> sbit EN=P2^2;</p><p> sbit keyadd=P1^4;</p><p> sbit keydel=P1^5;</p><p> sbit keyok=P1^6;&
41、lt;/p><p> sbit led_green=P2^3;</p><p> sbit led_yellow=P2^4;</p><p> sbit led_red=P2^5;</p><p> sbit shengwen=P3^6;</p><p> sbit jiangwen=P3^5;</p>
42、;<p> sbit BEEP = P3 ^ 7;</p><p> uchar code str1[]={" Temperature is "};</p><p> uchar code str2[]={""};</p><p> uchar code str3[]={"set_hight
43、emp: "};</p><p> uchar code str4[]={"set_lowtemp: "};</p><p> uchar code str5[]={"studentN0: "};</p><p> uchar code str6[]={"
44、;32209104 "};</p><p> uchar data disdata[5];</p><p> uchar set_hightemp=33,set_lowtemp=0;</p><p> uchar p=0;</p><p> uchar aa[2];</p><p>
45、 uint tvalue;//溫度值</p><p> uchar tflag;//溫度正負(fù)標(biāo)志</p><p> //*************************lcd1602程序**************************/</p><p> void delay1ms(uint ms)//延時(shí)1毫秒</p><p>
46、;<b> {</b></p><p><b> uint i,j;</b></p><p> for(i=0;i<ms;i++)</p><p> for(j=0;j<114;j++);</p><p><b> }</b></p><
47、;p> void delay1s(uint s)</p><p><b> {</b></p><p><b> uint i;</b></p><p> for(i=0;i<s;i++)</p><p> delay1ms(1000);</p><p>
48、;<b> }</b></p><p> //////////////////////1111111111111111111111111111111111111 報(bào)警程序</p><p> void baojing(void)</p><p><b> {</b></p><p> un
49、signed int j;</p><p> for (j = 49; j > 0; j--)//響30ms</p><p><b> {</b></p><p> BEEP = ~BEEP; //輸出頻率800Hz P0 = 0x7E; //點(diǎn)亮D00 和D07</p><p> delay1ms(10)
50、; //延時(shí)310us</p><p> delay1ms(10); //延時(shí)310us</p><p><b> }</b></p><p><b> }</b></p><p> /////////////////////111111111111111111111111111111111
51、1111 報(bào)警程序</p><p> void wr_com(uchar com)//寫(xiě)指令//</p><p><b> { </b></p><p> delay1ms(1);</p><p><b> RS=0;</b></p><p><b>
52、 RW=0;</b></p><p><b> EN=0;</b></p><p> P0=com; //</p><p> delay1ms(1);</p><p><b> EN=1;</b></p><p> delay1ms(1);</p&
53、gt;<p><b> EN=0;</b></p><p><b> }</b></p><p> void wr_dat(uchar dat)//寫(xiě)數(shù)據(jù)//</p><p><b> { </b></p><p> delay1ms(1);</p
54、><p><b> RS=1;</b></p><p><b> RW=0;</b></p><p><b> EN=0;</b></p><p><b> P0=dat; </b></p><p> delay1ms(1);
55、</p><p><b> EN=1;</b></p><p> delay1ms(1);</p><p><b> EN=0;</b></p><p><b> }</b></p><p> void lcd_init()//初始化設(shè)置//&
56、lt;/p><p><b> {</b></p><p> delay1ms(15);</p><p> wr_com(0x38);delay1ms(5);</p><p> wr_com(0x08);delay1ms(5);</p><p> wr_com(0x01);delay1ms(5
57、);</p><p> wr_com(0x06);delay1ms(5);</p><p> wr_com(0x0c);delay1ms(5);</p><p><b> }</b></p><p> void display(uchar *p)//顯示//</p><p><b&g
58、t; {</b></p><p> while(*p!='\0')</p><p><b> {</b></p><p> wr_dat(*p);</p><p><b> p++;</b></p><p> delay1ms(1);&
59、lt;/p><p><b> }</b></p><p> }</p><p> void init_play()//初始化顯示</p><p><b> {</b></p><p> lcd_init();</p><p>
60、 wr_com(0x80);</p><p> display(str5);</p><p> wr_com(0xc0);</p><p> display(str6);</p><p> delay1s(3);</p><p> lcd_init();</p><p> wr_co
61、m(0x80);</p><p> display(str1);</p><p> wr_com(0xc0);</p><p> display(str2);</p><p><b> }</b></p><p> /***************************ds18b20程
62、序****************************/</p><p> void delay_18B20(uint i)//延時(shí)1微秒</p><p><b> {</b></p><p> while(i--);</p><p><b> }</b></p><
63、p> void ds1820rst()/*ds1820復(fù)位*/</p><p><b> { </b></p><p> uchar x=0;</p><p> DQ = 1; //DQ復(fù)位</p><p> delay_18B20(4); //延時(shí)</p><p&g
64、t; DQ = 0; //DQ拉低</p><p> delay_18B20(100); //精確延時(shí)大于480us</p><p> DQ = 1; //拉高</p><p> delay_18B20(40);</p><p><b> }</b></p>&
65、lt;p> uchar ds1820rd()/*讀數(shù)據(jù)*/</p><p><b> { </b></p><p> uchar i=0;</p><p> uchar dat = 0;</p><p> for (i=8;i>0;i--)</p><p><b>
66、 { </b></p><p> DQ = 0; //給脈沖信號(hào)</p><p><b> dat>>=1;</b></p><p> DQ = 1; //給脈沖信號(hào)</p><p><b> if(DQ)</b></p><p> da
67、t|=0x80;</p><p> delay_18B20(10);</p><p><b> }</b></p><p> return(dat);</p><p><b> }</b></p><p> void ds1820wr(uchar wdata)/*寫(xiě)
68、數(shù)據(jù)*/</p><p><b> {</b></p><p> uchar i=0;</p><p> for (i=8; i>0; i--)</p><p><b> { </b></p><p><b> DQ = 0;</b>&l
69、t;/p><p> DQ = wdata&0x01;</p><p> delay_18B20(10);</p><p><b> DQ = 1;</b></p><p> wdata>>=1;</p><p><b> }</b></p>
70、;<p><b> }</b></p><p> read_temp()/*讀取溫度值并轉(zhuǎn)換*/</p><p><b> {</b></p><p> uchar a,b;</p><p> ds1820rst(); </p><p> ds1
71、820wr(0xcc);//*跳過(guò)讀序列號(hào)*/</p><p> ds1820wr(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/</p><p> ds1820rst(); </p><p> ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/</p><p> ds1820wr(0xbe);//*讀取溫度*/</p>&l
72、t;p> a=ds1820rd();</p><p> b=ds1820rd();</p><p><b> tvalue=b;</b></p><p> tvalue<<=8;</p><p> tvalue=tvalue|a;</p><p> if(tvalue
73、<0x0fff)</p><p><b> tflag=0;</b></p><p><b> else</b></p><p><b> {</b></p><p> tvalue=~tvalue+1;</p><p><b>
74、 tflag=1;</b></p><p> } </p><p> tvalue=tvalue*(0.625);//溫度值擴(kuò)大10倍,精確到1位小數(shù)</p><p> return(tvalue);</p><p><b> }</b></p><p&
75、gt; /*******************************************************************/</p><p> void ds1820disp()//溫度值顯示</p><p><b> { </b></p><p> uchar flagdat;</p><p&
76、gt; disdata[0]=tvalue/1000+0x30;//百位數(shù)</p><p> disdata[1]=tvalue%1000/100+0x30;//十位數(shù)</p><p> disdata[2]=tvalue%100/10+0x30;//個(gè)位數(shù)</p><p> disdata[3]=tvalue%10+0x30;//小數(shù)位</p>
77、<p> if(tflag==0)</p><p> flagdat=0x20;//正溫度不顯示符號(hào)</p><p><b> else</b></p><p> flagdat=0x2d;//負(fù)溫度顯示負(fù)號(hào):-</p><p> if(disdata[0]==0x30)</p>&
78、lt;p><b> {</b></p><p> disdata[0]=0x20;//如果百位為0,不顯示</p><p> if(disdata[1]==0x30)</p><p><b> {</b></p><p> disdata[1]=0x20;//如果百位為0,十位為0也
79、不顯示</p><p><b> }</b></p><p><b> }</b></p><p> wr_com(0xc0+4);</p><p> wr_dat(flagdat);//顯示符號(hào)位</p><p> wr_com(0xc1+4);</p>
80、;<p> wr_dat(disdata[0]);//顯示百位</p><p> wr_com(0xc2+4);</p><p> wr_dat(disdata[1]);//顯示十位</p><p> wr_com(0xc3+4);</p><p> wr_dat(disdata[2]);//顯示個(gè)位</p>
81、;<p> wr_com(0xc4+4);</p><p> wr_dat(0x2e);//顯示小數(shù)點(diǎn)</p><p> wr_com(0xc5+4);</p><p> wr_dat(disdata[3]);//顯示小數(shù)位</p><p><b> }</b></p><p&
82、gt; void key_count(uint ok)</p><p><b> {</b></p><p> wr_com(0x80);</p><p> if(ok==1)display(str3);else display(str4);</p><p> wr_com(0x8d);</p&g
83、t;<p> wr_dat(aa[0]);</p><p> wr_com(0x8e);</p><p> wr_dat(aa[1]);</p><p> if(keyadd==0)</p><p><b> {</b></p><p> delay1ms(5);<
84、/p><p> if(keyadd==0)</p><p><b> {</b></p><p> if(ok==1) set_hightemp++; else set_lowtemp++;</p><p> while(!keyadd);</p><p><b> }</
85、b></p><p><b> }</b></p><p> else if(keydel==0)</p><p><b> {</b></p><p> delay1ms(5);</p><p> if(keydel==0)</p><p
86、><b> {</b></p><p> if(ok==1) set_hightemp--; else set_lowtemp--;</p><p> while(!keydel);</p><p><b> }</b></p><p><b> }</b>
87、</p><p><b> }</b></p><p> void keyboard()</p><p><b> { </b></p><p> char ok=0;</p><p> //if(p==0) set_hightemp=tvalue/10,s
88、et_lowtemp=tvalue/10;</p><p> if(keyok==0)</p><p><b> {</b></p><p> delay1ms(5);</p><p> if(keyok==0)</p><p><b> {</b></p&g
89、t;<p><b> ok++;</b></p><p> while(!keyok);</p><p><b> p=1;</b></p><p> while(ok==1)</p><p><b> {</b></p><p>
90、; aa[0]=set_hightemp/10+0x30;</p><p> aa[1]=set_hightemp%10+0x30;</p><p> key_count(1);</p><p> if(keyok==0)</p><p><b> {</b></p><p> del
91、ay1ms(5);</p><p> if(keyok==0)</p><p><b> {</b></p><p><b> ok++;</b></p><p> while(!keyok);</p><p> delay1ms(10);</p>&
92、lt;p> while(ok==2)</p><p><b> {</b></p><p> aa[0]=set_lowtemp/10+0x30;</p><p> aa[1]=set_lowtemp%10+0x30;</p><p> key_count(2);</p><p>
93、 if(keyok==0)</p><p><b> {</b></p><p> delay1ms(5);</p><p> if(keyok==0)</p><p><b> {</b></p><p><b> ok=0;</b><
94、;/p><p> while(!keyok);</p><p> delay1ms(10);</p><p> wr_com(0x80);</p><p> display(str1);</p><p><b> }</b></p><p><b> }&
95、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b
96、></p><p><b> }</b></p><p><b> }</b></p><p> ///////////////////**********************/////////////////////// 升溫程序</p><p> void led_shengw
97、en(void)</p><p><b> {</b></p><p><b> uchar i;</b></p><p> shengwen=0;</p><p> if( tvalue/10<=20) </p><p><b> {</b
98、></p><p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> shengwen=1;</p><p> delay1ms(100);</p><p><b> }</b></p><
99、p><b> }</b></p><p><b> }</b></p><p> //////////////////***********************/////////////////////////升溫程序</p><p> void led_temp()</p><p&
100、gt; {if(tvalue/10 < set_lowtemp)</p><p><b> {</b></p><p> led_red=1;</p><p> led_green=1;</p><p> led_yellow=0;</p><p> delay1ms(10);
101、</p><p> baojing();</p><p><b> }</b></p><p> else if(tvalue/10 > set_hightemp)</p><p><b> {</b></p><p> led_red=0;</p&g
102、t;<p> led_green=1;</p><p> led_yellow=1;</p><p> delay1ms(10);</p><p> baojing();</p><p><b> }</b></p><p> else if((set_lowtemp&l
103、t;(tvalue/10))&&(tvalue/10) <set_hightemp)</p><p><b> {</b></p><p> led_red=1;</p><p> led_green=0;</p><p> led_yellow=1;</p><p>
104、; delay1ms(10);</p><p><b> }</b></p><p><b> }</b></p><p> //********************主程序***********************************//</p><p> void main(
105、)</p><p><b> { </b></p><p><b> P2=0xff;</b></p><p> init_play();//初始化顯示</p><p><b> while(1)</b></p><p><b>
106、 { </b></p><p> read_temp();//讀取溫度</p><p> ds1820disp();//顯示</p><p> keyboard();</p><p> led_temp();</p><p> if( tvalue/10<=20)</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)--電加熱水溫控制系統(tǒng)
- 課程設(shè)計(jì)----水溫控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)水溫控制系統(tǒng)課程設(shè)計(jì)
- 水溫控制系統(tǒng)設(shè)計(jì)電子技術(shù)課程設(shè)計(jì)
- 基于單片機(jī)的水溫控制系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--基于單片機(jī)的水溫控制系統(tǒng)
- 水溫控制系統(tǒng)
- 課程設(shè)計(jì)---電加熱爐計(jì)算機(jī)溫度控制系統(tǒng)
- 水溫控制系統(tǒng)的設(shè)計(jì)
- 自動(dòng)控制原理課程設(shè)計(jì)--水溫控制系統(tǒng)的串聯(lián)校正設(shè)計(jì)
- 課程設(shè)計(jì)(論文)-基于plc的電加熱爐溫度控制系統(tǒng)設(shè)計(jì)
- 水溫控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 電加熱爐控制系統(tǒng)設(shè)計(jì)
- 基于ds18b20的水溫控制系統(tǒng)課程設(shè)計(jì)
- 基于ds18b20的水溫控制系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 恒溫控制系統(tǒng)設(shè)計(jì)
- 水溫控制系統(tǒng)doc
- 水溫控制系統(tǒng)設(shè)計(jì)及應(yīng)用
- 水溫控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 水溫控制系統(tǒng)論文
評(píng)論
0/150
提交評(píng)論