基于51单片机的PM2.5和温湿度检测报警

/*
基于51单片机的PM2.5及温湿度检测报警系统
*/
#include"LCD1602.h"  //添加LCD1602头文件
#include"dht11.h"      //添加DHT11头文件
#include"adc0832.h"
#include<math.h>
sbit BUZZER = P1^3;     //蜂鸣器驱动端口==P1^3
sbit Reduc  = P3^2;     //按键键输入端口==P1^7
sbit Add = P3^3;     //按键加输入端口==P3^1
sbit Mode = P3^4;     //按键加输入端口==P3^1
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)             //这是串口的基本配置,配置他的波特率是9600.这些参数都是标准的。
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}

/*
 * UART 发送一字节
*/
void UART_send_byte(char dat)
{
    SBUF = dat;
    while (TI == 0);
    TI = 0;
}

/*
 * UART 发送字符串
*/
void UART_send_string(unsigned char *buf)
{
    while (*buf != '\0')
    {
        UART_send_byte(*buf++);
    }
}
/************************************************
** 函数名称 : void main(void)
** 函数功能 : 主函数
** 输    入 : 无
** 输    出 : 无
** 说    明 :
************************************************/
void main(void)
{
    double PM,pm1,pm2;
    int PMVAL=0,HPM=200,PM_count=0,pm1_count=0;
    uchar T1_data=0,R1_data=0,T2_data=0,R2_data=0;//温度、湿度变量
    uchar shezhi_flag=1,Mode_flag=1,n=1;//设置变量
    uchar bueezr_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/

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 40
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值