前言:这个题目是我在单片机课程设计《基于ESP8266的物联电梯系统》中用到的,其实本质上就是实现了单片机对esp8266进行初始化,再将手机连上esp8266的WiFi,然后再通过手机端发送指令,esp8266接收到命令传入单片机,单片机再进行相应的操作。esp8266这种小型模块,在物联世界的发展中,有着强大的生命力,我本人比较喜欢它。同时这个也有相应的作品,程序也比较完整,希望能帮到大家。
代码概况:将模块的VCC,GND,TXD,RXD与单片机的VCC,GND,RXD,TXD接好,以为51单片机没有进程和线程的概念,所以就在main函数的while(1)中放入我们要的主程序,而用串口中断的方式来接收esp8266发过来的数据信息,从而实现用esp8266控制单片机。
/***************************************************main.c***************************************************************/
void main()
{
init(); //这里是你自己的程序里面自定义的初始化程序
init_esp(); //初始化esp8266
while(1)
{
ES=1; //因为每次处理完接收到的数据都关闭串口中断,所以在主程序循环中加入ES=1开启中断
reach_floor(); //这个是我的主程序的名称
}
}
//*********************串口中断程序********************************
void ser() interrupt 4
{
unsigned char ldat;
RI=0;
ldat=SBUF;
remote_control(ldat); //esp8266接收数据并且作相应处理
}
/*********************************************esp8266.h****************************************************************/
#ifndef ESP8266_H
#define ESP8266_H
//#include <AT89X52.H>
#include<reg52.h>
#include <stdio.h>
#include"main.h"
#define uint unsigned int
#define uchar unsigned char
void init_esp();
void remote_control(unsigned char ldat);
extern uint lift_key_5,lift_key_4,lift_key_3,lift_key_2,lift_key_1; //因为我做的是电梯系统,所有这里需要接收到对应楼层号码信息,就改变楼层的数值。
#endif
/***********************************************esp8266.c***************************************************************/
#include"esp8266.h"
void init_esp()
{
unsigned int a;
TH1=0XFD; //串口中断的波特率设为9600,同时记得将esp8266的AT固件代码改为9600的波特率,然后刷入该AT固件。
TH0=0XFD;
TR1=1;
REN=1; //使能串口允许接收
SM0=0; //工作在串口的工作方式1
SM1=1;
ES=0; //串口中断关闭,待初始化后再打开
EA=1; //总中断打开
TI = 1;
for (a=0; a<50000; a++);&nbs