久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5448|回復: 1
打印 上一主題 下一主題
收起左側

51單片機驅動esp8266代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:320164 發表于 2018-5-2 00:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>               //51單片機常用的頭文件
#define uchar unsigned char     //宏定義一個無符號的char類型
#define uint unsigned int       //宏定義一個無符號的int類型

//發送一字節
void sendByte(uchar b)
{
  SBUF = b;
  while(!TI);
  TI=0;
}

//發送字符串
void sendString(uchar *s)
{
  while(*s != '\0') //字符串默認結尾'\0',以此來判斷字符串的結束
  {
    sendByte(*s);
    s++;
  }
}

//初始化ESP8266WiFi模塊
void initEsp()
{
  uint a;
  SCON = 0x50;    //8位數據,可變波特率
  TMOD = 0x20;    //設置定時器1位16位自動重裝模式
  TL1 = 0xfd;     //設置定時器初值,波特率為9600
  TH1 = 0xfd;
  ET1 = 0;        //禁止定時器1中斷
  TR1 = 1;        //啟動定時器1
  EA = 1;

  for (a=0; a<50000; a++);      //延時幾秒,讓模塊有時間啟動
  sendString("AT+CWMODE=2\n");  //設置為softAP和station共存模式

  //WiFi熱點不能通過代碼設置,可使用串口助手進行設置,該設置斷電不丟失
  /*
  for (a=0; a<20000; a++);
  sendString("AT+CWSAP='TEST','12345678',1,3\n"); //建立WiFi熱點
  */

  for (a=0; a<50000; a++);   
  sendString("AT+CIPMUX=1\n"); //啟動多連接

  for (a=0; a<20000; a++);
  sendString("AT+CIPSERVER=1,333\n");//建立server,端口為333

  for (a=0; a<20000; a++);
  sendString("AT+CIPSTO=50\n");     //服務器超時時間設置

  RI=0;
  ES=1;   //初始化完成,串行口中斷打開
}

//獲取數據,數據格式示例:+IPD,0,14:"time":"11:11"
void getData()
{
  uint a;
  if(receiveFlag)
  {
    for(i=0; i<2; i++)
    {
      Hour[i]=Buffer[17+i];
    }
    Hour[2]='\0';

    for(i=0; i<2; i++)
    {
      Minute[i]=Buffer[20+i];
    }
    Minute[2]='\0';

    //將獲取到的數據發送到串口助手上顯示
    for (a=0; a<10000; a++);    //需要延時,負責會造成數據錯亂導致丟包
    sendString(Hour);
    for (a=0; a<10000; a++);
    sendString(Minute);

    receiveFlag=0;
    count=0;
    for(i=0; i<22; i++)
    {
      Buffer[i]=0;
    }
  }
}

//主函數
void main()
{
  initEsp();            //初始化WiFi模塊
  receiveFlag = 0;      //receiveFlag判斷執行getData() 的標志
  count = 0;            //count緩沖區RXDdata[count]的索引  
  while(1)
  {
    getData();
  }
}

//利用中斷接收信息,且舍棄無效信息
void uart() interrupt 4  
{
  if(RI == 1)   
  {
    ES = 0;     //關閉串行中斷
    RI = 0;     //清除串口接收標志位
    temp = SBUF; //從串口緩沖區取得數據

    if(count<20)    //滿足需接收的信息長度,將數據存入緩沖區
    {
      Buffer[count]=temp;
      count++;
      if(Buffer[0]=='+')  //判斷是否為無效數據,由于WiFi模塊會自動加上"+PID.."開頭的字符串
      {
        receiveFlag = 1;
      }
      else
      {
        receiveFlag = 0;
        count = 0;
      }
    }
    ES = 1;
  }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:623393 發表于 2020-1-3 00:36 | 只看該作者
樓主大神好,我在使用單片機控制esp8622連接另一個esp8622過程中發現,使用單片機控制連接不上,但是通過電腦串口的AT指令能連接上。這是什么原因?是不是您所說的不能通過51控制連接服務器,這個問題現在可以解決嗎?有伸手黨嫌疑,樓主見諒~
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精久久久久久久妇剪断 | 久久久久久国产精品免费免费男同 | 色就是色欧美 | 精品国产一区二区三区久久久蜜月 | 国产欧美一区二区三区久久人妖 | 欧美精品一二三区 | 国产精品久久久久久妇女6080 | 激情久久网| 国内精品久久久久 | 99精品观看| 激情a| 中文字幕av中文字幕 | 激情网站在线观看 | 天天躁日日躁狠狠躁2018小说 | 精品成人免费一区二区在线播放 | 日韩精品免费播放 | 精品久久久久久久久久久久久久久久久 | 9999视频 | 99精品视频一区二区三区 | 久热国产精品 | 成人久久18免费网站麻豆 | 欧美精品一区二区在线观看 | 亚洲精品在线看 | 久久69精品久久久久久久电影好 | www亚洲精品| 日本午夜网站 | 国产精品国产成人国产三级 | 久久国产婷婷国产香蕉 | 日日噜 | 婷婷久久精品一区二区 | 亚洲欧美综合 | 国产精品日产欧美久久久久 | 九九国产 | 久久91av| 国产精品久久一区二区三区 | 亚洲国产视频一区二区 | www.狠狠干| 久久中文字幕视频 | 久久精品国产亚洲一区二区三区 | 国产探花在线精品一区二区 | 日韩在线免费视频 |