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

51单片机+ESP8266点亮LED小灯

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 R+ h& y" R6 y
ESP8266模块采用STA工作模式,先在电脑上用串口调试助手,将ESP8266模块设置为STA模式,波特率9600,具体指令如下:: U' z. b: X  V2 o* [4 u" y" u2 ?2 F1 G
1. 设置AP模式 AT+CWMODE=2
, H' P7 b& ^5 r3 \, U2. 复位生效 AT+RST% `9 _1 M% e, y% g# r, |
3. 配置热点 AT+CWSAP="test","12345678",1,32 `2 H2 s6 H' k5 _+ U1 X1 X* N/ l
这样即使ESP8266复位也不会将这些信息擦除,直接上后面的指令就可以
5 s% X2 Q/ j( F' _单片机接ESP8266一定注意两者一定要共地,否则ESP8266不能正常工作,ESP8266电源要3.3V供电,5V的貌似不行,ESP8266的EN脚外接一个1K欧的电阻再接3.3V电源/ `% s+ N9 @' y# H* ^

5 m% N% A0 z! ]0 ?  I$ E; Z+ F#include<reg52.h>
4 K' `* Q/ v# C2 Otypedef unsigned char u8;
3 Z0 Y" I: w/ l& l. }; Ptypedef unsigned int u16;
  D. o/ i" O* k1 T9 ?7 b$ Q9 @! ysbit LED = P1^0;u8 dat;
6 ~& ^6 }6 {4 y: S* v7 dvoid Init(void);//串口初始化函数
, ]6 e8 E7 l4 {+ Kvoid Delay_ms(u16 n);//延时子函数
! M3 \' N: g  ?" yvoid Sent_ZF(u8 dat);//发送一个字节
+ N. M4 ]& ]7 `* kvoid AT_Send_String(u8 *string);//发送字符串6 r  d0 M3 `8 h" F" {
void ESP8266_Init();//ESP8266初始化1 G; S+ p6 [, G' `
void Init(void)                //串口初始化函数6 t& Y  a' c. u$ e7 {* q; c
{
" e- f" M9 Q6 B$ F2 r8 Z
& P: Z3 c- Z' |1 A6 H) ^3 \2 j        TMOD=0x20;        //定时器工作方式2,8位自动重载(0010 0000)
  ~) k1 ^+ v& E  F) q& m  B) S        TL1=0xfd;                //装入初值
- [% V( q: T' }$ S. D        TH1=0xfd;               + t7 F6 J% V. p5 j
        TR1=1;        //启动定时器1; K/ A4 E" M8 S0 h$ f7 l4 _: N
        REN=1;    //允许串行口接收数据
* a7 U0 ~# Y8 g7 r1 N# t/ R- T- z! f        SM0=0;    //工作方式1,10位异步收发0 C! H$ x' [/ W/ U5 Z3 c- q# q8 _
        SM1=1;   ) O) P. ^% M- [+ X
        EA=1;   //打开全局中断控制3 X8 j" B  |( V3 y5 O1 [
        ES=1;     //打开串行口中断
' v; v% |& S2 u- O+ j" O2 v}, N) B- L; E7 H" n/ i
+ Y* j- [6 V$ p3 L* R% t! ]
void main()
* U6 d/ l( x7 I% ]/ F& A, n  K; j{
, {6 V; _5 k" F- X( G/ p* }    Init();" p$ u6 g- j4 _, V  b3 K% ?/ x
    ESP8266_Init();) v4 i9 Z5 _6 }7 c. L
    while(1);
, M; I2 C' w  k) D8 _( i}
( e, }  B# K0 z3 V  K6 X& z' t- f/ d1 v
void Sent_ZF(u8 dat)  //发送一个字节) ?3 C: I4 k( m: S+ r
{
" T/ y+ \: W' ?. Q        ES = 0;
9 o4 ]& D" I* p1 \- k% H; a        TI=0;
% e6 y$ ^) A5 g, z& h        SBUF = dat;
" ]3 Y6 e: E7 ^# H$ L, x        while(!TI);
  x4 p) t6 f% C! t% M: b        TI = 0;3 k- y) z8 h; ?
        ES = 1;, [0 N6 A# o1 _- t* t* v: Q- Z
}
9 B0 J' i+ c) s. ovoid Delay_ms(u16 n)  //延时子程序
: J, ~9 V: h9 d. j{% Z. S# U+ @4 G) I( n2 e" V! w% ^
        unsigned int i,j;
3 t6 O5 l/ }: Y- k        for(i=0;i<n;i++)4 Y! ~5 N7 W! C( a# P3 _4 _
        for(j=0;j<123;j++);% _* W3 b, u0 z5 W0 r$ e' N8 c8 v
}
+ r( A/ J. N% p! T8 v" S; O3 p  }$ O4 {) L4 X/ E6 m
void AT_Send_String(u8 *string)  //发送字符串
: o% \+ f) |# ~* H  r8 U{
- X4 D' {( T% w& `# ]. G/ c  while(*string!='\0')
; D- s8 K9 m5 H! Z: ]- Q& r  {
6 f' @6 e* J: ~7 A/ r    Sent_ZF(*string);
- c% |0 i4 s! I        string++;' @1 r8 P; \: K3 `/ J" a
                Delay_ms(10);
6 V" h8 @. l" n  j/ M8 a! n8 c  }; K; X% W! u/ ]0 ~; r) e

