18、基于51单片机esp8266 wifi温湿度继电器开关控制系统设计(程序+原理图+PCB源文件+答辩技巧+参考论文+元器件清单等)

毕设帮助、开题指导、技术解答(有偿)见文未

目录

毕设帮助、开题指导、技术解答(有偿)见文未

摘要

一、硬件方案

二、设计功能

三、成品实物图

四、原理图  

五、程序源码   

六、PCB图 

部分代码:

资料包括:


摘要

温湿度控制已成为当今社会研究的热门项目。是工农业生产过程中必须考虑的因素。作为最常见的被控参数。温度和湿度已经不再是相互独立的物理量,而应在系统中综合考虑。广泛应用于实验室、大棚、花圃、粮仓乃至土壤等各个领域。而传统的温湿度控制则利用湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材。通过人工进行检测。对不符合温度和湿度要求的库房进行通风、降温、去湿等操作。这种人工测试方法费时费力,效率低。切随机性较大。误差大。因此就需要一种造价低廉、使用方便且计算精确的温湿度控制仪器。利用单片机对温、湿度控制,具有控温、湿精度高、功能强、体积小、价格低,简单灵活等优点,很好的满足了工艺要求。

本文通过使用STC89C52单片机、DHT11传感器模块、1602液晶显示屏模块,ESP8266 WIFI模块以及继电器控制模块。简单明了的实现的温湿度的控制要求。DHT11数字温湿度传感器把采集到的温湿度数据传给单片机。经过单片机的处理。准确的显示到液晶屏上。如果温度超过阀值,将会驱动继电器工作。继电器将驱动负载相应的工作。

关键词:传感器,温湿度,单片机,智能控制,ESP8266 WIFI模块

一、硬件方案

硬件构成:电源5V供电、单片机最小系统电路(复位电路+时钟晶振电路)、ESP8266串口WiFi通讯模块电路、DHT11温湿度检测传感器电路、按键设定电路、蜂鸣器报警电路、继电器控制电路、LCD1602液晶显示屏电路、报警指示灯电路、电源电路。

二、设计功能

1. 单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
2、WiFi通讯模块和单片机之间的通讯方式采用串口通讯;
3、LCD1602液晶显示屏可以实时动态的显示采集的温度,湿度的数据,并且显示设定的温度,湿度上下限报警阀值的数据;
4、采集的温度,湿度的数值,不在设定的区间内的时候,便会触发蜂鸣器报警,以及指示灯明确的指示当前的报警触发数据;
5、手机APP无线WiFi通讯连接,实时动态和液晶显示屏同步的显示温度,湿度的数据;
6、手机端可以自由的控制继电器组的开关,模拟空调加热制冷设备的打开和关闭;
7、按键可以自由的设定报警的阀值区间;
 

三、成品实物图


四、原理图  


五、程序源码   


六、PCB图 


部分代码:

U8  outdata[5];  //定义发送的字节数	   
U8  indata[5];
U8  count, count_r=0;
U8  str[5]={"RS232"};
U16 U16temp1,U16temp2;
 
 
    	void Delay(U16 j)
    {      U8 i;
            for(;j>0;j--)
          {         
                for(i=0;i<27;i++);
 
          }
    }
 
 
    	void  Delay_10us(void)
      {
        U8 i;
        i--;
        i--;
        i--;
        i--;
        i--;
        i--;
       }
 
		void DelayUs2x_1602(uchar ttt)
	{   
 		while(--ttt);
		}
 
 
   	void DelayMs_1602(uchar tttt)
		{
     
 			while(tttt--)
	 {
     //大致延时1mS
     DelayUs2x_1602(245);
	 DelayUs2x_1602(245);
 }
}
 
 
	//注意,无论接收到信号还是发送完信号,都会进中断服务程序的
/*初始化程序(必须使用,否则无法收发),次程序将会使用定时器1*/
void SerialInti()//初始化程序(必须使用,否则无法收发)
{
	TMOD=0x20;//定时器1操作模式2:8位自动重载定时器
 
#ifdef FOSC_12M		   //在这里根据晶振大小设置不同的数值初始化串口
	TH1=0xf3;//装入初值,波特率2400
	TL1=0xf3;	
#else 	
	TH1=0xfd;//装入初值,波特率9600
	TL1=0xfd;
#endif //end of SOC_12M
	
	TR1=1;//打开定时器
	SM0=0;//设置串行通讯工作模式,(10为一部发送,波特率可变,由定时器1的溢出率控制)
	SM1=1;//(同上)在此模式下,定时器溢出一次就发送一个位的数据
	REN=1;//串行接收允许位(要先设置sm0sm1再开串行允许)
	EA=1;//开总中断
	ES=1;//开串行口中断	
 
}
 
 
 
