久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2163|回復: 1
打印 上一主題 下一主題
收起左側

激光PM2.5傳感器C51單片機程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:422529 發表于 2018-11-7 18:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
某寶PM2.5激光傳感器,串口通信,LCD1602顯示PM2.5濃度調試通過。

單片機源程序如下:

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. typedef unsigned char  U8;       // ???8????
  5. typedef signed   char  S8;       // ???8????
  6. typedef unsigned int   U16;      // ???16???
  7. typedef signed   int   S16;      // ???16???
  8. typedef unsigned long  U32;      // ???32???
  9. typedef signed   long  S32;      // ???32???
  10. typedef float          F32;      // ??????32?
  11. typedef double         F64;      // ??????64?






  12. uchar Uart_Con=0;
  13. uchar Uart_Change=0;
  14. uint  PM25_Data=0;
  15. uint  PM25_Data_L=0;
  16. uint  PM25_Data_H=0;
  17. uchar PM25_View_Data=0;
  18. uchar PM25_Set=100;
  19. uchar PM25_View_change=0;


  20. uchar num;
  21. uchar buf;
  22. uchar PM25set=205;

  23. //#define   Data_0_time    4
  24. sbit lcdrs=P2^5;
  25. sbit lcdrw=P2^6;
  26. sbit lcden=P2^7;

  27. sbit deng=P1^1;
  28. sbit BEEP=P1^0;
  29. sbit A=P2^0;




  30. uchar table1[]={" PM25= ---ug/m3 "};                                        //        uchar code table[]={" 2016-5-7 sat "};
  31. uchar table2[]={"   PM25_set=200 "};                                                        //        uchar code table1[]={" 00:00:00 "};                                                                                                                                                                                                                                       
  32. uchar PM25,shidu;
  33. uint n;


  34. int i=0;
  35. float v0;

  36. void delay_1ms(uint t)
  37. {
  38.         uint i,j;
  39.         for(i=0;i<t;i++)
  40.                         for(j=0;j<123;j++)
  41.                         {;}
  42.         }

  43. void Delay(U16 j)
  44. {  U8 i;
  45.          for(;j>0;j--)
  46.                   for(i=0;i<27;i++);         
  47. }

  48. void DelayMS(uint x)
  49. {   uchar t;
  50.                 while(x--)
  51.     for(t=0;t<80;t++);
  52. }

  53. void ddelay(uint z)
  54. {
  55.         uint x,y;
  56.         for(x=z;x>0;x--)
  57.            for(y=110;y>0;y--);       
  58. }

  59. void InitUART(void)
  60. {
  61.     TMOD |= 0x20;
  62.     SCON = 0x50;
  63.     TH1 = 0xFD;
  64.     TL1 = TH1;
  65.     PCON = 0x00;
  66.                 TR1 = 1;
  67.                 ES = 1;
  68.     EA = 1;
  69.    
  70.    
  71. }
  72.        
  73. void UARTInterrupt(void) interrupt 4   //pm2.5讀取部分
  74. {
  75.         uchar Uart_Data=0;
  76.         if(RI)
  77.   {
  78.        
  79.                
  80.         RI = 0;
  81.         Uart_Data=SBUF;
  82.                
  83.                         switch(Uart_Con)
  84.                         {
  85.                                 case 0:
  86.                                 {
  87.                                        
  88.                                         if(Uart_Data==0xaa)
  89.                                         {
  90.                                                 Uart_Con++;        A=1;A=1;A=1;A=1;A=1;
  91.                                         }
  92.                                         else
  93.                                         Uart_Con=0;       
  94.                                         break;
  95.                                 }
  96.                                 case 1:
  97.                                 {
  98.                                         if(Uart_Data==0xc0)
  99.                                         Uart_Con++;
  100.                                         else
  101.                                         Uart_Con=0;       
  102.                                         break;
  103.                                 }
  104.                                 case 2:
  105.                                 {
  106.                                         PM25_Data_L=Uart_Data;
  107.                                         Uart_Con++;
  108.                                         break;
  109.                                 }
  110.                                 case 3:
  111.                                 {
  112.                                         PM25_Data_H=Uart_Data;
  113.                                         Uart_Con=0;
  114.                                         break;
  115.                                 }
  116.                                 default:Uart_Con = 0;
  117.                         }
  118.                         A=0;
  119.                 PM25_Data=PM25_Data_H*256+PM25_Data_L;
  120.                 Uart_Change=1;
  121.         }
  122.         else
  123.                 TI = 0;
  124. }

  125. void PM25_disword()
  126. {       
  127.         uchar PM25bai,PM25shi,PM25ge;
  128.         if(Uart_Change==1)
  129.         {
  130.                 Uart_Change=0;
  131.                 PM25bai=PM25_Data/100+0x30;
  132.                 PM25shi=PM25_Data/10%10+0x30;
  133.                 PM25ge=PM25_Data%10+0x30;
  134.                 table1[7]=PM25bai;
  135.                 table1[8]=PM25shi;
  136.                 table1[9]=PM25ge;
  137.                 PM25_View_change=1;
  138.         }
  139. }

  140. void LCD_WriteCom(uchar com)   
  141. {
  142.         lcdrs=0;
  143.         lcdrw=0;
  144.         P0=com;
  145.         ddelay(5);
  146.         lcden=1;
  147.         ddelay(5);
  148.         lcden=0;
  149. }

  150. void LCD_WriteData(uchar dat)     
  151. {
  152.         lcdrs=1;
  153.         lcdrw=0;
  154.         P0=dat;
  155.         ddelay(5);
  156.         lcden=1;
  157.         ddelay(5);
  158.         lcden=0;
  159. }

  160. void Initlcd()               
  161. {
  162.         ddelay(100);
  163.         LCD_WriteCom(0x38);   
  164.         LCD_WriteCom(0x38);  
  165.         LCD_WriteCom(0x38);   
  166.         LCD_WriteCom(0x0c);
  167.         LCD_WriteCom(0x06);      
  168.         LCD_WriteCom(0x01);
  169.         ddelay(100);
  170. }       


  171. void Lcd_write(uchar Adress_Com,uchar *Adress_Data)
  172. {
  173. uchar i;
  174. uchar Data_Word;
  175. LCD_WriteCom(Adress_Com);//寫入字符的顯示位置
  176. for(i=0;i<16;i++)  //寫入字符
  177.   {
  178.    Data_Word=*Adress_Data;
  179.    LCD_WriteData(Data_Word);
  180.    Adress_Data++;
  181.   }

  182. }

  183. void main()
  184. {
  185.         BEEP=0;
  186.         Initlcd();
  187.         InitUART();
  188.         while(1)
  189.         {       
  190.                 PM25_disword();
  191.                 Lcd_write(0x80,table1);
  192.                 Lcd_write(0xc0,table2);
  193.                 if(PM25_Data>=PM25set)
  194.                 {
  195.                         BEEP=1;
  196.                         deng=0;
  197.                         delay_1ms(500);
  198.                         BEEP=0;
  199.                         deng=1;
  200.                         delay_1ms(500);
  201.                 }
  202.                 else
  203.                 {
  204.                         BEEP=0;
  205.                         deng=1;
  206.                         Lcd_write(0x80,table1);
  207.                         Lcd_write(0xc0,table2);
  208.                 }
  209.                        
  210.                
  211.        
  212.         }   
  213.        


  214.                
  215.                
  216. }
