課程設(shè)計--電加熱水溫控制系統(tǒng)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課程名稱: 自動化專業(yè)控制系統(tǒng)課程設(shè)計 </p><p>  課題名稱: 電加熱水溫控制系統(tǒng) </p><p>  系 部: 電氣與信息工程學(xué)院 </p><p>  專業(yè)班級: </p><p>  學(xué)生姓名:

2、 </p><p>  指導(dǎo)教師: </p><p>  完成時間: 2012年12月18日 </p><p>  報告成績: </p><p><b>  目錄<

3、;/b></p><p>  摘要…………………………………………………………………………………..2</p><p>  Abstract…………………………………………………………………...………3</p><p>  第一章 系統(tǒng)設(shè)計…………………………………………………………………4</p><p>  1.1 項目概要 …

4、……………………………………………………………………4</p><p>  1.2 設(shè)計任務(wù)和要求 ………………………………………………………………4</p><p>  第二章 硬件設(shè)計 …………………………………………………………….….5</p><p>  2.1 硬件設(shè)計概要 …………………………………………………………………5</p>&l

5、t;p>  2.2 信息處理模塊 …………………………………………………………………5</p><p>  2.3 溫度采集模塊 …………………………………………………………………6</p><p>  2.3.1 傳感器DS18B20簡介 …………………………………………………….6</p><p>  2.3.2 實驗?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>  實習(xí)總結(jié) ………………………………………………………………………….

8、15</p><p>  致謝 ………………………………………………………………………………..16</p><p>  參考文獻 …………………………………………………………………….……17</p><p>  附錄 …………………………………………………………………………….….18</p><p>  1、原理圖 …………………………

9、……..………………………………….……..18</p><p>  2、源程序 ……………………………….……………………………….…….…..19</p><p>  摘要:在現(xiàn)代工業(yè)生產(chǎn)中,溫度是常用的測量被控因素。本設(shè)計是基于51單片機控制,將DS18b20溫度傳感器實時溫度轉(zhuǎn)化,并通過1602液晶對溫度實行實時顯示,并通過加熱片(PWM波,改變其占空比)加熱與步進電機降溫逐次逼近

10、的方式,將溫度保持在設(shè)定溫度,通過按鍵調(diào)節(jié)溫度報警區(qū)域,實現(xiàn)對溫度在0℃-99℃控制的自動化。實驗結(jié)果表明此結(jié)構(gòu)完全可行,溫度偏差可達0.1℃以內(nèi)。</p><p>  關(guān)鍵字: 單片機;傳感器;溫控;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è)計</b></p><p><b>  1.1 項目概要</b></p><p>  溫度控制系統(tǒng)無論是工業(yè)生

14、產(chǎn)過程,還是日常生活都起著非常重要的作用,過低或過高的溫度環(huán)境不僅是一種資源的浪費,同時也會對機器和工作人員的壽命產(chǎn)生嚴重影響,極有可能造成嚴重的經(jīng)濟財產(chǎn)損失,給生活生產(chǎn)帶來許多利的因素,基于AT89S52的單片機溫度控制系統(tǒng)與傳統(tǒng)的溫度控制相比具有操作方便、價價格便宜、精確度高和開展容易等優(yōu)點,因此市場前景好。</p><p>  1.2設(shè)計任務(wù)和要求:</p><p>  1、采用DS

15、18B20作為溫度傳感器進行溫度檢測。</p><p>  2、對采集溫度進行顯示(顯示溫度分辨率0.1℃);</p><p>  3、采集溫度數(shù)值應(yīng)采用數(shù)字濾波措施,保證顯示數(shù)據(jù)穩(wěn)定。</p><p>  4、設(shè)計相應(yīng)的溫度控制電路,根據(jù)測得的溫度情況對加熱器進行控制,將溫度保持在設(shè)定溫度。</p><p>  5、通過按鍵設(shè)置溫度上下限,