void Uart1Send(uchar c)
{
	SBUF=c;
	while(!TI);//等待发送完成信号(TI=1)出现
	TI=0;	
}
 
 
 /*
   LCD1602写入命令函数
 */
  void LCD_Write_Com(uchar com) 
 {  
 DelayMs_1602(5);
 rs=0; 
 rw=0;; 
 en=1; 
 P0= com; 
 _nop_(); 
 en=0;
 }
/*
  LCD1602写入数据函数
*/
  void LCD_Write_Data(uchar Data) 
 { 
 DelayMs_1602(5);
 rs=1; 
 rw=0; 
 en=1; 
 P0= Data; 
 _nop_();
 en=0;
 }
  /*
	LCD1602清屏函数
  */
  void LCD_Clear(void) 
 { 
 LCD_Write_Com(0x01); 
 DelayMs_1602(5);
 }
 
	/*
	  LCD1602写入字符函数
	*/
 void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) 
 {     
 if (y == 0) 
 	{     
 	LCD_Write_Com(0x80 + x);     
 	}    
 else 
 	{     
 	LCD_Write_Com(0xC0 + x);     
 	}        
 LCD_Write_Data( Data);  
 }
	/*
   LCD1602写入字符串函数
*/
  void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) //写入字符串的函数
 {     
 if (y == 0) 
 	{     
	 LCD_Write_Com(0x80 + x);     //表示第一行
 	}
 else 
 	{      
 	LCD_Write_Com(0xC0 + x);      //表示第二行
 	}        
 while (*s) 
 	{     
 LCD_Write_Data( *s);     
 s ++;     
 	}
 }
	/*
	  LCD1602初始化函数
	*/
 
  void LCD_Init(void) 
 {
   LCD_Write_Com(0x38);    /*显示模式设置*/ 
   DelayMs_1602(5); 
   LCD_Write_Com(0x38); 
   DelayMs_1602(5); 
   LCD_Write_Com(0x38); 
   DelayMs_1602(5); 
   LCD_Write_Com(0x38);  
   LCD_Write_Com(0x08);    /*显示关闭*/ 
   LCD_Write_Com(0x01);    /*显示清屏*/ 
   LCD_Write_Com(0x06);    /*显示光标移动设置*/ 
   DelayMs_1602(5); 
   LCD_Write_Com(0x0C);    /*显示开及光标设置*/
   }
 
 
	   //DHT11温湿度传感器读取数据的函数
        void  COM(void)
      {
     
	        U8 i;
          
       for(i=0;i<8;i++)	   
	    {
		
	   	    U8FLAG=2;	
	   	while((!P2_0)&&U8FLAG++);
			Delay_10us();
		    Delay_10us();
			Delay_10us();
	  		U8temp=0;
	     if(P2_0)U8temp=1;
		    U8FLAG=2;
		 while((P2_0)&&U8FLAG++);
	   	//超时则跳出for循环		  
	   	 if(U8FLAG==1)break;
	   	//判断数据位是0还是1	 
	   	   
		// 如果高电平高过预定0高电平值则数据位为 1 
	   	 
		   U8comdata<<=1;
	   	   U8comdata|=U8temp;        //0
	     }//rof
	   
	}
 
	//--------------------------------
	//-----湿度读取子程序 ------------
	//--------------------------------
	//----以下变量均为全局变量--------
	//----温度高8位== U8T_data_H------
	//----温度低8位== U8T_data_L------
	//----湿度高8位== U8RH_data_H-----
	//----湿度低8位== U8RH_data_L-----
	//----校验 8位 == U8checkdata-----
	//----调用相关子程序如下----------
	//---- Delay();, Delay_10us();,COM(); 
	//--------------------------------
 
	void RH(void)
	{
	  //主机拉低18ms 
       P2_0=0;
	   Delay(180);

资料包括:

需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值