找回密码
 注册
关于网站域名变更的通知
查看: 158|回复: 2
打印 上一主题 下一主题

51单片机+ESP8266点亮LED小灯

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-5-24 10:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
* w" u% D# t- V5 @( K% O
ESP8266模块采用STA工作模式,先在电脑上用串口调试助手,将ESP8266模块设置为STA模式,波特率9600,具体指令如下:1 n3 A3 o% s4 A  [) \+ N6 G8 B
1. 设置AP模式 AT+CWMODE=2
* f2 Y4 X7 c! c7 ?5 l2 p' I2. 复位生效 AT+RST
9 I" o1 U. j; Q! n/ m3. 配置热点 AT+CWSAP="test","12345678",1,3  f: W# M' d  u; T) f! Q1 L8 j& C
这样即使ESP8266复位也不会将这些信息擦除,直接上后面的指令就可以
3 m' B, j1 \- R6 r2 D, r9 I+ c( b单片机接ESP8266一定注意两者一定要共地,否则ESP8266不能正常工作,ESP8266电源要3.3V供电,5V的貌似不行,ESP8266的EN脚外接一个1K欧的电阻再接3.3V电源
1 ~6 X5 t$ v$ b4 J! \" _  P # ~' {' o1 `, U
#include<reg52.h>
1 n+ u0 h3 h& K7 g$ f; d' ]typedef unsigned char u8;4 {. G6 P: s. U+ k3 i$ ^2 o
typedef unsigned int u16;3 A2 l. M  b- {, p: z: N
sbit LED = P1^0;u8 dat;
" U* @) j, O! |& ~void Init(void);//串口初始化函数! T! y7 o+ Z  V) H- y. a/ p
void Delay_ms(u16 n);//延时子函数
! G: K- U$ }  }* P; f$ L$ C( }1 }$ rvoid Sent_ZF(u8 dat);//发送一个字节
: R+ B3 `/ ?" W  e; @: Yvoid AT_Send_String(u8 *string);//发送字符串* c8 q; `; P/ e1 |/ v" Y' c6 F
void ESP8266_Init();//ESP8266初始化4 I0 U% H. T- A0 c
void Init(void)                //串口初始化函数
# W8 Z, x* @8 [{) `% U/ V) ]' g

  a; l% B+ N" ^- \! h        TMOD=0x20;        //定时器工作方式2,8位自动重载(0010 0000)+ }* a( k. ]( l( @5 E# j4 N
        TL1=0xfd;                //装入初值" S% v1 q) M/ v1 z: l$ D+ a
        TH1=0xfd;               
