98 基于51单片机家庭烟雾红外温湿度报警设计【毕设课设】

功能简要说明:

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();
	  
  	}
}

 资料下载地址

https://pan.baidu.com/s/19tAa1ArnqJkyuvt6HECNaw?pwd=8888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值