261-基于51单片机DHT11温湿度烟雾浓度光照强度环境监测系统(源程序+原理图+元件清单)

 一:功能介绍:

1、系统组成:采用51单片机+DHT11温湿度传感器+MQ2烟雾传感器+光敏传感器+ADC0832+蜂鸣器+LCD1602显示屏
2、通过DHT11采集温湿度,显示到LCD1602上面;
3、通过光敏传感器采集光照强度,显示到LCD1602上面;
4、通过MQ2烟雾传感器采集烟雾浓度,显示到LCD1602上面;
5、当检测烟雾浓度大于阈值,蜂鸣器进行报警提醒;
6、当检测光照强度低于阈值,开启补光灯;

二:实物演示视频

261-基于51单片机DHT11温湿度烟雾浓度光照强度环境监测系统

三:程序代码展示(采用C语言编写,使用keil5编译,代码有中文注释,新手容易看懂)

unsigned int Get_ADC0832(unsigned char CHAANEL)  //AD转换,返回结果
{
	unsigned long Volt;//测量的电压值
	u8 i=0;   
	u8 j;
	u16 dat=0;   //正向输入
	u8 ndat=0;   //反向输入
	if(CHAANEL==0)CHAANEL=2;     
	if(CHAANEL==1)CHAANEL=3;     
	DI=1; _nop_();_nop_();     //发起始位,固定为1(1位)
	CS=0; _nop_();_nop_();     //拉低CS端,让ADC0832使能
	CLK=1;_nop_();_nop_();   //拉高CLK端,DI端的数据移入ADC0832内部的多路移位寄存器
	CLK=0;_nop_();_nop_();    //拉低CLK端,形成下降沿1,第一个周期开始
	CLK=1;           //拉高CLK端,在第一个时钟周期内,DI为高电平,表示启动位
	DI=CHAANEL&0x1;_nop_();_nop_(); //假设选取通道0,则10&01=0,即SGL/DIF=0,为差分输入(2位)
	CLK=0;_nop_();_nop_();    //拉低CLK端,形成下降沿2,第二个周期开始
	CLK=1;                                //拉高CLK端
	DI=(CHAANEL>>1)&0x1;_nop_();_nop_();  //选取通道0,则01&01=1,ODD/EVEN=1,表示通道0
	CLK=0; //拉低CLK端
	DI=1;_nop_();_nop_();        
	dat=0;
	for(i=0;i<8;i++)   //每一个CLK下降沿输出一位数,先输出高位
	{
	 dat|=DO;  
	 CLK=1;_nop_();_nop_();
	 CLK=0;_nop_();_nop_();    
	 dat<<=1;
	 if(i==7)dat|=DO;
	} 	
	for(i=0;i<8;i++)  //每一个CLK下降沿输出一位数,先输出低位
	{
	 j=0;
	 j=j|DO;    //收数据
	 CLK=1;_nop_();_nop_();
	 CLK=0;_nop_();_nop_();    //形成一次时钟脉冲
	 j=j<<7;
	 ndat=ndat|j;
	 if(i<7)ndat>>=1;
	}
	CS=1;     //拉低CS端口
	CLK=0;    //拉低CLK端口
	DO=1;     //拉高数据端
	dat<<=8;
	dat|=ndat;
	Volt=dat*0.0763/100;//8位   //Volt=100-dat*0.0763*2.2/100;//8位
	return(Volt); //返回数据
}
void main(void)
{	unsigned int temperature;  	    
	unsigned int humidity;
	LcdInit();
	LDR_Val=Get_ADC0832(0);//光照检测
	Flag_num=LDR_Val;
	LcdWriteCom(0x01);
	DisplayListChar(0,0,"GZ="); DisplayListChar(8,0,"WD="); DisplayListChar(0,1,"YW="); DisplayListChar(8,1,"SD=");
	DisplayOneChar(13,0,'C');  DisplayOneChar(13,1,'%');
	while(1)
	{		
			DHT11_Read_Date(&temperature,&humidity);	//读取DHT11温湿度

					DisplayOneChar(11,0,temperature/10+'0');//显示温度
					DisplayOneChar(12,0,temperature%10+'0');
					DisplayOneChar(11,1,humidity/10+'0');//显示DHT11湿度
					DisplayOneChar(12,1,humidity%10+'0');
					LDR_Val=100-Get_ADC0832(0)*2.2;//光照检测
					DisplayOneChar(3,0,LDR_Val%1000/100+'0');
					DisplayOneChar(4,0,LDR_Val%100/10+'0');
					DisplayOneChar(5,0,LDR_Val%10+'0');
					MQ2=Get_ADC0832(1)*10;//烟雾检测
					if(MQ2<21) MQ2=0;
					DisplayOneChar(3,1,MQ2%1000/100+'0');
					DisplayOneChar(4,1,MQ2%100/10+'0');
					DisplayOneChar(5,1,MQ2%10+'0');		
	
		if(LDR_Val<50) led=0;//光照低于50  开启补光灯
		else led=1;
		
		
		if(MQ2>50)  beep=0;  //烟雾浓度大于50  开启蜂鸣器
		else beep=1;
	}				
}

四:原理图文件展示(采用AD(Altium Designer)打开)

 五:实物图展示:

六: 资料清单展示:

资料包百度网盘下载链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子工程DIY工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值