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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神解釋一下PM2.5程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:207993 發表于 2017-6-5 13:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <REGX52.H>         
#include "LCD1602.h"
#include "dht11.c"
#include "BH1750.c"  

float dis_temp;
uint dis_temp1;
uchar ms=0;
bit s0=0;

uchar UART_Upload[9];  // Upload上傳  accord主動
uint pm_rateH,pm_rateL,pm_particle,pm_density,pm_URV;//低脈沖率高位。低脈沖率低位, 比率,顆粒,濃度  PM_URV  pm上限值
uchar  accord=0;
void  Multiple_Read_BH1750();      //連續的讀取內部寄存器數據

void display()
{

   LCD1602_write(0,0x80);
   LCD1602_writebyte("PM2.5:");
   LCD1602_write(1,0x30+pm_density/1000%10);   
   LCD1602_write(1,0x30+pm_density/100%10);   
   LCD1602_write(1,0x30+pm_density/10%10);
    LCD1602_writebyte(".");      
   LCD1602_write(1,0x30+pm_density%10);   
   LCD1602_writebyte("ug/m3");   






   LCD1602_write(0,0xC0);  
   dis_temp1=(uint)(dis_temp);                 
   if(dis_temp1>9999)
   LCD1602_write(1,0x30+dis_temp1/10000);
   else LCD1602_write(1,' ');
   if(dis_temp1>999) LCD1602_write(1,0x30+dis_temp1%10000/1000);
   else LCD1602_write(1,' ');
   if(dis_temp1>99)   LCD1602_write(1,0x30+dis_temp1%1000/100);
   else LCD1602_write(1,' ');
   if(dis_temp1>9)   LCD1602_write(1,0x30+dis_temp1%100/10);
   else LCD1602_write(1,' ');   
   LCD1602_write(1,0x30+dis_temp1%10);
   LCD1602_writebyte("Lx ");         


   LCD1602_write(1,0x30+U8RH_data_H/10%10);   
   LCD1602_write(1,0x30+U8RH_data_H%10);  
   LCD1602_writebyte("% ");         

   LCD1602_write(1,0x30+U8T_data_H/10%10);   
   LCD1602_write(1,0x30+U8T_data_H%10);  
   LCD1602_write(1,0xdf);     
   LCD1602_writebyte("C");   

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

使用道具 舉報

沙發
ID:207993 發表于 2017-6-5 16:15 | 只看該作者
快來個大神幫幫忙啊
回復

使用道具 舉報

板凳
ID:151348 發表于 2017-6-5 16:43 | 只看該作者
程序似乎不全、、、
回復

使用道具 舉報

地板
ID:82765 發表于 2017-6-5 16:51 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

5#
ID:207993 發表于 2017-6-5 18:31 | 只看該作者
cjjcjj1 發表于 2017-6-5 16:51
你好!你的程序里面沒有 PM2.5 的代碼,從頭文件來看,這個程序是溫濕度和光照度顯示的

#include <REGX52.H>         
#include "LCD1602.h"
#include "dht11.c"
#include "BH1750.c"  

float dis_temp;
uint dis_temp1;
uchar ms=0;
bit s0=0;

uchar UART_Upload[9];  // Upload上傳  accord主動
uint pm_rateH,pm_rateL,pm_particle,pm_density,pm_URV;//低脈沖率高位。低脈沖率低位, 比率,顆粒,濃度  PM_URV  pm上限值
uchar  accord=0;
void  Multiple_Read_BH1750();      //連續的讀取內部寄存器數據

void display()
{
        
   LCD1602_write(0,0x80);
   LCD1602_writebyte("PM2.5:");
   LCD1602_write(1,0x30+pm_density/1000%10);   
   LCD1602_write(1,0x30+pm_density/100%10);   
   LCD1602_write(1,0x30+pm_density/10%10);
    LCD1602_writebyte(".");      
   LCD1602_write(1,0x30+pm_density%10);   
   LCD1602_writebyte("ug/m3");   
                                                               
   



                  
   LCD1602_write(0,0xC0);  
   dis_temp1=(uint)(dis_temp);                 
   if(dis_temp1>9999)
   LCD1602_write(1,0x30+dis_temp1/10000);
   else LCD1602_write(1,' ');
   if(dis_temp1>999) LCD1602_write(1,0x30+dis_temp1%10000/1000);
   else LCD1602_write(1,' ');
   if(dis_temp1>99)   LCD1602_write(1,0x30+dis_temp1%1000/100);
   else LCD1602_write(1,' ');
   if(dis_temp1>9)   LCD1602_write(1,0x30+dis_temp1%100/10);
   else LCD1602_write(1,' ');   
   LCD1602_write(1,0x30+dis_temp1%10);
   LCD1602_writebyte("Lx ");         
   
   
   LCD1602_write(1,0x30+U8RH_data_H/10%10);   
   LCD1602_write(1,0x30+U8RH_data_H%10);  
   LCD1602_writebyte("% ");          
     
   LCD1602_write(1,0x30+U8T_data_H/10%10);   
   LCD1602_write(1,0x30+U8T_data_H%10);  
   LCD1602_write(1,0xdf);     
   LCD1602_writebyte("C");   
   
   
                                
}

void UART_Init(void)
{
T2CON = 0x34;
RCAP2H = 0xFF;
RCAP2L = 0xDC;
TH2 = 0xFF;
TL2 = 0xDC;
TR2 = 1;      
SCON = 0x50;
ES = 1;  
}

void main()
{
    UART_Init();
        Init_BH1750();      //初始化BH1750     
        TMOD=0x01;
        TH0=0x3C;
        TL0=0xb0;
        ET0=1;
        TR0=1;
        EA=1;
          
    LCD1602_cls();
   while(1)
    {
           RH();  
           display();
                  
        }
}







void time0() interrupt 1
{
   TH0=0x3C;
   TL0=0xb0;
   ms++;
   if(ms>=20)
            {
        ms=0;
              Single_Write_BH1750(0x01);   // power on
                Single_Write_BH1750(0x10);   // H- resolution mode
                delay_nms(80);               //延時180ms
                 Multiple_Read_BH1750();      //連續讀出數據,存儲在BUF中
                dis_data=BUF[0];
                dis_data=(dis_data<<8)+BUF[1];//合成數據,即光照數據
                dis_temp=(float)dis_data/1.2;                           

         }
      
     
}


void serial () interrupt 4
{
        uchar temp_pM;
        if(RI==1)
        {
                RI=0;
                UART_Upload[accord]=SBUF; //串口接收一個數據
                accord++;
                if(UART_Upload[0]!=0xff)  //判斷接收到的第一個數據為oxff  數據錯誤 數組指針清零
                {
                        accord=0;
                }
                if(UART_Upload[1]!=0x18)//判斷接收到的第2個為0x18  數據錯誤 數組指針清零
                {
                        accord=0;
                }
                if(accord>8)                 //九個數據為一組
                {
                        accord=0; //接收完一組數據的標志,置0 校驗         
                }               
                if(accord==0)                //接收一組數據后進行一次校驗和
                {                                         //校驗7為數據位的和取反加一等于校驗值
                        if((UART_Upload[0]==0xff)&&(UART_Upload[1]=0x18)&&(UART_Upload[2]==0x00))//判斷前三位數據是否正確 是進行校驗
                        {       
                                temp_pM=~(UART_Upload[1]+UART_Upload[2]+UART_Upload[3]+UART_Upload[4]+UART_Upload[5]+UART_Upload[6]+UART_Upload[7])+1;        //校驗和
                                  if(temp_pM=UART_Upload[8])
                                {
                                        pm_rateH=UART_Upload[3];
                                        pm_rateL=UART_Upload[4];
                                        pm_density=(UART_Upload[3]*100+UART_Upload[4])*1.014705; //濃度數據處理          數據擴大了十倍
                                        /*我們繪出一個檢驗報告,比如在345ug/m3的情況下,zph01輸出占空比34%。我們理論認為在0-34%對應的0-345ug/m3。他們是 線性比例關系*/                       
                                }
                        }
       
                }

        }
}
回復

使用道具 舉報

6#
ID:170270 發表于 2017-6-6 13:13 | 只看該作者
從程序看 PM2.5是串口的 接受的數據按協議解析就可以
回復

使用道具 舉報

7#
ID:207993 發表于 2017-6-6 19:51 | 只看該作者
依然是你 發表于 2017-6-6 13:13
從程序看 PM2.5是串口的 接受的數據按協議解析就可以

那測量光照的是什么原理  什么中斷啊 求詳解
回復

使用道具 舉報

8#
ID:170270 發表于 2017-6-7 08:58 | 只看該作者
一個被程序折磨 發表于 2017-6-6 19:51
那測量光照的是什么原理  什么中斷啊 求詳解

光照是集成芯片 有特定的通訊協議
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久 | www.国产一区 | 婷婷色在线播放 | 日韩最新网址 | 天天干视频在线 | 日韩成人在线看 | 欧美一区二不卡视频 | 午夜精品一区 | xxxxxx国产| av日韩高清 | 国产亚洲一区二区三区 | 香蕉久久久久久 | 国产特级毛片 | 亚洲成网 | 亚洲色图第一页 | 午夜资源 | 免费黄色在线 | 黄网站免费在线看 | 色播久久久 | 亚洲一区二区三区在线 | 日韩一区和二区 | 欧美freesex黑人又粗又大 | 色永久 | 嫩草视频入口 | 成人免费网站 | 日韩在线精品视频 | 国产一级电影在线 | 成人福利网站 | 鲁大师一区影视 | 亚洲日本欧美日韩高观看 | 国产一区二区三区四区五区加勒比 | 国产91在线播放 | 91久久精品一区二区二区 | 久久久福利 | 9久久精品 | 成在线人视频免费视频 | 麻豆国产一区二区三区四区 | 中文字幕在线不卡播放 | 一二区视频 | 国产999精品久久久影片官网 | 日韩精品一区二区三区中文在线 |