一、系统方案 本设计采用STC89C52单片机作为主控制器,液晶1602显示温湿度,按键设置温湿度阀值,实际温湿度低于设置下限或者大于上限,蜂鸣器报警,手机APP显示温湿度,同时APP可以设置温湿度阀值,实现下位机和手机APP的双向通讯。
二、硬件设计 原理图如下: 最终实物图片: 三、单片机软件设计 单片机代码主要是串口初始化、串口中断服务程序。首先是串口初始化: void Uart_init() { TMOD=0x20; //波特率发生器T1的工作方式为2,自动填装初值 EA=1; TH1=0xfd; TL1=0xfd; TR1=1; ET1=0; SM0=0; SM1=1; REN=1; ES=1; } 贴上51单片机负责串口发送的两个函数: void mcu_pc(unsigned char x)//串口发送程序 发送单个字节 { SBUF=x; while(TI==0); TI=0; } void Send2_Str(char *s)//发送字符串 { while (*s) //Check the end of the string { mcu_pc(*s++); //Send current char and increment string ptr } } 在串口中断中处理接收到的数据: void Usart() interrupt 4 { if(RI==1) { receiveData=SBUF;//出去接收到的数据 RI = 0;//清除接收中断标志位 } } WIFI模块初始化 Send2_Str("AT+CWMODE=2\r\n");//选择AP模式 delay(1000); Send2_Str("AT+RST\r\n");//复位 delay(1000); Send2_Str("AT+CWSAP=\"APP\",\"12345678\",11,3\r\n");//模块创建热点 delay(1000);
Send2_Str("AT+CIPMUX=1\r\n");//开启多连接 delay(1000); Send2_Str("AT+CIPSERVER=1,5000\r\n");//开启TCP服务,设置端口号 delay(1000); Send2_Str("AT+CIPSTO=0\r\n");//永远不超时 delay(1000);
四、App软件设计 APP界面比较简单,操作之前打开手机WIFI,连接上下位机创建的热点APP,密码12345678,连接成功之后,点击手机APP上面连接,手机界面会显示连接成功,之后手机APP和下位机就可以实现数据的交换,放上一个手机APP的截图:
|