2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于單片機藍牙PM2.5空氣質(zhì)量檢測設(shè)計報告</p><p>  1、選題背景(含國內(nèi)外相關(guān)研究綜述及評價)與意義</p><p>  粉塵又稱可以入顆粒物,它是能進入呼吸道的,直徑為10um的顆粒物,對人的眼睛、鼻腔、上呼吸道都十分有害。同時這種可吸入粉塵能長驅(qū)進入肺泡且沉積時間長,可導(dǎo)致心肺病、心血管疾病。粉塵做為病菌的載體,一同散入空氣中,極易傳播疾病。生產(chǎn)中許

2、多及其工作環(huán)境對粉塵濃度也有要求,工廠中的很多粉塵攜帶有毒化學(xué)物質(zhì),人們長久呼吸或長久散落皮膚上容易導(dǎo)致癌癥的產(chǎn)生。由此可以看出粉塵對人體健康和生產(chǎn)的巨大危害性,煤礦井下管道作業(yè)、煤炭生產(chǎn)都要產(chǎn)生大量的粉塵,加之煤炭井下通風(fēng)條件較差,在炮采,縱采工作面,煤塵濃度可高達1000mg/m³以上。在此環(huán)境中工作的工人就會吸入這些細微灰塵,粉塵長時間進入人的呼吸系統(tǒng),就會造成大量粉塵在肺泡中沉,引起慢性職業(yè)病,危機人的身體健康。此外粉

3、塵還是煤礦安全生產(chǎn)的重大隱患,我國《煤礦安全規(guī)程》規(guī)定:粉塵中游離的sio2含量>10%時,粉塵濃度不得大于2mg/m³:當粉塵中游離sio2<10%時,粉塵濃度不得大于10mg/m³。因此,必須對煤礦井下粉塵進行實時檢測,及時了解煤礦井下工人的勞動環(huán)境,掌握井下煤塵濃度及變化情況,為安全,防塵,降塵等措施提供必要現(xiàn)場數(shù)據(jù)。</p><p>  因此,空氣質(zhì)量檢測儀意義重大是現(xiàn)代生活中不

4、可缺少的必備品。</p><p><b>  2、國內(nèi)外發(fā)展狀況</b></p><p>  在國內(nèi)大多采用先進的測試技術(shù),有的是β射線原理,其吸收量只與吸收物質(zhì)的重量有關(guān),而與吸收物質(zhì)的物化性質(zhì)無關(guān)完全等同于稱重法,可直接讀粉塵濃度。并且配不同的采樣入口裝置,可實現(xiàn)對總粉塵、可吸入粉塵、呼吸性粉塵進行監(jiān)測。使用稱重法比較,其相關(guān)系數(shù)大于97%,相對偏差小于10%。儀

5、器采用的射線源符合核安全標準,可長期穩(wěn)定工作。</p><p>  袖珍式激光粉塵儀是以激光管為光源,采用前向光散射原理設(shè)計,具有國際先進水平的最新型粉塵儀。該儀器適用于公共場所可吸入顆粒物濃度的快速測定以及環(huán)境保護,勞動衛(wèi)生等方面粉塵濃度檢測、工礦企業(yè)生產(chǎn)現(xiàn)場粉塵濃度的監(jiān)測。</p><p><b>  3、總體方案設(shè)計</b></p><p&g

6、t;  本設(shè)計采用由STC89C52單片機最小系統(tǒng)、GP2Y1010AU粉塵傳感器、ADC0832模數(shù)轉(zhuǎn)換器模塊、LCD1602液晶模塊、電源模塊、溫濕度傳感器HDT11、蜂鳴器報警模塊和按鍵模塊模塊組成。單片機實時通過ADC0832轉(zhuǎn)換芯片采集GP2Y1010AU粉塵傳感器的粉塵的濃度,通過單片機的數(shù)據(jù)轉(zhuǎn)換處理后在液晶屏上顯示空氣中的質(zhì)量,當測量空間中的粉塵濃度大于設(shè)置粉塵濃度時,蜂鳴器和發(fā)光二極管發(fā)出聲光報警。同時檢測室內(nèi)溫濕度傳感

