課程設(shè)計--基于單片機的太陽能熱水器的設(shè)計_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于單片機的太陽能熱水器的設(shè)計</p><p><b>  摘要</b></p><p>  太陽能熱水器以其諸多的優(yōu)點受到人們的歡迎。本文結(jié)合實際太陽能熱水器的具體應(yīng)用,在介紹太陽能、傳感器、單片機的特點基礎(chǔ)上,詳細描述了太陽能熱水器的工作原理和設(shè)計方案。這里根據(jù)太陽能熱水器對控制器的要求與特點,提出了一種基于DS12887的太陽能熱水器智能控

2、制器的設(shè)計方法,給出了系統(tǒng)硬件設(shè)計及軟件實現(xiàn)方法。</p><p>  全文分三大部分。第一部分包括第一章,了解太陽能的利用和前景發(fā)展?fàn)顩r。第二部分包括第二章,描述太陽能系統(tǒng)組成及工作原理。第三部分包括第三、四章硬件設(shè)計及電路原理和軟件設(shè)計,分別介紹了傳感器的特點及應(yīng)用、一般的太陽能熱水器及循環(huán)系統(tǒng)、單片機發(fā)展和原理,這也是此款太陽能熱水器的理論基礎(chǔ)和必要前提。</p><p>  關(guān)鍵詞

3、: 太陽能熱水器;傳感器; 模糊控制; 實時時鐘;單片機 </p><p>  Design of intelligent controller for Solar Water Heater Abstract</p><p>  Solar Water Heater is popular with its pretty benefits, Based on author’s real ex

4、perience on Solar Water Heater design, this article describes the working theory of this solar water hearer after introducing the characters of solar、sensor、Single Chip Microcomputer(SCM).According to the request and cha

5、racteristic of Solar Water heater for the controller. Providing a design of Intelligent Con- troller for Solar Water heater based on DS12887. Sum up a design way of the system’s hardware and software</p><p>

6、  This article is divided into 3 parts. Part One is Chapter 1,including the use and perspective of solar energy. Part Two, including Chapter 2, describing the including and the theory of this solar water heater. Part thr

7、ee, including Chapter 3,Chapter 4: the design of hardware and software、the theory of the circuit. Separately introducing the characters and use of transducer, common solar water heater and cycle system, the development a

8、nd theory of Single Chip Microcomputer(SCM),which are the basi</p><p>  [Key Words]: Solar Water Heater、Sensor、Vague control、 Real clock、Single Chip Microcomputer(SCM).</p><p>  一、方案論證與比較

9、 </p><p>  根據(jù)題目的要求,我們提出了以下兩種方案:</p><p>  方案1:以單片機AT89S52核心。采用熱敏電阻來采集溫度,經(jīng)A/D采樣芯片ADC0804將其轉(zhuǎn)換成數(shù)字信號并通過單片機處理后去控制,此方案中熱敏電阻線性度不好,精度不高,而且外圍電路比較復(fù)雜。<

10、/p><p>  方案2:以單片機AT89S52核心,采用經(jīng)常用到的并有很高精度的集成溫度傳感器DS18B20??芍苯幼x出溫度,并且通過軟件編程能實現(xiàn)各種控制算法使系統(tǒng)還具有控制精度高的特點。省去A/D采樣芯片,簡化了外圍電路,性價比高。</p><p>  經(jīng)過分析論證明,從方案的可行性,測量溫度的精度,制作成本,我們采用了第2種方案。</p><p><b&g

11、t;  二、硬件選擇:</b></p><p>  為了方便制作和調(diào)試,我們選擇AT89S52的DIP封裝形式。P0、P2口作為LED七段數(shù)碼管的驅(qū)動,P1口作為各種信號燈的驅(qū)動。</p><p>  電源由220V交流電經(jīng)變壓器變壓輸出,或干電池直接供給AT89S52和整個系統(tǒng)。</p><p>  數(shù)碼管采用四位一體7段共陰數(shù)碼管,用鎖存器控制位選和

12、段選,使其動態(tài)顯示實時溫度。</p><p>  降溫模塊采用小型電腦散熱風(fēng)扇,由直流5V供電,通過繼電器控制工作,加熱模塊采用500w熱水棒。</p><p>  三、主要元件功能簡介:</p><p>  1、AT89S52簡介</p><p>  AT89S52是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4k Bytes ISP(I

13、n-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-52指令系統(tǒng)及80C52引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。     AT89S52具有如下特點:40個引腳,4k

14、 Bytes Flash片內(nèi)程序存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)有時鐘振蕩器。</p><p>  2、DS18B20簡介:</p><p>  DS18B20數(shù)字溫度計是DALLAS公司生產(chǎn)的1-Wire,即單總線器件

