標題: 單片機智能環(huán)境檢測儀設計文檔 [打印本頁]

作者: zyf@0721    時間: 2020-5-18 15:19
標題: 單片機智能環(huán)境檢測儀設計文檔
本次設計主要分五個個功能,分別為測溫濕度,煙霧感應和報警,顯示信息和報警信息。將這幾個個功能巧妙的與家居結合,我們已經知道五個單獨功能如何實現,現在要將五個功能通過單片機系統(tǒng)化反饋,以達到能實現綜合五種功能的智能家居。
設計涉及主硬件為:STC89C52RC單片機,DHT11溫濕度傳感器,MQ-2煙霧傳感器,按鍵設置與LCD1602液晶顯示模塊,蜂鳴器報警電路,以及超標指示顯示模塊組成。
1.2.2 功能介紹
1. 采用DHT11溫濕度傳感器檢測溫濕度,夏普的GP2Y1010AUOF粉塵傳感器檢測空氣質量給ADC0832模數轉換芯片,0832將模擬量裝換成數字量給單片機。
2.采用LCD1602液晶屏顯示溫度、濕度和pm2.5粉塵數據以及各個指標的閥值。
3.三個按鍵:按鍵1設置、按鍵2加、按鍵3減。按鍵可以設置溫濕度的上下限值和粉塵的上限值,設置的值可以存儲到單片機(STC系列)內部的EEPROM中,實現掉電存儲,設置的值掉電不丟失。
4. 當溫濕度值低于下限或高于上限時,或粉塵數據超過上限值時,相應的led指示燈亮,同時蜂鳴器響,實現聲光報警。
#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
#include <math.h>  
#include "0832.h"
#define uchar unsigned char
#define uint unsigned int
#include "eeprom52.h"

sbit DATA = P3^7;  //溫濕度
sbit E=P2^7;//1602使能引腳
sbit RS=P2^5;//1602數據/命令選擇引腳
sbit RW=P2^6;
sbit K1=P1^3;//設置鍵
sbit K2=P1^4;//
sbit K3=P1^5;//
//sbit K5=P1^6;  //布防撤防按鍵
sbit LED1=P3^1; //煙霧報警
sbit LED2=P3^2;   //溫度上限
sbit LED3=P3^3;//溫度下限
sbit LED4=P3^4; //濕度上限
sbit LED5=P3^5;   //濕度下限
//sbit LED6=P3^6; //紅外報警
sbit alarm=P3^0; //蜂鳴器
uchar U8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp;
uchar U8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;
uchar Mode,humidity,temperature,smog;
bit flag_BJ=0;
uchar PM_Counter=0;
uint sum=0;
uint DA=0;
bit bdata FlagStartRH;
uchar flag ;//記錄當前設置狀態(tài)
uint count;

//定時器0初始化
void Timer0_Init()
{
ET0 = 1;        //允許定時器0中斷
TMOD = 0x11;       //定時器工作方式選擇
TL0 = 0xb0;     
TH0 = 0x3c;     //定時器賦予初值
TR0 = 1;        //啟動定時器
TH1=0xdc;
TL1=0x00;
ET1=1;
EA=1;
}

//定時器0中斷
void Timer0_ISR (void) interrupt 1
{
uchar RHCounter;
TL0 = 0xb0;
TH0 = 0x3c;     //定時器賦予初值
RHCounter++;
PM_Counter++;
if(RHCounter%2==0&&flag_BJ==1)
{
alarm=!alarm;
}
    if(RHCounter >= 20)
    {
       FlagStartRH = 1;
   RHCounter = 0;
    }
if(PM_Counter%2==0)
{
DA=adc0832(0);
sum=sum+DA;
if(PM_Counter>=100)
{
PM_Counter=0;
sum=sum/50;
PM_NUM=(sum/256.0)*5000;
PM_NUM=PM_NUM*0.172-0.0999;
sum=0;
}
}

}
void Delay1(uint j)
{
    uchar i;
    for(;j>0;j--)
    {
for(i=0;i<27;i++);
    }
}

void  Delay_10us(void)
{
    uchar i;
    i--;
    i--;
    i--;
    i--;
    i--;
    i--;
}

void  COM(void)
{

因篇幅原因,其他內容請查看附件(只有設計思路,不包含程序和仿真圖哦,可以作為有限的參考)
智能環(huán)境檢測儀(文檔).docx (498.85 KB, 下載次數: 22)





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1