電子系統(tǒng)課程設(shè)計(jì)--- 溫室大棚溫濕度控制系統(tǒng)的的設(shè)計(jì)_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  電子系統(tǒng)課程設(shè)計(jì)</b></p><p>  題 目 溫室大棚溫濕度控制系統(tǒng)的的設(shè)計(jì)</p><p>  授課教師 </p><p>  學(xué)生姓名 </p><p>  學(xué)

2、號(hào) </p><p>  專 業(yè) 電子信息科學(xué)與技術(shù) </p><p>  教學(xué)單位 </p><p>  完成時(shí)間 2012年5月3日</p><p><b>  摘 要:</b></p>

3、<p>  本系統(tǒng)主要運(yùn)用STC89C52單片機(jī)、DS-18B20 數(shù)字溫度傳感器、繼電器和M4QA045電動(dòng)機(jī)、ULN-2003A集成芯片、濕敏電阻,以及LCD1602顯示器等元器件,設(shè)計(jì)了溫濕度報(bào)警電路、M4QA045電機(jī)驅(qū)動(dòng)電路、電熱器驅(qū)動(dòng)電路,實(shí)現(xiàn)了溫室大棚中溫度和濕度的控制和報(bào)警系統(tǒng),解決了溫室大棚人工控制測(cè)試的溫度及濕度誤差大,且費(fèi)時(shí)費(fèi)力、效率低等問題。該系統(tǒng)運(yùn)行可靠,成本低。系統(tǒng)通過對(duì)溫室內(nèi)的溫度與濕度參量的采

4、集,并根據(jù)獲得參數(shù)實(shí)現(xiàn)對(duì)溫度和濕度的自動(dòng)調(diào)節(jié),達(dá)到了溫室大棚自動(dòng)控制的目的。促進(jìn)了農(nóng)作物的生長(zhǎng),從而提高溫室大棚的產(chǎn)量,帶來很好的經(jīng)濟(jì)效益和社會(huì)效益。</p><p>  關(guān)鍵詞:STC89C52單片機(jī)、DS-18B20 數(shù)字溫度傳感器、ULN-2003A集成芯片、溫室大棚、自動(dòng)控制</p><p><b>  一.設(shè)計(jì)任務(wù)與要求</b></p><

5、;p>  該系統(tǒng)能夠?qū)厥掖笈飪?nèi)的溫濕度進(jìn)行檢測(cè)并顯示當(dāng)前實(shí)際溫濕度,同時(shí)通過與預(yù)設(shè)量比較,對(duì)大棚內(nèi)的溫度進(jìn)行自動(dòng)調(diào)節(jié),如果超過我們預(yù)先設(shè)定的濕度限制,濕度報(bào)警模塊將進(jìn)行報(bào)警,從而實(shí)現(xiàn)了溫室大棚內(nèi)的溫濕度的自動(dòng)控制。</p><p><b>  二.設(shè)計(jì)方案的選擇</b></p><p><b>  1)主控制器模塊</b></p&g

6、t;<p>  方案一:采用凌陽16位單片機(jī)作為控制器,雖自帶10位ADC模塊,處理速度快,但是結(jié)合該設(shè)計(jì)的實(shí)際功能,用該單片機(jī)會(huì)造成較大的功能浪費(fèi),而且該單片機(jī)的價(jià)格也相對(duì)較高,性能不穩(wěn)定。</p><p>  方案二:用51系列單片機(jī)做控制器。它具有優(yōu)異的性能價(jià)格比,集成度高、體積小、可靠性高,控制功能強(qiáng),低電壓,低功耗。</p><p>  綜合考慮,在本課題設(shè)計(jì)的溫室

7、大棚的溫濕度測(cè)控系統(tǒng)中,由于STC89系列單片機(jī)與MCS-51系列單片機(jī)兼容,所以,本系統(tǒng)中選用STC89C52單片機(jī)。</p><p><b>  2)溫度調(diào)節(jié)模塊</b></p><p>  方案一: 由PWM控制溫度調(diào)節(jié)模塊,當(dāng)PWM端輸入高電平時(shí),電流經(jīng)第一個(gè)放大器放大,光耦導(dǎo)通,光耦輸出電流經(jīng)第二個(gè)放大器放大后,使雙向可控硅導(dǎo)通,M4QA045電機(jī)運(yùn)轉(zhuǎn),當(dāng)P