15、,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。a) DS18B20產(chǎn)品的特點 ?。?)、只要求一個端口即可實現(xiàn)通信?! 。?)、在DS18B20中的每個器件上都有獨一無二的序列號?! 。?)、實際應(yīng)用中不需要外部任何元器件即可實現(xiàn)測溫?! 。?)、測量溫度范圍在-55℃到+125℃之間?! 。?)、數(shù)字溫度計的分辨率用戶可以從9位到12位選擇。

16、  (6)、內(nèi)部有溫度上、下限告警設(shè)置。</p><p>  b)DS18B20的使用方法  由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。 由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序

17、要求。DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。DS18B20的復(fù)位時序</p><p>  四、電路功能模塊及設(shè)計<

18、/p><p><b>  1.各模塊說明</b></p><p><b>  2.軟件流程圖</b></p><p>  電路實現(xiàn)原理:本溫度控制電路,用AT89S52作為溫度測試控制系統(tǒng)設(shè)計的核心器件,用數(shù)字溫度傳感器DS18B20實現(xiàn)溫度的測量,用數(shù)碼管顯示對應(yīng)的溫度。通過指示燈和報警器完成溫度上下限的報警指示功能,并通過

19、對電風(fēng)扇和電熱絲的操作,使其恢復(fù)到要求的范圍內(nèi)。</p><p><b>  3.各模塊電路設(shè)計</b></p><p><b>  1)電源電路設(shè)計</b></p><p>  把220v交流電經(jīng)充電器轉(zhuǎn)變?yōu)?v的直流電,通過USB接口輸入,供單片機使用。</p><p>  把4節(jié)電壓為1.5V

20、的5號干電串聯(lián)成電池組直接向單片機供電。</p><p><b>  2)晶振電路設(shè)計</b></p><p><b>  3)測溫電路設(shè)計</b></p><p>  測溫電路比較簡單,只要對DS18B20供電,在數(shù)據(jù)輸出端加上一個10K的上拉電阻便可。</p><p>  4)LED顯示模塊電路

21、設(shè)計</p><p>  利用P0口作為數(shù)碼管的段選端,P2口作為位選端,采用鎖存器進行數(shù)據(jù)鎖存,因為P0口的特殊性,所以要接上拉電阻。</p><p>  5)指示燈模塊電路設(shè)計</p><p>  LED選用直徑為5mm的紅色LED,本系統(tǒng)中,四個LED在不同的溫度區(qū)間內(nèi)工作狀態(tài)不同。</p><p>  6)功率模塊電路設(shè)計</p

22、><p>  制冷模塊使用一個工作電壓為5V的直流小風(fēng)扇,通過控制繼電器的通斷即可實現(xiàn)對風(fēng)扇的控制。加熱模塊使用220V加熱棒,其電路與制冷模塊稍有同。</p><p>  7)蜂鳴報警電路設(shè)計</p><p>  蜂鳴器通過一個三極管來驅(qū)動,這里選用三極管PNP 9012。在不同的溫度區(qū)間內(nèi),蜂鳴器工作狀態(tài)不同,電路圖如下:</p><p> 

23、 8)整體電路設(shè)計 </p><p>  基于protuse的仿真電路</p><p>  五、水溫控制系統(tǒng)使用說明書</p><p>  本作品是根據(jù)現(xiàn)實生活中的實際需要設(shè)計成的,具有眾多優(yōu)點:</p><p>  1、采用單片機(AT89S52)主控,升級容易,響應(yīng)迅速,控制精確。</p><p>  2,

24、作品在靜態(tài)時能很好地控制水溫,使其在設(shè)定溫度正負0.5度的范圍內(nèi)。</p><p>  3、本作品不僅具有加熱功能,還具有制冷的功能,制冷時可以調(diào)節(jié)速風(fēng)扇轉(zhuǎn)速。</p><p>  4、帶4位LED顯示屏,以數(shù)字形式顯示現(xiàn)在所測得的溫度。</p><p>  5、具有超溫報警功能并LED顯示888的功能。</p><p>  6、可采用干電池

25、或220V交流電作為系統(tǒng)的電源。</p><p>  7、各模塊可隨時拆卸,隨時組裝。</p><p>  8、外殼結(jié)實耐用,制作精良。</p><p>  六、主要技術(shù)參數(shù)及元件清單</p><p><b>  1、技術(shù)參數(shù)</b></p><p>  電源電壓: 交流220V±10%

26、 驅(qū)動電熱棒功率:500W</p><p>  測溫范圍: 0——100度 超調(diào)量:《1度</p><p>  2、元件清單列表 </p><p><b>  七、參考文獻</b></p><p>  [ 1 ] 劉福才、 劉豐、劉立偉 AVR單片機在太陽能熱水器智

