ESP8266WIFIAPP点灯——带源码

最近RFID的课程设计所以就尝试了一下WIFI模块,最主要的功能不多废话,直接上代码,不妥你带水:

void WIFI_Init()
{
	int i;
	ESP8266_Set("AT");  //测试指令
	ms_delay(2000);
	ESP8266_Set("AT+CWMODE_CUR=1");//进入Station模式,该模式下WIFI模块作为Client接入路由器
	ms_delay(2000);
	ESP8266_Set("AT+CWLAP");
	ms_delay(2000);
	ESP8266_Set("AT+CWJAP_CUR=\"TP-LINK_E4DA\",\"lipengyu0721\"");//登陆家里的路由器 路由器名字+密码
	ms_delay(20000);
	
	flag=1;
	ESP8266_Set("AT+CIFSR"); //查看WIFI模块获得IP地址,
	ms_delay(2000);
	for(i=0;i<15;i++)        //LCD显示WIFI模块分配到的IP地址,这里说一句WIFI模块的应答中第25个字节才是IP地址的首地址
	{
		LcdWriteData(Recive_Cmd[i]);
	}
	
	flag=0;
	if((Recive_Cmd[1]=='1')&&(Recive_Cmd[2]=='9')&&(Recive_Cmd[3]=='2'))
	{
		LcdWriteCom(0x40+0x80);
		for(i=0;i<16;i++)
		{
			LcdWriteData(Disp[i]);
		}
	}
	ESP8266_Set("AT+CIPMUX=1"); //多连接
	ms_delay(2000);
	ESP8266_Set("AT+CIPSERVER=1,8888"); //设置Client的TCP端口号
	ms_delay(2000);
}

声明几点:
1.WIFI模块响应的数据是以+IPD开始的,可以作为判别,协议中包括一个字节的计算数据量位。
2.以上除了LCD的显示删去后可直接使用;
3.WIFI模块返回的IP地址中第25个字节为IP的首地址;可以如一下接受:

void Uart_Interrupt() interrupt 4        
{
	static uchar i=0;

  if(RI==1)
  {
		ES = 0;
    RI=0;
		if(flag==1)    //Accept IP address
		{
			i++;
			if(i>24)  //只接受25字节之后的IP地址
			{
				Recive_Cmd[t]=SBUF;
				t++;
				if(i>41)
				{
					flag=0;
				}
			}
	  }

这块代码可实现与改模块建立握手之后由WIFI向上位机发送数据:|

void ESP8266_Sent(uchar *puf)      // 数组指针*puf指向字符串数组               
{
      ESP8266_Set("AT+CIPSEND=0,8"); //0,8一次发送8个字节量
      while(*puf!='\0')    //遇到空格跳出循环
      {
           Send_Uart(*puf);   //向WIFI模块发送控制指令。
           us_delay(5);
           puf++;      
      }
      us_delay(5);
      Send_Uart('\n');   //换行
      ms_delay(10);
} 

注意0,8,那么会一次发送8个字节就会停止某一个数组访问并继续运算;

这个是串口发送数据的一些代码可直接使用不用再调试:

void Send_Uart(uchar value)
{
      ES=0;         //关闭串口中断
      TI=0;         //清发送完毕中断请求标志位
      SBUF=value;     //发送
      while(TI==0);   //等待发送完毕
      TI=0;         //清发送完毕中断请求标志位
      ES=1;         //允许串口中断

}

void ESP8266_Set(uchar *puf) // 数组指针*puf指向字符串数组               
{

      while(*puf!='\0')    //遇到空格跳出循环
      {
           Send_Uart(*puf);  //向WIFI模块发送控制指令。
           us_delay(5);
           puf++;      
      }
      us_delay(5);
      Send_Uart('\r');//回车
      us_delay(5);
      Send_Uart('\n');   //换行
      ms_delay(1000);
}

void Character_Send(uchar *puf)
{
      while(*puf!='\0')    //遇到空格跳出循环
      {
           Send_Uart(*puf);  //向WIFI模块发送控制指令。
           us_delay(5);
           puf++;      
      }
}
下面这个是TCP网络调试助手:

qq:1363658871,私聊我直接发包。
目前正在用AS写上位机;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值