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

51单片机+ESP8266点亮LED小灯

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
$ Y' u/ O! |& z' M0 D8 ]
ESP8266模块采用STA工作模式,先在电脑上用串口调试助手,将ESP8266模块设置为STA模式,波特率9600,具体指令如下:
: s. d3 r' m4 S0 ^6 D: O1 p: Z; ~3 P1. 设置AP模式 AT+CWMODE=2
4 l0 v& d4 E( v- K2 X2. 复位生效 AT+RST
$ x% W8 V6 `3 S7 s8 ~: N$ s8 @3. 配置热点 AT+CWSAP="test","12345678",1,3- N4 Z7 a9 @9 |+ z+ H- d, M+ {
这样即使ESP8266复位也不会将这些信息擦除,直接上后面的指令就可以
( P/ w; r, t* R% O3 I& ~' L单片机接ESP8266一定注意两者一定要共地,否则ESP8266不能正常工作,ESP8266电源要3.3V供电,5V的貌似不行,ESP8266的EN脚外接一个1K欧的电阻再接3.3V电源% \8 G6 R/ _7 O5 y. q

1 i( a, ?0 a: y# n' K7 w#include<reg52.h>
# k+ c' m& n8 a9 n/ N9 M: Q/ wtypedef unsigned char u8;
3 H* O" k% T) ^* l0 htypedef unsigned int u16;$ `& ?/ Q% l' l- V0 n
sbit LED = P1^0;u8 dat;$ H1 c+ ?. z8 }
void Init(void);//串口初始化函数
2 y+ ^+ `( ]- q. K# zvoid Delay_ms(u16 n);//延时子函数
$ u, z7 B2 F; z9 f# J4 C! S6 Kvoid Sent_ZF(u8 dat);//发送一个字节
! T$ b+ }3 X$ k' ^void AT_Send_String(u8 *string);//发送字符串
: t3 R" e' {1 ?, Z1 ]; |+ ivoid ESP8266_Init();//ESP8266初始化& N( [( m. t% R5 }5 x
void Init(void)                //串口初始化函数7 J' h) k8 ^% s7 i5 h0 M; W& x
{/ `( j! d3 A8 d2 C
3 Y; b% i; _% z
        TMOD=0x20;        //定时器工作方式2,8位自动重载(0010 0000)& T$ @# S! f" i# h3 F, C
        TL1=0xfd;                //装入初值
. Z( I" L; I0 z3 c        TH1=0xfd;               ; p, q# v2 ~' q2 i0 ^  h
        TR1=1;        //启动定时器1
7 J. J; Q$ P8 m& R" Z- J: U# ~        REN=1;    //允许串行口接收数据
1 `7 j4 p0 v, V        SM0=0;    //工作方式1,10位异步收发
6 V9 ]: V4 G+ }; `2 P- M        SM1=1;   2 r, w; Q; _0 D$ X6 A$ A, m
        EA=1;   //打开全局中断控制0 \. Z  l4 U# [: f" ?
        ES=1;     //打开串行口中断
1 N+ N+ ^& Q. f3 l}3 H: C& f. A" w" Y: \0 j

, ?; q% h: N- ?void main()
- U7 K0 a( G+ r{
9 `% ~: H" R; w( `    Init();- }, }" D; Q, T8 S, n
    ESP8266_Init();0 _3 @9 _% d' F
    while(1);
+ L) O, ]( O8 U( z( E9 R}5 p$ U( V9 ~+ h# o# i
9 G( m) P% P$ Q6 f0 x. r; {& @
void Sent_ZF(u8 dat)  //发送一个字节
! C8 v: l. y# @  [{
4 L6 I9 e2 J1 Z: `( L! a8 s: v        ES = 0;
! }( b# K# P) e        TI=0;" a3 o1 m8 y* V9 [# m" ^1 I
        SBUF = dat;6 y5 {: L/ j8 P8 p: ?5 V9 Q
        while(!TI);
; e4 t: t; R1 E$ s% G3 W        TI = 0;
6 Z% N% Y* Y- Z7 ^4 U" i        ES = 1;
3 N# d: @0 _0 z}3 V3 n. b) [+ c% }& {- g
void Delay_ms(u16 n)  //延时子程序: X. R8 M3 b& {
{  r  V( e: Y: }
        unsigned int i,j;7 N/ F+ D! o7 s% K( t! ]) A" \7 ]! E
        for(i=0;i<n;i++), Y% {5 q8 R8 y0 b0 q
        for(j=0;j<123;j++);5 G; B9 \2 b+ y' \+ N
}9 E0 O9 k8 H- k& E
  V+ {: s6 H, {: W
void AT_Send_String(u8 *string)  //发送字符串
: Q! Y9 w1 V2 a( `{
& G0 o# V( }4 ~8 B4 J" o# J  while(*string!='\0')
2 J7 w. f) H! x9 c9 {2 F  {8 R) R. \5 _6 N8 g
    Sent_ZF(*string);
! N, e9 F, z$ i7 W        string++;& _& h+ O* K$ K8 S. N+ z6 i) I" J
                Delay_ms(10);
! w$ L5 o* d, i. ]2 `  }' ^% \& m" Z- W7 n

4 C( S0 I# B% r( D  }) M& P( ]4 X; u6 J}
( E" j& ]6 y+ |/ I* K+ q5 s5 @3 Kvoid ESP8266_Init()   //ESP8266初始化4 _% a' F; T& k. F
{      
+ i" i( m' b( ^+ P) U         AT_Send_String("AT+RST\r\n");  //重启模块
4 C- W4 F' Q! u! R+ l+ C        Delay_ms(10000);  B. w7 w! I) ?& X9 D7 W1 b' V
        Delay_ms(10000);& F& x) A) q. `( Z1 C
    AT_Send_String("AT+CIPMUX=1\r\n");  //设置为多连接模式,启动模块
) U6 f' @4 h/ S        Delay_ms(10000);
5 [$ m2 h& ]7 S" h        Delay_ms(10000);5 a4 Q0 h8 e) G4 u' w% u& y
  AT_Send_String("AT+CIPSERVER=1,8080\r\n"); //服务器的设置端口
2 L1 `, C( L" q/ O" a1 a          Delay_ms(10000);* I4 W7 o6 x* \2 v# |4 \0 B
        Delay_ms(10000);+ Q6 s5 N' T4 ?9 v
}$ g! q+ b4 j0 i3 V% f
4 X3 `6 `5 A' U' v& A, l
void InterruptUART() interrupt 4  //控制小灯开关
' c% X5 g+ @) c) ^: z. c2 Q2 u{
; e7 O* Z2 N$ Q& [/ z        RI= 0;        //清零; R: S1 v. A- F) Q
        dat= SBUF;    //收到的数据占存到SBUF中# m  O9 R' K- }9 r- l% r. I- R* u+ ?
          {3 W; M; k& _6 T  f7 ]) }
         if(dat=='o')
6 K8 a$ W- @0 z, V$ s                                 {
) n, m: e6 D/ Z: s9 x1 l2 L                                         LED =0;   ' P$ M% ~4 n/ z7 |) `5 F
                                 }
% c, ]2 m9 `1 I/ y7 a. o' L% ~: z                                 if(dat=='f')  * ]* T( M% j! v0 Y! m# S
                                 {                                                
% |# }! C2 X' z' |7 r3 h% V) t3 Y                                    LED =1;
' J1 h+ S1 L: ?                                 }                                         
1 l$ c' g: I- h8 p* }7 G! R) _/ m' ~; v          }) S5 h. P2 G" J- I- V
}
9 N. x, N# s, {& q, k手机上下载一个叫网络调试助手的软件,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-10-8 23:02 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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