7、器上溫度,濕度的測量值,當溫度濕度的測量值大設(shè)置值上限或者小于設(shè)置值的下限值發(fā)出聲光報警。粉塵的濃度報警值,溫濕度的上下限報警值可以通過按鍵進行設(shè)置。系統(tǒng)總體框圖如圖2-1所示:</p><p>  4、設(shè)計過程中的問題</p><p>  1. 對原理圖的理解不夠充分,導(dǎo)致焊接錯誤難以查找出全部錯誤,最后在同學(xué)的幫助下檢查出錯誤,完成主要的功能。</p><p>

8、  2.電路中的按鍵模塊不太靈敏,在長按時有時無法回到主界面,還有上調(diào)和下調(diào)數(shù)值時好像不能很好的調(diào)節(jié)。</p><p><b>  5、源代碼分析:</b></p><p>  #include"LCD1602.h" //添加LCD1602頭文件</p><p>  #include"dht11.h"

9、 //添加DHT11頭文件</p><p>  #include"adc0832.h"</p><p>  #include<math.h></p><p>  sbit BUZZER = P1^3; //蜂鳴器驅(qū)動端口==P1^3</p><p>  sbit Reduc = P3^2; //按鍵鍵輸

10、入端口==P1^7</p><p>  sbit Add = P3^3; //按鍵加輸入端口==P3^1</p><p>  sbit Mode = P3^4; //按鍵加輸入端口==P3^1</p><p>  sbit LED1=P2^0;</p><p>  sbit LED2=P2^1;</p><p> 

11、 uchar Rx_buf[4],Rxnum=0;</p><p>  uchar T1L=15,T1H=35,R1L=30,R1H=80;</p><p>  void InitUART(void) //這是串口的基本配置,配置他的波特率是9600.這些參數(shù)都是標準的。</p><p><b>  {</b></p>&l

12、t;p>  TMOD = 0x20;</p><p>  SCON = 0x50;</p><p>  TH1 = 0xFD;</p><p>  TL1 = TH1;</p><p>  PCON = 0x00;</p><p><b>  EA = 1;</b></p>&

13、lt;p><b>  ES = 1;</b></p><p><b>  TR1 = 1;</b></p><p><b>  }</b></p><p><b>  /*</b></p><p>  * UART 發(fā)送一字節(jié)</p>

14、<p><b>  */</b></p><p>  void UART_send_byte(char dat)</p><p><b>  {</b></p><p>  SBUF = dat;</p><p>  while (TI == 0);</p><p>

15、;<b>  TI = 0;</b></p><p><b>  }</b></p><p><b>  /*</b></p><p>  * UART 發(fā)送字符串</p><p><b>  */</b></p><p>  vo