8、WM端輸入低電平時(shí),雙向可控硅控制端輸入電流為0,交流電過零以后,雙向可控硅截止,M4QA045電機(jī)停止運(yùn)轉(zhuǎn)。</p><p>  方案二: 由PWM控制溫度調(diào)節(jié)模塊,當(dāng)PWM端輸入高電平時(shí),電流經(jīng)放大器放大,使常開端閉合,M4QA045電機(jī)運(yùn)轉(zhuǎn),當(dāng)PWM端輸入低電平時(shí),常開端斷開,M4QA045電機(jī)停止運(yùn)轉(zhuǎn)。</p><p>  方案一采用光耦隔離強(qiáng)電,方案二采用繼電器隔離強(qiáng)電,但方案一

9、沒有實(shí)現(xiàn)強(qiáng)電與直流源的隔離,且方案一環(huán)節(jié)復(fù)雜,計(jì)算難度大,過多的環(huán)節(jié)延長(zhǎng)響應(yīng)時(shí)間,從而影響溫度調(diào)整模塊的性能,所以選擇方案二。</p><p><b>  3)加熱器驅(qū)動(dòng)電路</b></p><p>  基于以上溫度調(diào)節(jié)模塊兩個(gè)方案的分析,加熱器驅(qū)動(dòng)電路也同樣選用繼電器隔離,當(dāng)溫度低于18℃時(shí),相應(yīng)引腳輸出高電平,電流經(jīng)過三極管放大,繼電器常開端閉合,電熱器工作,當(dāng)溫

10、度高于23℃時(shí),相應(yīng)引腳輸出低電平,繼電器常開端關(guān)閉,電熱器不工作。</p><p><b>  4)顯示模塊</b></p><p>  方案一:采用數(shù)碼管顯示,需要實(shí)用多個(gè)數(shù)碼管,且占用I/O資源較多。</p><p>  方案二:采用LCD1602液晶作為顯示器件,占用I/O口資源少,顯示內(nèi)容豐富,可以分時(shí)顯示不用的內(nèi)容。</p&g

11、t;<p>  綜合考慮,在本課題設(shè)計(jì)的溫室大棚的溫濕度測(cè)控系統(tǒng)中,選用LCD1602液晶作為顯示器件</p><p><b>  電路設(shè)計(jì)</b></p><p><b>  1.系統(tǒng)整體框圖</b></p><p><b>  圖1 系統(tǒng)整體框圖</b></p><

12、;p>  2.各模塊的電路設(shè)計(jì)</p><p>  1)溫度調(diào)節(jié)模塊設(shè)計(jì)</p><p>  圖2溫度調(diào)節(jié)模塊設(shè)計(jì)電路圖</p><p>  如圖2所示,由PWM控制溫度調(diào)節(jié)模塊,當(dāng)PWM端輸入高電平時(shí),電流經(jīng)Q4放大,常開端5閉合,M4QA045電機(jī)運(yùn)轉(zhuǎn),當(dāng)PWM端輸入低電平時(shí),常開端5斷開,M4QA045電機(jī)停止運(yùn)轉(zhuǎn)。</p><p&g

13、t;<b>  2)電熱器驅(qū)動(dòng)電路</b></p><p>  圖3電熱器驅(qū)動(dòng)電路圖</p><p>  加熱器驅(qū)動(dòng)電路選用繼電器隔離,當(dāng)溫度低于18℃時(shí),相應(yīng)引腳輸出高電平,電流經(jīng)過三極管放大,繼電器常開端閉合,電熱器工作,當(dāng)溫度高于23℃時(shí),相應(yīng)引腳輸出低電平,繼電器常開端關(guān)閉,電熱器不工作。</p><p>  3)濕度調(diào)節(jié)模塊設(shè)計(jì)<