復制代碼

所有資料51hei提供下載:
PM25.rar (53.71 KB, 下載次數: 31)


評分

參與人數 1黑幣 +9 收起 理由
kljie1000 + 9

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-11-8 03:15 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲午夜精品 | 日韩a v在线免费观看 | 免费一级毛片 | 国产美女特级嫩嫩嫩bbb片 | 成人av播放 | 久久国产精品无码网站 | 伊人网综合在线观看 | 一区二区三区不卡视频 | 欧美中文字幕一区二区三区亚洲 | 二区在线视频 | 国产在线一区二区 | 欧美亚洲国产一区二区三区 | 国产日韩一区二区三区 | 91超碰在线观看 | 日本福利视频免费观看 | 欧美国产日韩在线 | 精品久久久久国产 | 国产高清视频 | 亚洲一区二区三区免费在线观看 | 欧美福利在线 | 精品一区二区三区中文字幕 | 精品美女视频在免费观看 | 日韩免费在线视频 | 欧美一区在线视频 | 男女羞羞视频免费看 | 成人黄页在线观看 | 亚洲成人免费观看 | 欧美一级毛片久久99精品蜜桃 | 污片在线观看 | 亚洲成人免费观看 | 亚洲视频1区| av在线播放网址 | 精品免费 | 蜜桃毛片| 日日夜夜精品 | 久一精品 | 精精精精xxxx免费视频 | 亚洲精品乱码久久久久久久久 | 在线色网站 | 久草视频网站 | 亚洲精品一 |