16、超限通過LED、蜂鳴器報警。</p><p><b>  第二章 硬件設(shè)計</b></p><p>  2.1 硬件設(shè)計概要</p><p>  根據(jù)需求,我們將系統(tǒng)分為五個模塊,信息處理模塊,溫度采集模塊、控制調(diào)節(jié)模塊、報警電路模塊,顯示模塊。</p><p>  2.2 信息處理模塊</p><

17、p>  AT89C52是ATMEL公司的以8031核構(gòu)成的8位Flash單片機系列。這個系列單片機的最大特點就是在片內(nèi)含有Flash存儲器,AT89S52單片機是一種低功耗高性能的CMOS8位微控制器,內(nèi)置8KB可在線編程閃存。該器件采用Atmel公司的高密度非易失性存儲技術(shù)生產(chǎn),其指令與工業(yè)標準的80C51指令集兼容。片內(nèi)程序存儲器允許重復(fù)在線編程,允許程序存儲器在系統(tǒng)內(nèi)通過SPI串行口改寫或用同用的非易失性存儲器改寫。通過把通

18、用的8位CPU與可在線下載的Flash集成在一個芯片上,AT89S52便成為一個高效的微型計算機。它的應(yīng)用范圍廣,可用于解決復(fù)雜的控制問題,且成本較低。單片機模塊如圖(1) 所示。</p><p><b>  圖(1)單片機模塊</b></p><p>  2.3 溫度采集模塊</p><p>  2.3.1傳感器DS18b20簡介</p

19、><p>  DALLAS最新單線數(shù)字溫度傳感器DS18b20簡介新的“一線器件”,體積更小、適用電壓更寬、更經(jīng)濟。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS18b20是世界上第一片支持“一線總線”接口溫度傳感器。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新的概念。DS18b20、DS1822“一線總線”數(shù)字化溫度傳感器同DS1820一樣,DS18b20也支持“一線總線”接口,

20、測量溫度范圍為-55℃ ~ +125℃,在-10℃~ +85℃范圍內(nèi),精度為0.5℃。DS18b20的精度較差為2℃?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測量類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~ 5V的電壓范圍,使系統(tǒng)設(shè)計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。DS18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度

21、傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18b20的實驗板原理接線圖如圖(2):</p><p>  圖(2) DS18b20的實驗板接線圖</p><p>  其中:DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)</p><p>  2.3.2實驗?zāi)M電路圖</p><p&g

22、t;  溫度檢測控制模擬電路圖ds18b20原件及其連線如圖(3)溫度此傳感器上顯示的溫度同步顯示到LED顯示器上,并有加溫,減溫按鈕。</p><p>  圖(3)溫度檢測控制模擬電路圖</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>  通過繼電器的開合來控制加熱片電路的通斷,來達到設(shè)溫效果,我們預(yù)設(shè)溫度為25度,當溫度低于25度時,單片機P3.6引腳輸出高電平,繼電器導(dǎo)通,對溫度傳感器加熱,加熱模塊如圖(7)