5 E* z& A0 i" ?  j2 m}
, }# _% Y7 b# Z2 Y: L+ y$ Pvoid ESP8266_Init()   //ESP8266初始化8 t! ^  v! l; X( L9 V/ \/ Z
{      
5 I% r, u+ ~5 v8 ~% P5 E! B         AT_Send_String("AT+RST\r\n");  //重启模块" n/ ]& ~9 U, Y$ q0 R* ^; ?# s
        Delay_ms(10000);7 `, D9 J# ^7 w$ x, p
        Delay_ms(10000);; J: B6 t5 X- O" H& q, P
    AT_Send_String("AT+CIPMUX=1\r\n");  //设置为多连接模式,启动模块- k' x, j% V) U
        Delay_ms(10000);8 w( {+ C: I- E" D  i. F8 t
        Delay_ms(10000);( Q, l3 O. ^6 H0 F6 q  A
  AT_Send_String("AT+CIPSERVER=1,8080\r\n"); //服务器的设置端口
/ h9 K3 e' R( \; F( h# T; W          Delay_ms(10000);
+ q2 {  D2 r+ b2 k. \+ p) u        Delay_ms(10000);. B8 p1 [+ U/ k' J
}' T8 b8 I  f& z% i
, n6 K: Y* e; `) B2 v' x4 I
void InterruptUART() interrupt 4  //控制小灯开关0 O3 I# ]- W, P! C3 m: P
{; j; o$ c4 Y1 k  K) [& I- l
        RI= 0;        //清零
. W6 j$ M( x: u+ l8 q        dat= SBUF;    //收到的数据占存到SBUF中
: r3 ?1 I4 d3 t4 V          {
' Y0 R8 i: c. s$ l# A' X, v         if(dat=='o')
- R/ R0 d" ^( \  ]                                 {
$ b) M, B/ P" y                                         LED =0;   
# ]- D$ O" g4 y2 V8 ~( H                                 }
0 a& i3 ~; N3 ^0 d! v7 q5 J/ i0 B                                 if(dat=='f')  
/ ^$ |/ O1 A# f                                 {                                                 8 T! O0 h7 |  \! x. P
                                    LED =1;
" l; s2 q! j: i! X+ B                                 }                                         " f# @0 F. w0 Y
          }
& [" i, P% R- {) t! i6 Y}
& L& [3 M# R1 v9 @+ g2 a手机上下载一个叫网络调试助手的软件,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-8-13 10:39 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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