14、;/p><p>  圖4 濕度報(bào)警模塊電路圖</p><p>  如圖4所示,由STC89C52單片機(jī)在BUZZER端輸入信號(hào)控制濕度報(bào)警模塊。當(dāng)濕度大于65%RH或者小于45%RH時(shí),BUZZER端輸入高電平,電流經(jīng)Q3放大,使蜂鳴器工作;當(dāng)濕度處于45%RH和65%RH之間時(shí),BUZZER端輸入低電平,蜂鳴器不工作。</p><p><b>  四.系統(tǒng)程

15、序設(shè)計(jì)</b></p><p>  1.系統(tǒng)整體程序框圖</p><p>  圖5系統(tǒng)整體程序框圖</p><p>  首先,初始化單片機(jī)設(shè)置中斷,定義變量,然后初始化LCD1602顯示模塊,設(shè)置8位格式,2行,5*7矩陣顯示,整體顯示,關(guān)光標(biāo),不閃爍設(shè)定輸入方式,增量不移位,清除屏幕顯示。調(diào)用溫濕度采集程序進(jìn)行數(shù)據(jù)采集,經(jīng)過數(shù)據(jù)轉(zhuǎn)換程序,將十六進(jìn)制轉(zhuǎn)換

16、成十進(jìn)制,將十進(jìn)制數(shù)據(jù)輸出到LCD1602顯示模塊進(jìn)行顯示,根據(jù)溫度調(diào)整電機(jī)轉(zhuǎn)速,根據(jù)濕度判斷是否報(bào)警,最后,進(jìn)行新一輪的溫濕度采集。</p><p><b>  總結(jié)</b></p><p>  以上為畢業(yè)期間所設(shè)計(jì)的溫室大棚控制控制系統(tǒng),它經(jīng)過多次修改和整理,可以滿足設(shè)計(jì)的基本要求。采用STC89C52單片機(jī)、DHT11數(shù)字溫濕度傳感器、LCD1602液晶顯示模塊

17、和M4QA045電機(jī)等器件設(shè)計(jì)溫室大棚控制系統(tǒng),實(shí)現(xiàn)溫濕度采集、英文顯示;溫度自動(dòng)調(diào)節(jié),濕度越限報(bào)警功能。</p><p>  因?yàn)楸救怂接邢?,此設(shè)計(jì)存在一定的問題。譬如系統(tǒng)抗干擾能力差,且沒有實(shí)現(xiàn)自動(dòng)自動(dòng)復(fù)位。由于使用的是單片機(jī)作為核心的控制元件,配合其它器件,使本溫度控制系統(tǒng)具有功能強(qiáng)、性能可靠、電路簡(jiǎn)單、成本低的特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。</p><p>&

18、lt;b>  附 錄</b></p><p>  #include <reg52.h></p><p>  #include <intrins.h></p><p>  #define LCD_DB P2</p><p>  sbit DQ = P1^0;</p><p> 

19、 sbit BUZZER = P1^1;</p><p>  sbit PWM = P1^2;</p><p>  sbit LCD_RS = P1^4;</p><p>  sbit LCD_RW = P1^5;</p><p>  sbit LCD_E = P1^6;</p><p>  sbit HEAT = P

20、1^7;</p><p>  void initial(void);</p><p>  void read_DHT11(void);</p><p>  void LCD_write_command(unsigned char com);</p><p>  void LCD_display_char(unsigned char x, un

21、signed char y, unsigned char dat);</p><p>  unsigned char read_DHT11_char(void);</p><p>  void control_temperature_humidity(void);</p><p>  void delay_xms(unsigned int time_xms);<

22、;/p><p>  void delay_x10us(unsigned int time_x10us);</p><p>  unsigned char stop_system = 0;</p><p>  unsigned char lineOne[] = "TS(0-50): C";</p><p>  unsi

23、gned char lineTwo[] = "HS(20-90): %RH";</p><p>  unsigned int T0_number = 0, T1_number, PWM_width_H;</p><p>  unsigned char temperature_ten, temperature_one, humidity_ten, humidity_o

