×
单片机 > 单片机程序设计 > 详情

ESP8266模块与单片机的通信程序(硬件与软件详解)

发布时间:2020-08-21 发布时间:
|

初次接触ESP8266模块,说实话还是费了很大的劲,从硬件部分到软件部分,一个一个的问题对于我这个新手来说,确实有些吃力。不过还好,在51hei电子论坛有很多这方面的资料,也有很多很友好的人,感谢他们给予的帮助。



虽然我是一个菜鸟,但我还是希望和大家分享一下。时间比较仓促,代码也有很多不成熟的地方,希望能对初次接触这个模块的人有一些帮助。


1,硬件:USB转TTL是必需的,ESP8266模块,一般模块出厂就已经烧好了固件,拿到就可以直接发AT指令,AT指令的手册网上很多,可以自行百度。

  硬件连接  TXD-RXD, RXD-TXD; 交叉连接,有的模块需要自己拉高一个引脚的电平,如图所示,电源最好是3.3V,模块发热很严重,不要长时间接电。


2 ,软件:在执行代码之前,模块要先设定好什么模式,用串口助手发送AT指令设定。我的是AP模式,模块设定为server端,然后生成一个WiFi,名字随   意,这个时候(当然得知道模块的IP地址),可以用电脑上的网络助手,尝试连接模块,电脑必须连接ESP8266模块产生的WiFi才可以;这几步之后,模块就可以连接已经下载好的单片机了,在上面设定好之后,模块断电重启后,在设定的模式不会变,WiFi不会变,后面的指令就需要通过单片机发送了。到这儿基本就可以实现简单的通讯了,程序工程已附上。

 

时间仓促,我也是这几天才学的,分享只是为了更多的分享,不足的地方希望谅解,目前准备做433M。有愿意指导的或是技术交流的可以加我qq1946706342


单片机源程序如下:

#include

#include

#include

#define uchar unsigned char 

#define uint unsigned int 


sbit D1 = P2^0;

sbit D2 = P2^1;

sbit D3 = P2^2;

sbit D4 = P2^3;

sbit D5 = P2^4;

sbit D6 = P2^5;

sbit D7 = P2^6;

sbit D8 = P2^7;


uchar Receive;

uchar Recive_table[15];

uchar flag = 1;

uchar flag1 = 1;

uchar flag2 = 0;

uchar num = 0;

uint i=0;

void ms_delay(uint n)        

{

        uint j,m;

        for( m =n; m>0; m--)

        for(j=110; j>0; j--);

}

void us_delay(uchar n)

{

        while(n--);

}


void Usart_init()

{

        SCON = 0x50;        //设置串行口工作在方式一,且启动串行口接收(REN=1)

        TMOD = 0x20;        //设置计数器1工作在方式二,即自动重装计数值(8位)

        PCON=0X80;

        TH1 = 0xf3;                //设置波特率为4800

        TL1 = 0xf3;

        

        EA = 1;       //开总中断

        TR1 = 1;                         //启动计数器

}


void sent_AT(uchar *at_comd)

{

        ES = 0;

        while(*at_comd != '')  //字符串结束标志

        {

                TI = 0;

                SBUF = *at_comd;

                while(!TI);

                TI = 0;

                us_delay(5);

                at_comd++;

        }

        us_delay(5);

        SBUF = 'r';

        while(!TI);

        TI = 0;

        us_delay(5);

        SBUF = 'n';

        while(!TI);

        TI = 0;

}

void main()

{


                uchar Recivedat;

        //        uchar Rec;

        

                Usart_init();

                ms_delay(5000);

                ES = 0;

                while(flag == 1){

                        sent_AT("AT+CIPMUX=1");//最方便的是直接printf("AT+CIPMUX=1rn");我想弄清楚发送原理,所以绕了一个弯

                                flag1 = 1;

                                while(flag1 == 1)//检测模块是否返回OK

                                {

                                        if(RI)

                                        {

                                                RI = 0;

                                                Recivedat = SBUF;

                                                if(Recivedat == 'K')

                                                {

                                                        flag = 0;

                                                        flag1 = 0;

                                                }

                                        }

                                        num++;

                                        if(num == 1000)

                                        {

                                                num = 0;

                                                flag1 = 0;

                                        }

                                }

                        }

                flag = 1;

                flag1 = 1;

                num = 0;

          D1 = 0;

                        

                while(flag == 1){

                                sent_AT("AT+CIPSERVER=1,8080");

                                flag1 = 1;

                                while(flag1 == 1)

                                {

                                        if(RI)

                                        {

                                                RI = 0;

                                                Recivedat = SBUF;

                                                if(Recivedat == 'K')

                                                {



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会