27、能控制器中的應(yīng)用。微計算機信息, 1999, 4。</p><p>  [ 2 ] 王長胤、 文 軍 單片單板機原理及應(yīng)用[M ]。 武漢:武漢大學(xué)出版社, 1993。</p><p>  [ 3 ] 向奇汝 多功能溫度控制器[J ] 自動化與儀器儀表,1999 </p><p>  [ 4 ] Tom Fox Build the Intelli

28、gent Thermometer [ J ]。Computer & Electronics。 January, 1983。</p><p>  [4] 何立民 單片機中、高級教程 北京航空航天出版社 1999</p><p>  [5] 郭廷瑋 太陽能利用和前景 科學(xué)普及出版社 1986</p><p>  [6]萬福

29、君、潘松峰 單片機原理系統(tǒng)設(shè)計與應(yīng)用</p><p><b>  八、結(jié)束語</b></p><p>  通過本項目的制作,使我加深了對《單片機原理及系統(tǒng)設(shè)計》這門課程的理解,初步學(xué)會了簡單自動控制系統(tǒng)的設(shè)計與制作。</p><p>  電子設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際

30、工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的。</p><p>  回顧起此次單片機課程設(shè)計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整兩星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很

31、多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說三極管PNP管腳不懂怎么

32、放置,不懂分得二極管的正負極,對單片機匯編語言掌握得不好……通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。</p><p>  這次電子設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在指導(dǎo)老師的辛勤指導(dǎo)下,終于游逆而解。</p><p><b>  九、附錄</b></p><p><b>  C語言源程序如下:<

33、/b></p><p>  #include<reg52.h></p><p>  #include<stdio.h></p><p>  #define uchar unsigned char</p><p>  #define unit unsigned int</p><p>  s

34、bit ds=P2^2;</p><p>  sbit dula=P2^6;</p><p>  sbit wela=P2^7;</p><p>  sbit beep=P2^3;</p><p>  sbit jdq1=P2^0;</p><p>  sbit jdq2=P2^1;</p><p&

35、gt;  unit temp;</p><p>  float f_temp;</p><p>  unit warn_12=250;</p><p>  unit warn_11=270;</p><p>  unit warn_h1=300;</p><p>  unit warn_h2=320;</p>

36、;<p>  sbit led0=P1^0;</p><p>  sbit led1=P1^1;</p><p>  sbit led2=P1^2;</p><p>  sbit led3=P1^3;</p><p>  unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0