: n0 P- _' ^' Z/ d        TR1=1;        //启动定时器1
* H" V0 K6 I0 K* ~! T( ~7 b        REN=1;    //允许串行口接收数据
  Q& ?1 J8 F4 F! [# |) \        SM0=0;    //工作方式1,10位异步收发
- ]& D) E$ |# b# u. J6 c) Q* b        SM1=1;   
9 T( ?0 Q" C; k  s# h2 B6 Y        EA=1;   //打开全局中断控制
' W- a8 }0 q% D2 ^7 ]        ES=1;     //打开串行口中断
: @: I' T% w: \8 u+ {}- g& l; g. ^% T. |
6 E. p) I6 r, h
void main()
$ x' p- ?% F6 O8 B0 `0 g$ e{. i9 \& O) K" k8 s
    Init();7 M9 {' B9 \! L$ s. w* n! C& ^
    ESP8266_Init();5 _- E% e0 p* N* r: N" R
    while(1);
, \) q6 U' m- ]7 s! P8 \}
4 q0 ]2 r& T; V* K( ?# a( Y# F2 o5 o7 I! _1 E
void Sent_ZF(u8 dat)  //发送一个字节
: Y- T8 E0 u6 M; M{5 j; p* l- u7 R. l0 I' i
        ES = 0;$ B# s7 e. P8 k# z& i: F4 ^0 ~
        TI=0;4 w* C/ p9 k. N4 T4 F
        SBUF = dat;
, h+ o2 a4 z# p1 C; W  n! ?2 j        while(!TI);
7 J: s' I7 {2 R% d0 c        TI = 0;
2 f; Y, W9 G( h2 u) E* }$ Y, X        ES = 1;% [7 P9 L( l6 P
}
% H& N- U) V) {9 zvoid Delay_ms(u16 n)  //延时子程序
2 j% d# a5 I9 x& W{
7 R+ N- a' ~$ N8 n, Y) V3 X        unsigned int i,j;
7 w( V/ Q$ p5 M        for(i=0;i<n;i++)
  N# q. a& [+ j' a        for(j=0;j<123;j++);/ u5 u7 m* H* m2 ?& X# M2 a' Y
}
" O" u7 @0 i( |/ [' [. o9 s, m: i. K, o8 Z
void AT_Send_String(u8 *string)  //发送字符串
( P% {2 W3 p$ x, Z2 d{
- ~5 L, J4 {3 L5 ^8 F: K1 ]  while(*string!='\0')8 {- G3 N( P* L' C1 a* N
  {
- T9 U1 n9 ]" Z7 f2 V4 N    Sent_ZF(*string);9 |( t. Y) U# z3 c
        string++;+ m8 @0 s& d5 |$ I1 G/ d
                Delay_ms(10);
- j+ [- g9 \- q, X  o$ X& y  }
" B  }9 ^/ w. W  h9 q
- T. `& ~& G1 `" N2 l' i. K: O}$ r- ]9 B9 I, G) R6 b0 h
void ESP8266_Init()   //ESP8266初始化2 y- A8 n4 s/ F  r( G, D# @
{       . F5 _% c  ~1 y0 _7 X3 ^
         AT_Send_String("AT+RST\r\n");  //重启模块
+ F; [6 S7 L/ F; t7 |9 a        Delay_ms(10000);
" i5 U2 G* F1 I+ `- d# n        Delay_ms(10000);
$ k  S6 c4 t5 v. G" [. X+ |    AT_Send_String("AT+CIPMUX=1\r\n");  //设置为多连接模式,启动模块( g9 ~0 G7 j0 m' q) s( a. l
        Delay_ms(10000);8 `6 H- i/ |; P" P9 O, g
        Delay_ms(10000);7 i( D9 v0 Z5 ^$ n4 C3 k
  AT_Send_String("AT+CIPSERVER=1,8080\r\n"); //服务器的设置端口
. z4 O7 I; ?5 o          Delay_ms(10000);
, U/ k4 G9 g0 G! ~, C8 _        Delay_ms(10000);4 v/ i. Y8 n% z0 m4 i
}
6 l% u7 R5 O0 p# Z" {3 \2 W# b7 o8 z5 m, N, C9 P7 |( k/ e/ W* n9 ~, R
void InterruptUART() interrupt 4  //控制小灯开关
3 q& Z1 y: Y1 d; n" ]/ v{1 d  H7 ]7 X( t9 v4 Y# v
        RI= 0;        //清零6 i. J8 C) B- @1 F- V/ y3 @, v7 D
        dat= SBUF;    //收到的数据占存到SBUF中
  |. T- N$ T7 s4 s0 D$ o          {8 {$ e) w" `8 D% O. P! i
         if(dat=='o')% H1 l. w3 c& w0 F4 b
                                 {
, F6 p# p* d- t/ ]                                         LED =0;   
8 H5 X' a' X4 V                                 }
( ?& G# R; G) v9 g, v                                 if(dat=='f')  + s1 l, p3 i8 j. T: g8 U
                                 {                                                 3 u% z5 r3 E3 J$ g+ u
                                    LED =1;
1 B- ^" W" v7 d, J, [                                 }                                         ) g0 `" y1 y0 T& u
          }" A6 A- s1 z* |5 l% K6 h! `$ z
}- R- a' Z1 W+ z. h' F
手机上下载一个叫网络调试助手的软件,IP为192.168.4.1(貌似都是这个端口),端口为8080,连接成功后发送f或者o可以控制LED小灯开关

该用户从未签到

2#
发表于 2022-5-24 14:42 | 只看该作者
待我去试上一试。Thanks♪(・ω・)ノ

该用户从未签到

3#
发表于 2022-5-24 16:12 | 只看该作者
||ヽ(* ̄▽ ̄*)ノミ|Ю
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-17 16:55 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表