24、所示。</p><p>  圖(7)加溫控制電路</p><p>  2.4.2溫度上下限調(diào)節(jié)系統(tǒng)</p><p>  通過按鍵控制鍵選著調(diào)節(jié)對象,通過上升下降調(diào)節(jié)值大小,模擬電路圖如圖(78主控電路:我們設(shè)定溫度為0--30度,為表示方便,這里讓,控制開關(guān),升溫開關(guān),降溫開關(guān)分別為,k1,k2,k3,開始顯示的是當前溫度,K1主控開關(guān),用來控制進入的是當前溫度,溫

25、度上限,下限的調(diào)節(jié)界面。按k1,一次進入三個界面。按K2為加1開關(guān),按一下,加1,k3減1開關(guān),按一下,減1.</p><p>  例如:開始時顯示的是當前溫度界面,按下k1進入高溫設(shè)定界面,顯示器上顯示當前溫度和溫度上限,按k2,上限加1,按k3,上限減1,再按k1進入顯現(xiàn)設(shè)定界面,顯示器顯示當前溫度,和溫度下限,按k2,下限加1,按k3,下限減1,再按k1,進入顯示當前溫度界面。如圖(8)</p>

26、<p>  2.4.3 報警電路系統(tǒng)</p><p>  通過led燈的閃爍以及蜂鳴器的鳴叫實現(xiàn)報警,如果溫度超過上限燈D4亮,蜂鳴器鳴叫,低于下限燈D2亮,蜂鳴器鳴叫。常溫D1亮如圖(9)(10)。</p><p>  圖(8)溫度設(shè)定開關(guān)</p><p><b>  圖(9)報警模塊</b></p><p&

27、gt;  圖(10)P3.7接蜂鳴器</p><p><b>  2.5顯示模塊</b></p><p>  通過采集ds18b20的溫度,同步顯示到LED顯示器上,精確到小數(shù)點后第一位。如下圖</p><p><b>  圖(11)顯示電路</b></p><p>  第三章 仿真顯示成果<

28、/p><p>  3.1 運用proteus仿真</p><p>  圖(12)開始啟動時,顯示學(xué)號</p><p>  圖(13)顯示當前溫度</p><p>  圖(14)溫度低于低溫下限,低溫報警燈亮,蜂鳴器鳴叫</p><p>  圖(15)溫度高于溫度上限,高溫報警燈亮,蜂鳴器鳴叫</p><

29、p><b>  實習(xí)總結(jié)</b></p><p>  剛開始接觸到題目,一頭霧水,第一周,我從網(wǎng)上下載了,《基于8051+PROTEUS仿真100實例》這個文檔,從最簡單的點亮一個流水燈,讓數(shù)碼管顯示數(shù)字開始,第一周就做了這些簡單的例子,100例做了20多個。剛開始很慢,仿真模型里的原器件都不會找,編的程序編譯時總出現(xiàn)報警、錯誤。一遇到錯誤我們就慌了神了,所以起步很難。后來在老師和同學(xué)

30、的幫助下,慢慢積累,知道了常見的報警和錯誤的解決方法,編完調(diào)試成功20個例子后,算是對單片機有了一定的基礎(chǔ)。但這時一周已經(jīng)過去了,別的小組已經(jīng)仿真通過,開始實際運行了,而我們這組才開始。</p><p>  第二周開始了,第一天我們沒做設(shè)計,把各個小組的程序,電路圖都拿來看,不懂得就請他們幫忙講解。由于前面有了知識,一些模塊都看得懂,學(xué)得很快了。發(fā)現(xiàn)主要是把各個模塊融合到一起,頭文件寫到最前面,通過函數(shù)的調(diào)用!給

31、單片機接口高低電平,來實現(xiàn)功能。這正好是我們的強項,一星期20個例子的功勞。第二天我們開始自己編程,但是融合的過程中總出現(xiàn)錯誤,要嘛是變量沒定義,要嘛是頭文件重復(fù)!還有一個,報警電路的數(shù)碼管總是不亮,但單片機對應(yīng)的接口有高低電平的變化,實際電路板上也成功,這個問題困擾了我們很久,怎么辦都不亮,當時有想砸電腦的沖動,后來還是解決了,原來,是標號標錯了位置,一點小問題,困擾了我們2天。當解決這個問題時,那心靈的喜悅是這輩子都忘不了的!<

32、;/p><p>  通過兩周的實習(xí),我們從一個小白成長為一個對單片機入了門,并能實現(xiàn)簡單的編程,還能解決實際問題的小人物了!雖然過程很苦,每天對著電腦,就吃飯和上洗手間離開板凳!一直盯著屏幕看!不過2周熬過來了,收獲蠻大的!例如后來我又在我們的程序中加入了降溫程序!溫度高,調(diào)動電動機吹風(fēng)降溫!</p><p>  感覺無論做什么事都要吃得了苦受得了罪,天下沒有什么事是難的,只有懶惰的人,只要用

33、心去做,什么事都能成功!</p><p><b>  致謝</b></p><p>  兩周的實習(xí)中,我遇到了許許多多的困難,但我能走過來,這和我組成員共同研究,共同討論問題的辛勤是分不開的,灰心時我們相互鼓勵,相互打氣,。感謝同組成員。開始接觸單片機,我是一個小白級人物,謝謝把我領(lǐng)入門的同班同學(xué)們,當我有問題請教時,他們會放下手頭的工作,傾心為我解答,程序編譯錯誤時

34、,他們會幫我一起看提示,該錯誤!謝謝同班同學(xué)們!</p><p>  當然,我們實習(xí)時,老師一直陪伴著我們,盡管我沒有問過老師問題,老師也沒有幫我調(diào)試程序,但還是要謝謝劉老師,呂老師,你和我們在一起,無形中給了我們莫大的動力!同時也起到了監(jiān)督我們的作用,使我們不能夠偷懶,不會出現(xiàn)有一組同學(xué)完成了,那么全班都完成了的情況!正由于你們的嚴格的要求,我們這次實習(xí)才能圓滿的完成,同學(xué)們都做出了想要的結(jié)果。</p&g

35、t;<p><b>  參考文獻</b></p><p>  [1] 郭天祥.新概念51單片機C語音教程——入門提高開發(fā)拓展攻略[M].北 京:北京:電子工業(yè)出版社,2009.</p><p>  [2] 韓廣興.電子元器件與實用電路基礎(chǔ)[M].北京:電子工業(yè)出版社,2005.</p><p>  [3] 方大千,朱麗.電子控

36、制系統(tǒng)裝置制作入門[M].北京:國防出版社,2006.</p><p>  [4] 劉向舉,劉麗娜. 基于單片機的智能溫度測控系統(tǒng)的設(shè)計[J]. 齊齊哈爾大 學(xué)學(xué)報(自然科學(xué)版). 2012(03)</p><p>  [5] 黃文力,鄧小磊. DS18B20數(shù)字溫度傳感器接口程序的時序[J]. 儀器儀表 用戶. 2011(06)</p><p>  [6]

37、黃曉林.一種實用型智能恒溫控制系統(tǒng)設(shè)計[J]. 自動化技術(shù)與應(yīng)用. </p><p><b>  2011(11)</b></p><p>  [7] 王文,王直.基于ARM和DS18B20的溫度監(jiān)測系統(tǒng)[J]. 電子設(shè)計工程. 2011(20)</p><p>  [8] 陳錫華,賈磊磊.溫度傳感器DS18B20序列號批量搜索算法[

38、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與單片機連接口</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;//溫度正負標志</p><p>  //*************************lcd1602程序**************************/</p><p>  void delay1ms(uint ms)//延時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 報警程序</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; //點亮D00 和D07</p><p>  delay1ms(10)

50、; //延時310us</p><p>  delay1ms(10); //延時310us</p><p><b>  }</b></p><p><b>  }</b></p><p>  /////////////////////111111111111111111111111111111111

51、1111 報警程序</p><p>  void wr_com(uchar com)//寫指令//</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)//寫數(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)//延時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); //延時</p><p&g

64、t;  DQ = 0; //DQ拉低</p><p>  delay_18B20(100); //精確延時大于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; //給脈沖信號</p><p><b>  dat>>=1;</b></p><p>  DQ = 1; //給脈沖信號</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)/*寫

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);//*跳過讀序列號*/</p><p>  ds1820wr(0x44);//*啟動溫度轉(zhuǎn)換*/</p><p>  ds1820rst(); </p><p>  ds1820wr(0xcc);//*跳過讀序列號*/</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);//溫度值擴大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;//個位數(shù)</p><p>  disdata[3]=tvalue%10+0x30;//小數(shù)位</p>

77、<p>  if(tflag==0)</p><p>  flagdat=0x20;//正溫度不顯示符號</p><p><b>  else</b></p><p>  flagdat=0x2d;//負溫度顯示負號:-</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);//顯示符號位</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]);//顯示個位</p>

81、;<p>  wr_com(0xc4+4);</p><p>  wr_dat(0x2e);//顯示小數(shù)點</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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論