esp8266+單片機之最最簡單(AT指令)應用(一)

51單片機+esp8266 wifi模塊的STA模式

模塊作爲客戶端發送數據給遠程主機

燒代碼前需要先配置一下WiFi模塊,AT+CWJAP,讓其先加入一個有效網絡

#include<reg52.h>
#include<stdio.h>

#define uchar unsigned char 
#define uint unsigned int

void delayms(uint x)   //51單片機的常用延時方式
{
	uint i,j;
	for(i=x;i>0;i--)
		for(j=110;j>0;j--);
}

void uart_init()      //串口的初始化
{
	TMOD = 0x20;
	TH1 = 0XFd;
	TL1 = 0XFd;
	SCON = 0x50;
	PCON = 0X00;
	TR1 = 1;
	EA = 1;
	ES = 1;
} 

void wifi_init()      //初始化wifi模塊
{
	ES = 0;       //關閉串口中斷,以免發送指令過程中被其他事情打斷
	TI = 1;

	printf("AT+RST\r\n");  //往串口發重啓指令,在單片機中使用printf默認是往串口發送數據
	delayms(1200);         //適當延時,給wifi模塊一點反應時間

	printf("AT+CWMODE=1\r\n");  //選擇STA模式
	delayms(1200);

	printf("AT+CIPMUX=0\r\n");  //單通道模式
	delayms(1200);
	
	printf("AT+CIPSTART=\"UDP\",\"192.168.1.118\",6666\r\n");  //設置遠程主機IP和端口號
	delayms(1200);

	printf("AT+CIPMODE=1\r\n");  //選擇透傳
	delayms(1200);

	printf("AT+CIPSEND\r\n");  //發送數據命令
	delayms(1200);

	while(!TI);
	TI = 0;  
	ES = 1;  //重新開啓串口中斷
}

void send(char *p)  //發送數據函數
{
	TI=0;
	do
	{	
		SBUF = *p;
		p++;
		while(!TI);
		TI = 0;
	}while(*p);
	SBUF = ' ';
	while(!TI);
	TI = 0;
}


void main()
{
	uart_init();
	wifi_init();
	while(1)
	{
		send("win ");  //這裏只簡單發送幾個字符串作爲演示
		delayms(1000);  //適當延時
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章