24、ne;</p><p>  unsigned char temperature_H, temperature_L, humidity_H, humidity_L, checkData;</p><p>  void initial(void)</p><p><b>  {</b></p><p>  unsigned

25、char i, j;</p><p>  TMOD = 0x11;//定時(shí)器0工作方式1,16位計(jì)數(shù)器;定時(shí)器1工作方式1,16位計(jì)數(shù)器</p><p>  TH1 = 0xFC;//定時(shí)器1溢出周期1ms,延時(shí)</p><p>  TH1 = 0x66;</p><p>  TH0 = 0xFC;//定時(shí)器0中斷周期1m

26、s,PWM </p><p>  TL0 = 0x66; </p><p><b>  EA = 1;</b></p><p><b>  ET1 = 1;</b></p><p><b>  ET0= 1;</b></p><p><b

27、>  EX0 = 1;</b></p><p><b>  IT1 = 1;</b></p><p><b>  TR0 = 1;</b></p><p>  LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7</p><p>  LCD_write_

28、command(0x0c);//設(shè)置整體顯示,關(guān)閉光標(biāo),且不閃爍</p><p>  LCD_write_command(0x06);//設(shè)置輸入方式,增量不移位</p><p>  LCD_write_command(0x01);//清屏</p><p>  for (i = 0; i < 16; i++)</p><p>&l

29、t;b>  {</b></p><p>  LCD_display_char(i, 1, lineOne[i]);</p><p><b>  }</b></p><p>  for (j = 0; j < 16; j++)</p><p><b>  {</b></p

30、><p>  LCD_display_char(j, 2, lineTwo[j]);</p><p><b>  }</b></p><p>  LCD_display_char(14, 1, 0xDF);//顯示</p><p><b>  }</b></p><p>  

31、void read_DHT11(void)</p><p><b>  {</b></p><p><b>  DQ = 0;</b></p><p>  delay_xms(18);</p><p><b>  DQ = 1;</b></p><p>

32、  delay_x10us(2);</p><p>  if (DQ == 0)</p><p><b>  {</b></p><p>  while (DQ == 0);</p><p>  while (DQ == 1);</p><p>  humidity_H = read_DHT11_

33、char();</p><p>  humidity_L = read_DHT11_char();</p><p>  temperature_H = read_DHT11_char();</p><p>  temperature_L = read_DHT11_char();</p><p><b>  }</b>&l

34、t;/p><p><b>  }</b></p><p>  unsigned char read_DHT11_char(void)</p><p><b>  {</b></p><p>  unsigned char i, temp_one, temp_two; </p><

35、p>  for (i = 0; i < 8; i++)</p><p><b>  {</b></p><p>  while (DQ == 0);</p><p>  delay_x10us(3);</p><p>  if (DQ == 0)</p><p><b>  

36、{</b></p><p>  temp_one = 0;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  temp_one = 1;<

37、/p><p><b>  }</b></p><p>  temp_two <<= 1;</p><p>  temp_two |= temp_one;</p><p>  while(DQ == 1); </p><p><b>  }</b></p>

38、<p>  return temp_two;</p><p><b>  }</b></p><p>  void LCD_write_command(unsigned char com)</p><p><b>  {</b></p><p>  LCD_DB = com;</

39、p><p>  LCD_RS = 0;</p><p>  LCD_RW = 0;</p><p>  LCD_E = 1;</p><p>  delay_xms(1);</p><p>  LCD_E = 0;</p><p>  delay_xms(5);</p><p&g

40、t;<b>  }</b></p><p>  void LCD_display_char(unsigned char x, unsigned char y, unsigned char dat)</p><p><b>  {</b></p><p>  if (y == 1)</p><p>

41、<b>  {</b></p><p>  LCD_write_command(0x80 + x);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><

42、;p>  LCD_write_command(0xc0 + x);</p><p><b>  }</b></p><p>  LCD_DB = dat;</p><p>  LCD_RS = 1;</p><p>  LCD_RW = 0;</p><p>  LCD_E = 1;<

43、/p><p>  delay_xms(1);</p><p>  LCD_E = 0;</p><p>  delay_xms(5);</p><p><b>  }</b></p><p>  void LCD_display_DHT11(void)</p><p><

44、b>  {</b></p><p>  temperature_ten = temperature_H/ 10 + 0x30;</p><p>  temperature_one = temperature_H % 10 + 0x30;</p><p>  humidity_ten = humidity_H / 10 + 0x30;</p&

45、gt;<p>  humidity_one = humidity_H % 10 + 0x30;</p><p>  LCD_display_char(12, 1, temperature_ten);</p><p>  LCD_display_char(13, 1, temperature_one);</p><p>  LCD_display_cha

46、r(11, 2, humidity_ten);</p><p>  LCD_display_char(12, 2, humidity_one);</p><p><b>  }</b></p><p>  void control_temperature_humidity(void)</p><p><b> 

47、 {</b></p><p>  if (temperature_H > 28) //溫度→轉(zhuǎn)速</p><p><b>  {</b></p><p>  PWM_width_H = 100;</p><p><b>  }</b></p><p>

48、;  else if (temperature_H < 18)</p><p><b>  {</b></p><p>  PWM_width_H = 0;</p><p><b>  HEAT = 1;</b></p><p><b>  }</b></p>

49、<p><b>  else</b></p><p><b>  {</b></p><p>  if (temperature_H >= 23)</p><p><b>  {</b></p><p><b>  HEAT = 0;</b&

50、gt;</p><p><b>  }</b></p><p>  PWM_width_H = (temperature_H - 18) * 10;</p><p><b>  }</b></p><p>  if (humidity_H > 65 || humidity_H < 45)

51、//濕度→蜂鳴</p><p><b>  {</b></p><p>  BUZZER = 1;</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b>&

52、lt;/p><p>  BUZZER = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void delay_xms(unsigned int time_xms)</p><p><b>  {</b&g

53、t;</p><p>  T1_number = 0;</p><p><b>  TR1 = 1;</b></p><p><b>  while (1)</b></p><p><b>  {</b></p><p>  if (time_xms

54、== T1_number)</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

55、  TR1 = 0;</b></p><p><b>  }</b></p><p>  void delay_x10us(unsigned int time_x10us)</p><p><b>  {</b></p><p>  while (time_x10us--)</p&

56、gt;<p><b>  {</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _n

57、op_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b><

58、/p><p><b>  }</b></p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {</b></p><p>  initial();</p><p><

59、;b>  while(1)</b></p><p><b>  {</b></p><p>  delay_xms(2000);</p><p>  read_DHT11();</p><p>  LCD_display_DHT11();</p><p>  control_te

60、mperature_humidity();</p><p><b>  }</b></p><p><b>  }</b></p><p>  void INT_0(void) interrupt 0</p><p><b>  {</b></p><p&

61、gt;  stop_system = 1;</p><p><b>  }</b></p><p>  void Timer_0(void) interrupt 1</p><p><b>  {</b></p><p>  TH0 = 0xFC;//定時(shí)器0中斷周期1ms,PWM</p&

62、gt;<p>  TL0 = 0x66;</p><p>  T0_number++;</p><p>  if (T0_number > 100)</p><p><b>  {</b></p><p>  T0_number = 0;</p><p><b>  

63、}</b></p><p>  else if (T0_number < PWM_width_H)</p><p><b>  {</b></p><p><b>  PWM = 1;</b></p><p><b>  }</b></p>&l

64、t;p><b>  else</b></p><p><b>  {</b></p><p><b>  PWM = 0;</b></p><p><b>  }</b></p><p><b>  }</b></p>

65、;<p>  void Timer_1(void) interrupt 3</p><p><b>  {</b></p><p>  TH1 = 0xFC;//定時(shí)器1溢出周期1ms,延時(shí)</p><p>  TL1 = 0x66;</p><p>  T1_number++;</p>

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論