使用手机APP远程控制51单片机

前言:
这个算是51单片机上传数据到手机APP续集,添加了远程控制的功能,不懂的小伙伴可以看看之前的文章。

功能介绍:
1、采集温度数据到手机APP
2、通过APP控制单片机上的LED灯

APP操作:
APP通过发送LED0、LED1字符串来实现开关灯
在这里插入图片描述
演示图:
在这里插入图片描述

在这里插入图片描述

代码实现:
main.c文件,没做修改 和之前的一样

/**************************************************************************************
接线:
ESP826601S: TX--P30 RX--P31  VCC--3.3V  GND--GND
DS18B20: IO--P37  

使用APP:TCP连接
WIFI模块的IP地址:可以在手机连接热点后查看热点属性得知
 
由于51单片机的波特率是9600,而WiFi模块的默认波特率是115200,故需要修改WIFI模块的波特率
使用USB转TTL的模块发送AT指令修改:AT+UART=9600,8,1,0,0

注意,ESP8266 作为server 有超时机制,如果连接建立后,一段时间内无
数据来往,server 会将client 踢掉。请在 PC 工具连上 ESP8266 后建立一个
2s 的循环数据发送,用于保持连接。																			  
***************************************************************************************/
#include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器
#include "usart.h"
#include "delay.h"
#include "stdio.h"
#include "18b20.h"
sbit led=P2^0;	   //将单片机的P0.0端口定义为led
unsigned char xdata dataBuf[16]= {0};//定义显示区域临时存储数组

void main()
{
	int temp1;
	float temperature;
	Init_DS18B20();
	
	UART_init();//串口初始化
	DelayMs(1000);
	
	UART_SendStr("AT\r\n",4); //测试 AT 启动
	DelayMs(1000);
	
	DelayMs(1000);
	UART_SendStr("AT+CWMODE=2\r\n",13);//选择 WIFI 应用模式:AP 模式
	
	DelayMs(1000);
	UART_SendStr("AT+CWSAP=\"X_CHUN\",\"12345678\",6,4\r\n",34);	// 设置 AP 模式下的参数:接入点名称,密码,通道号

	DelayMs(1000);
	
	UART_SendStr("AT+CIPMUX=1\r\n",13);		 //启动多连接
	
	DelayMs(1000);
	UART_SendStr("AT+CIPSERVER=1,8080\r\n",21);	  	//配置为服务器,1:开启 server 模式,8080端口号
	
	while(1)
	{
		temp1=ReadTemperature();		//读取温度
		temperature=(float)temp1*0.0625; //温度值转换
		
		UART_SendStr("AT+CIPSEND=0,16\r\n",17);		//发送数据
		sprintf(dataBuf,"Temp: %4.1fC",temperature);  //将温度数据放入dataBuf数组中
		UART_SendStr(dataBuf,16);		//发送16位数据
		
		DelayMs(1000);
	}		
}

串口中断服务程序:
改动的地方,实现远程控制的代码

sbit led=P2^0;	   //将单片机的P0.0端口定义为led
tatic  char  uart_buf[32]={0};  //用于保存串口数据
static  unsigned char uart_cnt=0;   //用于定位串口数据的位置
void UART_SER (void) interrupt 4 	//串行中断服务程序
{
	if(RI)                        //判断是接收中断产生
	{
		RI=0;                      //标志位清零
		//接收串口数据
		uart_buf[uart_cnt] =SBUF;  
		uart_cnt++;
		//判断是否是下发的指令
		if(uart_buf[uart_cnt-4]=='L'&&uart_buf[uart_cnt-3]=='E'&&uart_buf[uart_cnt-2]=='D'&&uart_buf[uart_cnt-1] == '0')  
		{
			led = 0;       //开灯
			uart_cnt = 0;  //清零,重新计数
		}
		else if(uart_buf[uart_cnt-4]=='L'&&uart_buf[uart_cnt-3]=='E'&&uart_buf[uart_cnt-2]=='D'&&uart_buf[uart_cnt-1] == '1')  
		{
			led = 1;       //关灯
			uart_cnt = 0;
		}
		if(uart_cnt>28)   //防止数组越界
		{
			uart_cnt = 0;
		}
	}
	if(TI)  //如果是发送标志位,清零
	TI=0;
} 

最后:
需要代码的可以自行下载,下载链接
下载操作:
在这里插入图片描述

  • 16
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
要实现51单片机发送数据到APP,你需要进行以下步骤: 1. 首先,你需要准备好所需材料,包括51单片机、WIFI模块(如ESP8266-01S)、温度传感器(如DS18B20)以及手机APP(支持TCP连接)。 2. 然后,你需要编写程序来采集温度数据并发送到APP。你可以在网上找到相应的程序代码来实现这个功能。通过DS18B20传感器采集温度数据,并将其发送到APP端。 3. 在APP端,你需要设置相应的功能来接收和显示来自51单片机的数据。根据上述引用内容中的功能介绍,你可以通过发送特定的字符串来控制51单片机上的LED灯。你可以在APP中添加相应的按钮或文本框来实现这个功能。 4. 最后,你需要确保51单片机APP之间建立了TCP连接。具体的实现方法可以参考上述引用内容中提供的链接。 通过以上步骤,你就可以实现51单片机发送数据到APP的功能了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [51单片机上传数据到手机APP](https://blog.csdn.net/NICHUN12345/article/details/123515358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用手机APP远程控制51单片机](https://download.csdn.net/download/NICHUN12345/85214120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

⁽⁽ଘ晴空万里ଓ⁾⁾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值