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

51单片机+ESP8266点亮LED小灯

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

; i. U. h5 @1 q, UESP8266模块采用STA工作模式,先在电脑上用串口调试助手,将ESP8266模块设置为STA模式,波特率9600,具体指令如下:
5 L) Y( I; x, k- y  Z1. 设置AP模式 AT+CWMODE=27 {& M' y1 e6 h$ G3 U) R
2. 复位生效 AT+RST
$ I( @2 L) L3 F/ w- N' w; n7 Y3. 配置热点 AT+CWSAP="test","12345678",1,35 F/ k! v! l6 L4 k5 ^' M
这样即使ESP8266复位也不会将这些信息擦除,直接上后面的指令就可以
8 L3 f  W9 S2 V" u; ?) [$ e单片机接ESP8266一定注意两者一定要共地,否则ESP8266不能正常工作,ESP8266电源要3.3V供电,5V的貌似不行,ESP8266的EN脚外接一个1K欧的电阻再接3.3V电源0 }. y- a  Q/ |# ]6 ~0 a
3 x1 p! w4 N6 b  O( ~* i. n
#include<reg52.h>- {# i, c' p  f
typedef unsigned char u8;* }" |" l7 e! s6 O; E6 B
typedef unsigned int u16;/ q# w1 j. C% m: U
sbit LED = P1^0;u8 dat;
* b- E/ U. c2 n2 J& pvoid Init(void);//串口初始化函数
$ g. |1 l, f# {$ q$ e" ]5 Fvoid Delay_ms(u16 n);//延时子函数8 D- v/ Q  \9 K/ n
void Sent_ZF(u8 dat);//发送一个字节
* X9 i: N. v/ V7 ^% {% r# tvoid AT_Send_String(u8 *string);//发送字符串
+ i. A7 u% f' M, Nvoid ESP8266_Init();//ESP8266初始化
: W3 q$ i2 }4 i# `: O6 Cvoid Init(void)                //串口初始化函数, @/ |; D- s) I. }3 l3 u
{4 y# H/ X" W6 k7 Q" n1 E
9 D9 o' A, ^$ o; a
        TMOD=0x20;        //定时器工作方式2,8位自动重载(0010 0000)
5 ?4 z. x, I8 f" y2 @        TL1=0xfd;                //装入初值5 p, ~7 ^" ~5 E: m. [* V; H
        TH1=0xfd;               * t' \& f* i5 T  ?$ L
        TR1=1;        //启动定时器1! F! m7 ^& O  M+ _$ H# a
        REN=1;    //允许串行口接收数据1 D, y8 t# r6 |. O9 o
        SM0=0;    //工作方式1,10位异步收发
7 d( p$ k2 X; L: W, a6 z1 O        SM1=1;   
/ H3 N- S' j8 i        EA=1;   //打开全局中断控制
: \9 Q$ T* s$ K( n. x        ES=1;     //打开串行口中断
( Q; T& Q3 C" ^/ q1 K* k! W5 U  J1 p3 y}
' e7 C+ ]# T  B
4 Q1 k9 o* o: w+ wvoid main()
+ C  A( Q( W. b1 B{  T6 P8 a  I0 Y, T/ O
    Init();
& y+ f. O( f9 X6 t4 k" `0 l7 U& j    ESP8266_Init();4 O# j: ]! i' \
    while(1);1 n, l/ P4 V: O) ~" c. r
}
6 {/ u5 ^; M/ ~5 `
7 O- C% Y- t* q; Xvoid Sent_ZF(u8 dat)  //发送一个字节9 ^8 \2 `7 L0 p
{
# Y& ]$ f( O. O( N" i        ES = 0;5 |9 r2 t' M1 p  }8 b, W
        TI=0;
, \$ p2 _: l5 i        SBUF = dat;1 h- W# J6 C+ v* L$ s. Y1 A
        while(!TI);
3 ^, n5 r7 S9 G# ?        TI = 0;9 S* m' g) R: ?% t
        ES = 1;- `+ _. Y, `0 {' r; H
}) Y  U6 p7 X) O- z% _
void Delay_ms(u16 n)  //延时子程序
& j% f2 W6 f' f8 [3 ?9 I. o{  V+ P' L, e$ V- L6 ^. _
        unsigned int i,j;
& `, m4 P9 K; j+ W3 Q        for(i=0;i<n;i++)
: b/ B- z5 Q8 `. _        for(j=0;j<123;j++);
; n2 I% o- v2 h: }2 K}) o1 r) f+ E5 q
1 ~4 X0 ~+ J2 N( v- t% R) k9 c! m
void AT_Send_String(u8 *string)  //发送字符串
# `  H- u! ~2 L* C/ I{
9 w5 E# O5 @2 w% j. a) W0 H3 _  while(*string!='\0')' R, O/ g1 i8 J$ o: C
  {! f! d5 t# s- ^/ I7 b# v/ ?- G
    Sent_ZF(*string);
4 x% Z  \% n& J$ i+ P        string++;9 W- u) F' a( S' E3 v6 H
                Delay_ms(10);
  t0 S' y$ z- m+ ~9 ^1 Z  }3 F) i% r  i9 I. V# A/ h

" K% W( ~- j/ X4 E$ g}
4 k! j  f- E% B+ r1 ovoid ESP8266_Init()   //ESP8266初始化
' [3 E2 ]( S$ i4 a, e; F{      
/ `8 K- @1 V8 N         AT_Send_String("AT+RST\r\n");  //重启模块6 t+ [6 N4 I0 ?6 r, `! o; y' z
        Delay_ms(10000);
0 }* i* F2 [) c) n+ r# r1 k; [        Delay_ms(10000);& J8 P! v: Q, u4 b( X( g& t; W
    AT_Send_String("AT+CIPMUX=1\r\n");  //设置为多连接模式,启动模块$ }. W% C7 [3 [6 F
        Delay_ms(10000);
: |- n7 l) Z* |' [. J6 Z) I, V        Delay_ms(10000);
2 U5 P0 U0 L6 j( C) i) u6 x+ [  AT_Send_String("AT+CIPSERVER=1,8080\r\n"); //服务器的设置端口
1 Q, @& Q8 O( Y( M5 |5 B+ a          Delay_ms(10000);
. C; }4 `, o( k' N1 M! w4 P" u        Delay_ms(10000);
5 n( K) Q/ E, V}
. g( T8 F% K3 {( B2 X
, G1 S* r* \5 }1 u  tvoid InterruptUART() interrupt 4  //控制小灯开关) K/ a  _* d2 h1 L+ j" w2 Z' a
{
* ]: r+ K& L/ D( [        RI= 0;        //清零
: w9 w- w2 _6 w        dat= SBUF;    //收到的数据占存到SBUF中: P) y. w$ M: f9 P  X3 O
          {4 B3 a6 c: ]) p: ]9 l9 ^" ^  I+ K
         if(dat=='o')
7 I6 v  s+ ^" b+ {  K& T  }                                 {' M$ b* I/ y- W/ C+ z) K: n% f
                                         LED =0;   / p- T! g; o* M7 p- N- \
                                 }
& q. U" ~1 `+ i! N! i                                 if(dat=='f')  
6 k) R/ ~- P2 @- X! n/ E                                 {                                                
1 o$ K8 |+ ~2 C6 i9 T3 n                                    LED =1;8 {6 |! a! s, b) F1 ^' ?
                                 }                                         # u* k! f) p% A( q9 m2 i+ G7 _
          }( z% D0 }' Y" D3 h$ H- A3 t
}; _% [5 d! m: s( }2 j
手机上下载一个叫网络调试助手的软件,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-6-29 13:41 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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