当前位置:   article > 正文

48、基于51单片机esp8266 wifi温湿度继电器开关控制系统设计 (程序+原理图+答辩技巧+参考论文+元器件清单等)_用esp8266来完成远程控制阀值的电路原理图

用esp8266来完成远程控制阀值的电路原理图

一、设计简介:

本设计是基于51单片机esp8266 wifi温湿度继电器开关控制系统设计,主要实现以下功能:

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

主要硬件组成:

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

二、原理图

三、程序源码    

部分代码: 

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

四、资源获取

 

本项目包含的所有文件都可以点击下面的名片,发送 “ 48、基于51单片机esp8266 wifi温湿度继电器开关控制系统设计 ” 获取!
项目纯手打,不是免费的哦~
希望可以帮到你哈!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/211429
推荐阅读
相关标签
  

闽ICP备14008679号