16、id UART_send_string(unsigned char *buf)</p><p><b>  {</b></p><p>  while (*buf != '\0')</p><p><b>  {</b></p><p>  UART_send_byte(*buf++

17、);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /************************************************</p><p>  ** 函數(shù)名稱 : void main(void)</p>

18、<p>  ** 函數(shù)功能 : 主函數(shù)</p><p>  ** 輸 入 : 無</p><p>  ** 輸 出 : 無</p><p>  ** 說 明 :</p><p>  ************************************************/</p><p&

19、gt;  void main(void)</p><p><b>  {</b></p><p>  double PM,pm1,pm2;</p><p>  int PMVAL=0,HPM=200,PM_count=0,pm1_count=0;</p><p>  uchar T1_data=0,R1_data=0,T

20、2_data=0,R2_data=0;//溫度、濕度變量</p><p>  uchar shezhi_flag=1,Mode_flag=1,n=1;//設(shè)置變量</p><p>  uchar bueezr_flag=0,count=0,buzzer_time=9;//蜂鳴器報警變量</p><p>  uint Mode_count=0; </p>

21、<p>  uchar disp[16] ={"PM2.5:0000ug/m3 "};</p><p>  uchar disp1[16]= {"T :00C RH:00%"}; </p><p>  uchar Tx_Buf[15];</p><p>  InitUART();//初始化串口

22、 </p><p>  LCD_Init();</p><p>  WriteChar(1,0,16,disp); //在第一行顯示‘內(nèi)容’</p><p>  WriteChar(2,0,16,disp1); //在第二行顯示‘內(nèi)容’</p><p><b>  whil

23、e(1)</b></p><p><b>  {</b></p><p>  T1_data=Read_TRH(0,0);//溫度</p><p>  disp1[3]=T1_data/10+0x30;//十位</p><p>  disp1[4]=T1_data%10+0x30;//個位</p>

24、<p>  R1_data=Read_TRH(1,0);//濕度</p><p>  disp1[13]=R1_data/10+0x30;//十位</p><p>  disp1[14]=R1_data%10+0x30;//個位</p><p>  pm1+=read_data(1);</p><p>  if(++PM_cou

25、nt>=20)</p><p><b>  {</b></p><p>  PM_count=0;</p><p>  pm1=pm1/20;</p><p><b>  pm2+=pm1;</b></p><p><b>  pm1=0;</b>

26、</p><p>  if(++pm1_count>=5)</p><p><b>  {</b></p><p>  pm1_count=0;</p><p><b>  PM=pm2/5;</b></p><p>  PM=PM*50/255;</p>

27、<p><b>  PM-=4;</b></p><p><b>  PM/=5;</b></p><p><b>  PM*=1000;</b></p><p><b>  PMVAL=PM;</b></p><p>  PMVAL+=235

28、;PMVAL=PMVAL/9;</p><p>  if(PMVAL>=9999)PMVAL=9999;</p><p>  WriteCOMDATA(0x86,0);</p><p>  if(PMVAL<0)//PMVAL=0;</p><p>  {WriteCOMDATA(0+0x30,1);PMVAL=abs(PMVA

29、L);}</p><p>  else WriteCOMDATA(PMVAL/1000+0x30,1);</p><p>  WriteCOMDATA(PMVAL/100%10+0x30,1);</p><p>  WriteCOMDATA(PMVAL/10%10+0x30,1);</p><p>  WriteCOMDATA(PMVAL%1

30、0+0x30,1);</p><p>  PM=pm1=pm2=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*調(diào)用報警函數(shù),溫濕度是否在設(shè)定范圍內(nèi)*/</p><p>  //溫度值與報警值比較</p>

31、;<p>  if(T1_data<T1L)</p><p><b>  {</b></p><p>  bueezr_flag=1;//報警標志位置1</p><p><b>  }</b></p><p>  else if(T1_data>T1H)</p>

32、<p><b>  {</b></p><p>  bueezr_flag=1;//報警標志位置1</p><p><b>  } </b></p><p>  //濕度值與報警值比較</p><p>  if(R1_data<R1L)</p><p>&

33、lt;b>  {</b></p><p>  bueezr_flag=1;//報警標志位置1</p><p><b>  }</b></p><p>  else if(R1_data>R1H)</p><p><b>  {</b></p><p>

34、  bueezr_flag=1;//報警標志位置1</p><p><b>  }</b></p><p>  //PM值與報警值比較</p><p>  if(PMVAL>HPM)</p><p><b>  {</b></p><p>  bueezr_flag=

35、1;</p><p><b>  } </b></p><p>  if(T1_data>T1L&&T1_data<T1H && R1_data>R1L&&R1_data<R1H && PMVAL<HPM) </p><p><b> 

36、 {</b></p><p>  bueezr_flag=0;</p><p><b>  BUZZER=1;</b></p><p><b>  }</b></p><p>  /*******蜂鳴器報警********/</p><p>  count++;i

37、f(count>buzzer_time*10)count=buzzer_time+1;</p><p>  if(count%buzzer_time==0 && bueezr_flag)</p><p><b>  {</b></p><p>  BUZZER=~BUZZER;//蜂鳴器取反 發(fā)出聲音提示</p&g

38、t;<p><b>  }</b></p><p>  /*******Mode鍵設(shè)置報警參數(shù)********/ </p><p>  if(Mode==0 && Mode_flag)</p><p><b>  { </b></p><p>  WriteCOMDA

39、TA(0x0F,0);//LCD顯示光標</p><p>  Delay(100);</p><p>  if(Mode==0)</p><p><b>  {</b></p><p><b>  BUZZER=1;</b></p><p>  bueezr_flag=0;&

40、lt;/p><p>  Mode_flag=0;</p><p>  shezhi_flag=1;</p><p><b>  n=1;</b></p><p>  while(1) </p><p>  { </p&

41、gt;<p>  switch(shezhi_flag)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  if(n)</b></p><p><b>  {</b><

42、;/p><p><b>  n=0;</b></p><p>  WriteChar(1,0,16,"T1L:00C T1H:00C");//在第一行顯示內(nèi)容 </p><p>  WriteChar(2,0,16,"R1L:00% R1H:00%");//在第二行顯示內(nèi)容</p>

43、<p>  WriteCOMDATA(0x8D,0);WriteCOMDATA(T1H/10+0x30,1);</p><p>  WriteCOMDATA(0x8E,0);WriteCOMDATA(T1H%10+0x30,1);</p><p>  WriteCOMDATA(0xC4,0);WriteCOMDATA(R1L/10+0x30,1);</p><

44、p>  WriteCOMDATA(0xC5,0);WriteCOMDATA(R1L%10+0x30,1);</p><p>  WriteCOMDATA(0xCD,0);WriteCOMDATA(R1H/10+0x30,1);</p><p>  WriteCOMDATA(0xCE,0);WriteCOMDATA(R1H%10+0x30,1);</p><p>

45、;<b>  }</b></p><p>  WriteCOMDATA(0x84,0);WriteCOMDATA(T1L/10+0x30,1);</p><p>  WriteCOMDATA(0x85,0);WriteCOMDATA(T1L%10+0x30,1);</p><p>  WriteCOMDATA(0x85,0);</p>

46、;<p><b>  break;</b></p><p><b>  case 2:</b></p><p>  WriteCOMDATA(0x8D,0);WriteCOMDATA(T1H/10+0x30,1);</p><p>  WriteCOMDATA(0x8E,0);WriteCOMDATA(T1H

47、%10+0x30,1);</p><p>  WriteCOMDATA(0x8E,0);</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  WriteCOMDATA(0xC4,0);WriteCOMDATA(R1L/10+0x3

48、0,1);</p><p>  WriteCOMDATA(0xC5,0);WriteCOMDATA(R1L%10+0x30,1);</p><p>  WriteCOMDATA(0xC5,0);</p><p><b>  break;</b></p><p><b>  case 4:</b>&l

49、t;/p><p>  WriteCOMDATA(0xCD,0);WriteCOMDATA(R1H/10+0x30,1);</p><p>  WriteCOMDATA(0xCE,0);WriteCOMDATA(R1H%10+0x30,1);</p><p>  WriteCOMDATA(0xCE,0);</p><p><b>  br

50、eak;</b></p><p><b>  case 5:</b></p><p><b>  if(n)</b></p><p><b>  {</b></p><p><b>  n=0;</b></p><p>

51、  WriteChar(1,0,16," PM2.5 SET ");//在第一行顯示內(nèi)容 </p><p>  WriteChar(2,0,16,"HPM2.5: ug/m3");//在第二行顯示內(nèi)容</p><p><b>  }</b></p><p>  Wri

52、teCOMDATA(0xC7,0);</p><p>  WriteCOMDATA(HPM/1000+0x30,1);</p><p>  WriteCOMDATA(HPM/100%10+0x30,1);</p><p>  WriteCOMDATA(HPM/10%10+0x30,1);</p><p>  WriteCOMDATA(HPM%

53、10+0x30,1);</p><p>  WriteCOMDATA(0xCA,0);</p><p>  break;</p><p><b>  }</b></p><p>  Delay(200);</p><p><b>  //加</b></p&g

54、t;<p>  if(Reduc==0)</p><p><b>  {</b></p><p>  Delay(200);</p><p>  //while(Reduc==0); </p><p>  switch(shezhi_flag)</p><p><b>  

55、{ </b></p><p>  case 1:T1L+=1;break;</p><p>  case 2:T1H+=1;break;</p><p>  case 3:R1L+=1;break;</p><p>  case 4:R1H+=1;break;</p><p>  case 5:HPM+=

56、1;break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //減</b></p><p>  if(Add==0)</p><p><b>  {</b><

57、;/p><p>  Delay(200);</p><p>  //while(Add==0);</p><p>  switch(shezhi_flag)</p><p><b>  {</b></p><p>  case 1:T1L-=1;break;</p><p> 

58、 case 2:T1H-=1;break;</p><p>  case 3:R1L-=1;break;</p><p>  case 4:R1H-=1;break;</p><p>  case 5:HPM-=1;break;</p><p><b>  }</b></p><p><

59、b>  }</b></p><p>  //短按切換設(shè)置項目 長按退出設(shè)置頁面</p><p>  if(Mode==0)</p><p><b>  {</b></p><p>  Delay(300);</p><p>  while(Mode==0)</p>

60、<p><b>  {</b></p><p>  Delay(300);</p><p>  Mode_count++;</p><p>  if(Mode_count>6)</p><p><b>  {</b></p><p>  WriteChar

61、(1,0,16,"PM2.5:0000ug/m3 ");//在第一行顯示內(nèi)容</p><p>  WriteCOMDATA(0x86,0);</p><p>  if(PMVAL<0)//PMVAL=0;</p><p>  {WriteCOMDATA(0+0x30,1);PMVAL=abs(PMVAL);}</p><

62、p>  else WriteCOMDATA(PMVAL/1000+0x30,1);</p><p>  WriteCOMDATA(PMVAL/100%10+0x30,1);</p><p>  WriteCOMDATA(PMVAL/10%10+0x30,1);</p><p>  WriteCOMDATA(PMVAL%10+0x30,1);</p>

63、<p>  WriteChar(2,0,16,disp1); //在第二行顯示內(nèi)容</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(Mode_count>6)</p><p><b>  {</b>&

64、lt;/p><p>  Mode_count=0;shezhi_flag=0;</p><p>  //當下限值大于上限值時,蜂鳴器鳴叫1S提示,參數(shù)設(shè)置有誤</p><p>  if(T1L>T1H || R1L>R1H)</p><p><b>  {</b></p><p>  BU

65、ZZER=0;Delay(1000);BUZZER=1;</p><p><b>  }</b></p><p>  //否則退出設(shè)置頁面,返回主頁面</p><p><b>  else </b></p><p><b>  {</b></p><p&

66、gt;  WriteCOMDATA(0x0C,0);//關(guān)閉LCD光標</p><p>  Delay(10);</p><p><b>  n=0;</b></p><p>  break;</p><p><b>  }</b></p><p><b&g

67、t;  }</b></p><p>  else Mode_count=0; </p><p>  shezhi_flag++;</p><p>  if(shezhi_flag>5)shezhi_flag=1;</p><p>  if(shezhi_flag==1 || shezhi_flag==5)n=1;</p

68、><p>  pm1+=read_data(1);</p><p>  if(++PM_count>=20)</p><p><b>  {</b></p><p>  PM_count=0;</p><p>  pm1=pm1/20;</p><p><b>

69、  pm2+=pm1;</b></p><p><b>  pm1=0;</b></p><p>  if(++pm1_count>=15)</p><p><b>  {</b></p><p>  pm1_count=0;</p><p>  PM=pm

70、2/15;</p><p>  PM=PM*50/255;</p><p><b>  PM-=4;</b></p><p><b>  PM/=5;</b></p><p><b>  PM*=1000;</b></p><p><b>  

71、PMVAL=PM;</b></p><p>  PMVAL-=480;PMVAL=PMVAL/3;</p><p>  if(PMVAL>=9999)PMVAL=9999;</p><p>  PM=pm1=pm2=0;</p><p><b>  }</b></p><p>

72、<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

73、  /********LCD1602顯示********/ </p><p>  //WriteChar(1,0,16,disp); //在第一行顯示‘內(nèi)容’</p><p>  WriteChar(2,0,16,disp1); //在第二行顯示‘內(nèi)容’</p><p>  if(Mode_flag==0){Mode_count++;if(Mode_

74、count>20){Mode_count=0;Mode_flag=1;}}</p><p>  Tx_Buf[0]='T';//幀頭</p><p>  Tx_Buf[1]=T1_data/10%10+0x30; //將溫濕度數(shù)據(jù)送往發(fā)送數(shù)組,送給藍牙模塊讓手機APP顯示</p><p>  Tx_Buf[2]=T1_data%10+0x

75、30;</p><p>  Tx_Buf[3]=R1_data/10%10+0x30;</p><p>  Tx_Buf[4]=R1_data%10+0x30;</p><p>  Tx_Buf[5]=PMVAL/1000+0x30; //將溫濕度數(shù)據(jù)送往發(fā)送數(shù)組,送給藍牙模塊讓手機APP顯示</p><p>  Tx_Buf[6]=

76、PMVAL/100%10+0x30;</p><p>  Tx_Buf[7]=PMVAL/10%10+0x30;</p><p>  Tx_Buf[8]=PMVAL%10+0x30;</p><p>  Tx_Buf[9]=0;//結(jié)束符</p><p>  Tx_Buf[10]=0;//結(jié)束符</p><p> 

77、 Tx_Buf[11]=0;//結(jié)束符</p><p>  UART_send_string(Tx_Buf); //串口發(fā)送溫濕度數(shù)據(jù)出去</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****************串口接收中斷函數(shù),

78、接收藍牙模塊的數(shù)據(jù)*********************/</p><p>  void UARTInterrupt(void) interrupt 4</p><p><b>  {</b></p><p>  ES=0;//關(guān)閉中斷</p><p>  if(RI) //接收到數(shù)據(jù)</p>

79、<p><b>  {</b></p><p>  Rx_buf[Rxnum]=SBUF; //接收數(shù)據(jù)進數(shù)組</p><p>  if(Rx_buf[Rxnum]==0x08)</p><p><b>  Rxnum=0;</b></p><p><b>  else<

80、/b></p><p><b>  Rxnum++;</b></p><p>  if(Rx_buf[0]==0x01)//LED1燈</p><p><b>  {</b></p><p>  if(Rx_buf[1]==0x01)//開燈</p><p>  LED

81、1=0;//開燈</p><p><b>  else</b></p><p>  LED1=1;//關(guān)燈</p><p><b>  }</b></p><p>  if(Rx_buf[0]==0x02)//LED2燈</p><p><b>  {</

82、b></p><p>  if(Rx_buf[1]==0x01)//開燈</p><p>  LED2=0;//開燈</p><p><b>  else</b></p><p>  LED2=1;//關(guān)燈</p><p><b>  }</b></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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論