51单片机和ESP8266实现通讯点亮led灯的编程思想和代码

51单片机和ESP8266实现通讯的编程思想和代码

1硬件电路

硬件就不细说咯,注意:51单片机上的TXD(P31)需要连上esp8266的RXD,单片机上的RXD(P3^0)需要连上esp8266的TXD,esp8266的RXD的EN端连接上5V电压(高电平的时候使能)

2编程思想

  在使用esp8266的时候需要在电脑上运用串口助手进行调试(调节波特率,设置工作方式等),当转移到51单片机上使用时,同样需要对ESP8266进行初始化,同时还需要对单片机进行初始化配置(开定时器,开串口中断等)。然后在发送数据的时候,单片机首先将数据发送到SBUF缓存区,然后再发送出去,接收数据时,数据同样先被保存到SBUF缓存区,然后在保存进自己定义的数组中。
  综上,实现WiFi点亮led灯的步骤是:
  1,首先对单片机和esp8266进行初始化,对ESP8266进行初始化的时候就需要先将ESP8266的指令保存到数组中,然后再发送到ESP8266内部。
  单片机初始化代码:
void UartInit(void)		//2400bps@12.000MHz
{
   

	PCON &= 0x7F;		//波特率不倍速
	SCON = 0x50;		//8位数据,可变波特率
	AUXR &= 0xBF;		//定时器1时钟为Fosc/12,即12T
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//清除定时器1模式位
	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
	TL1 = 0xF3;		//设定定时初值
	TH1 = 0xF3;		//设定定时器重装值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
	ES=1;         //开启串口中断
	 EA=1;

对ESP8266进行初始化代码(两部分,第一部分编辑发送字节函数,第二部分将ESP的初始化指令保存在数组中然后在发送出去):
1

void Send_Uart(uchar value)
{
   
      ES=0;         //关闭串口中断
      TI=0;         //清发送完毕中断请求标志位
      SBUF=value;     //发送
      while(TI==0);   //等待发送完毕
      TI=0;         //清发送完毕中断请求标志位
      ES=1;         //允许串口中断

}
void ESP8266_Set(uchar *puf) // 数组指针*puf指向字符串数组               
{
   

      while(*puf!='\0')    //遇到空格跳出循环
      {
   
           Send_Uart(*puf);  //向WIFI模块发送控制指令。
           us_delay(5);
           puf++;      
      }
      us_delay(5);
      Send_Uart('\r');//回车
      us_delay(5);
      Send_Uart('\n');   //换行
      ms_delay(1000);
}   
oid ESP8266_Sent(uchar *puf)      // 数组指针*puf指向字符串数组               
{
   
      ESP8266_Set("AT+CIPSEND=0,4");
      while(*puf!='\0')    //遇到空格跳出循环
      {
   
           Send_Uart(*puf);   
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值