找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3828|回复: 0
打印 上一主题 下一主题
收起左侧

基于51单片机的空气质量检测系统

[复制链接]
跳转到指定楼层
楼主
本帖最后由 单刀桔子 于 2019-6-14 23:03 编辑

自己也是在社区找资料实现的功能,下面是一部分源码部分源码程序
#include"LCD1602.h" //添加LCD1602头文件
#include"dht11.h"      //添加DHT11头文件
#include"adc0832.h"
#include<math.h>
sbit BUZZER = P1^3;   
sbit Reduc  = P3^0
sbit Add = P3^1;
sbit Mode = P3^2;      
//sbit LED1=P2^0;
//sbit LED2=P2^1;
uchar Rx_buf[4],Rxnum=0;
uchar T1L=15,T1H=35,R1L=30,R1H=80;
void InitUART(void)              
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}
void UART_send_byte(char dat)
{
       SBUF = dat;
       while (TI == 0);
       TI = 0;
}
void UART_send_string(unsigned char *buf)
{
       while (*buf != '\0')
       {
              UART_send_byte(*buf++);
       }
}
/*主函数*/
void main(void)
{
       double PM,pm1,pm2;
       intPMVAL=0,HPM=200,PM_count=0,pm1_count=0;
       ucharT1_data=0,R1_data=0,T2_data=0,R2_data=0;//温度、湿度变量
       ucharshezhi_flag=1,Mode_flag=1,n=1;//设置变量
       ucharbueezr_flag=0,count=0,buzzer_time=9;//蜂鸣器报警变量
       uint Mode_count=0;
       uchar disp[16]  ={"PM2.5:0000ug/m3 "};
       uchar disp1[16]={"T :00C    RH:00%"};
       uchar Tx_Buf[15];
      InitUART();               //初始化串口                                       
       LCD_Init();
    WriteChar(1,0,16,disp); //在第一行显示‘内容’
       WriteChar(2,0,16,disp1);//在第二行显示‘内容’
       while(1)
       {
              T1_data=Read_TRH(0,0);//温度
              disp1[3]=T1_data/10+0x30;//十位
              disp1[4]=T1_data%10+0x30;//个位

              R1_data=Read_TRH(1,0);//湿度
              disp1[13]=R1_data/10+0x30;//十位
              disp1[14]=R1_data%10+0x30;//个位

              pm1+=read_data(1);
              if(++PM_count>=20)
              {
                   PM_count=0;
                  pm1=pm1/20;
                     pm2+=pm1;
                     pm1=0;
                     if(++pm1_count>=5)
                     {
                            pm1_count=0;
                            PM=pm2/5;
                            PM=PM*50/255;
                            PM-=4;
                        PM/=5;
                            PM*=1000;
                            PMVAL=PM;
                            PMVAL+=235;   PMVAL=PMVAL/9;
                            if(PMVAL>=9999)PMVAL=9999;
                            WriteCOMDATA(0x86,0);
                            if(PMVAL<0)//PMVAL=0;
                            {WriteCOMDATA(0+0x30,1);PMVAL=abs(PMVAL);}
                            elseWriteCOMDATA(PMVAL/1000+0x30,1);
                            WriteCOMDATA(PMVAL/100%10+0x30,1);
                            WriteCOMDATA(PMVAL/10%10+0x30,1);
                            WriteCOMDATA(PMVAL%10+0x30,1);
                            PM=pm1=pm2=0;
                     }
              }

整体设计图.PNG (15.39 KB, 下载次数: 79)

设计思路

设计思路

Q7QU97VW[`]OYLJ26AN@4UI.png (50.55 KB, 下载次数: 55)

Q7QU97VW[`]OYLJ26AN@4UI.png

F2X1FO9Z}LD0UP05PMS1EH2.png (158.03 KB, 下载次数: 53)

F2X1FO9Z}LD0UP05PMS1EH2.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表