37、x6d,0x7d,</p><p>  0x07,0x7f,0x6f,</p><p>  0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,</p><p>  0x87,0xff,0xef};</p><p>  void delay(unit z) </p><p><b>  {&

38、lt;/b></p><p><b>  unit x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void ds

39、reset(void) </p><p><b>  {</b></p><p><b>  unit i;</b></p><p><b>  ds=0;</b></p><p><b>  i=103;</b></p><p>

40、;  while(i>0)i--;</p><p><b>  ds=1;</b></p><p><b>  i=4;</b></p><p>  while(i>0)i--;</p><p><b>  }</b></p><p>  b

41、it tempreadbit(void)</p><p><b>  {</b></p><p><b>  unit i;</b></p><p><b>  bit dat;</b></p><p><b>  ds=0;i++;</b></p&

42、gt;<p>  ds=1;i++;i++;</p><p><b>  dat=ds;</b></p><p><b>  i=8;</b></p><p>  while(i>0)i--;</p><p>  return(dat);</p><p>

43、<b>  }</b></p><p>  uchar tempread(void)//讀一個字節(jié)數(shù)據(jù)函數(shù)</p><p><b>  {</b></p><p>  uchar i,j,dat;</p><p><b>  dat=0;</b></p><

44、;p>  for(i=1;i<=8;i++)</p><p><b>  {</b></p><p>  j=tempreadbit();</p><p>  dat=(j<<7)|(dat>>1);</p><p><b>  }</b></p>

45、<p>  return(dat);</p><p><b>  }</b></p><p>  void tempwritebyte(uchar dat)</p><p><b>  {</b></p><p><b>  unit i;</b></p>

46、<p><b>  uchar j;</b></p><p>  bit testb;</p><p>  for(j=1;j<=8;j++)</p><p><b>  {</b></p><p>  testb=dat&0x01;</p><p&g

47、t;  dat=dat>>1;</p><p><b>  if(testb)</b></p><p><b>  {</b></p><p><b>  ds=0;</b></p><p><b>  i++;i++;</b></p&g

48、t;<p><b>  ds=1;</b></p><p><b>  i=8;</b></p><p>  while(i>0)i--;</p><p><b>  }</b></p><p><b>  else</b></p

49、><p><b>  {</b></p><p><b>  ds=0;</b></p><p>  i=8;while(i>0)i--;</p><p><b>  ds=1;</b></p><p><b>  i++;i++;</

50、b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void tempchange(void)</p><p><b>  {</b>

51、;</p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc);</p><p>  tempwritebyte(0x44);</p><p><b>  }</b></p

52、><p>  unit get_temp()</p><p><b>  {</b></p><p>  uchar a,b;</p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempw

53、ritebyte(0xcc);</p><p>  tempwritebyte(0xbe);</p><p>  a=tempread();</p><p>  b=tempread();</p><p><b>  temp=b;</b></p><p><b>  temp<&

54、lt;=8;</b></p><p>  temp=temp|a;</p><p>  f_temp=temp*0.0625;</p><p>  temp=f_temp*10+0.5;</p><p>  f_temp=f_temp+0.05;</p><p>  return temp;</p&g

55、t;<p><b>  }</b></p><p>  void dis_temp(unit t)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p><b>  i=t/100;</b&g

56、t;</p><p><b>  dula=1;</b></p><p>  P0=table[i];</p><p><b>  dula=0;</b></p><p><b>  wela=1;</b></p><p><b>  P0=0

57、xfe;</b></p><p><b>  wela=0;</b></p><p>  delay(1); </p><p>  i=t%100/10;</p><p><b>  dula=1;</b></p><p>  P0=table[i+10];&l

58、t;/p><p><b>  dula=0;</b></p><p><b>  wela=1;</b></p><p><b>  P0=0xfd;</b></p><p><b>  wela=0;</b></p><p><

59、b>  delay(1);</b></p><p>  i=t%100%10;</p><p><b>  dula=1;</b></p><p>  P0=table[i];</p><p><b>  dula=0;</b></p><p><b&

60、gt;  wela=1;</b></p><p><b>  P0=0xfb;</b></p><p><b>  wela=0;</b></p><p><b>  delay(1);</b></p><p><b>  }</b></

61、p><p>  void warn(unit s,uchar led)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p><b>  i=s;</b></p><p><b>  beep

62、=0;</b></p><p>  P1=~(led);</p><p>  while(i--)</p><p><b>  {</b></p><p>  dis_temp(get_temp());</p><p><b>  }</b></p>

63、<p><b>  beep=1;</b></p><p><b>  P1=0xff;</b></p><p><b>  i=s;</b></p><p>  while(i--)</p><p><b>  {</b></p>

64、<p>  dis_temp(get_temp());</p><p><b>  }</b></p><p><b>  }</b></p><p>  void deal(unit t)</p><p><b>  {</b></p><p

65、><b>  uchar i;</b></p><p>  if((t>warn_12)&&(t<=warn_11))</p><p><b>  {</b></p><p>  warn(40,0x01);</p><p><b>  jdq1=0;&l

66、t;/b></p><p><b>  jdq2=1;</b></p><p><b>  }</b></p><p>  else if(t<=warn_12)</p><p><b>  {</b></p><p>  warn(10,0

67、x03);</p><p><b>  jdq1=0;</b></p><p><b>  jdq2=1;</b></p><p><b>  } </b></p><p>  else if((t<warn_h2)&&(t>=warn_h1))&l

68、t;/p><p><b>  {</b></p><p>  warn(40,0x04);</p><p><b>  jdq1=1;</b></p><p><b>  jdq2=1;</b></p><p><b>  }</b>&

69、lt;/p><p>  else if(t>=warn_h2)</p><p><b>  {</b></p><p>  warn(10,0x0c);</p><p><b>  jdq2=0;</b></p><p><b>  jdq1=1;</b&g

70、t;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  i=40;</b></p><p><b>  jdq1=0;

71、</b></p><p><b>  jdq2=1;</b></p><p>  while(i--)</p><p><b>  {</b></p><p>  dis_temp(get_temp());</p><p><b>  }</b&g

72、t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  uchar buff[4],i;</p><

73、p><b>  dula=0;</b></p><p><b>  wela=0;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  tempchange();</p>

74、;<p>  for(i=10;i>0;i--)</p><p><b>  {</b></p><p>  dis_temp(get_temp());</p><p><b>  }</b></p><p>  deal(temp);</p><p> 

75、 sprintf(buff,"%f",f_temp);</p><p>  for(i=10;i>0;i--)</p><p><b>  {</b></p><p>  dis_temp(get_temp());</p><p><b>  }</b></p>

76、<p>  for(i=10;i>0;i--)</p><p><b>  {</b></p><p>  dis_temp(get_temp());</p><p><b>  }</b></p><p><b>  }</b></p>&l

溫馨提示

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

最新文檔

評論

0/150

提交評論