功能简要说明:
1.51单片机+1602液晶+按键+烟雾检测传感器MQ+红外检测+蜂鸣器+DHT11温湿度传感器;
2.按键设置烟雾报警浓度值,温度报警值;
3.当达到报警条件,蜂鸣器响;
5.电路板为PCB腐蚀所做,图文件为altiumdesigner工程文件。
6.程序采用C语言编写,通过keil软件编译,文件为工程源代码。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Set_temp=40; //设定的温度
uchar C_temp=0;
uchar yy=3;
uchar set_flag=0;
uchar data discop[4]={0};
// 0 2 4 6 8 101214161820222426
uchar ad_dat1=0; //读取滤波后的AD值
uint Nd_dat=0; //烟雾浓度数据
uchar L_temp=30;
uint L_Hum=8000;
sbit BEEP=P1^0;
sbit hw=P1^7;
bit flag_set; // 布放标志 1布防 0撤防
/******************延时子程序********************/
void Delay_1ms(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=122;j>0;j--);
}
#include "ADC0832.H"
#include"DS18B20.H"
#include"key.h"
#include "LCD1602.H"
void ReadWater_dat()
{
static uint AD_DAT=0;
float ad_buf=0;
static uchar i=0;
if(i<5) // 滤
{
i++;
AD_DAT+=A_D(); // 波
}
else // 算
{
i=0; // 法
ad_dat1=(uchar)(AD_DAT/5);
ad_buf=(float)(ad_dat1*39.22);
Nd_dat=(uint)(ad_buf);
AD_DAT=0;
}
}
void Readtemp_dat()
{
static uchar temp_buf=0;
static uchar i=0;
Read_18B20_Temperature();
Read_18B20_Temperature();
Read_18B20_Temperature();
Read_18B20_Temperature();
Read_18B20_Temperature();
Read_18B20_Temperature();
Read_18B20_Temperature();
Read_18B20_Temperature();
Read_18B20_Temperature();
if(temp_buf==Tem_dispbuf[4])
{
if(i<5)
i++;
}
else
{
i=0;
temp_buf=Tem_dispbuf[4];
}
if(i==5)
{
C_temp=Tem_dispbuf[4];
discop[0]=10;
discop[1]=Tem_dispbuf[2];
discop[2]=Tem_dispbuf[1];
discop[3]=Tem_dispbuf[0];
}
}
void Control()
{ //3125869102f9
static uint i;
if(((flag_set)&&(hw==1))||(Nd_dat>L_Hum))
{
if((flag_set)&&(hw==1))
{ i++;
if(i>50)
{
if((flag_set)&&(hw==1))
{
i=0; yy=3; BEEP=0;
}
}
}
if(Nd_dat>L_Hum)
{ i++;
if(i>50)
{
if(Nd_dat>L_Hum)
{
i=0; yy=1; BEEP=0;
}
}
}
}
else
{
BEEP=1;
}
}
/************主程序**************/
void main()
{
init_1602();
Uart_init();
while(1)
{
ReadWater_dat();
display();
keyscan();
Control();
}
}
资料下载地址