找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6688|回复: 11
打印 上一主题 下一主题
收起左侧

STC15F2K60S2+esp8266 ,手机app控制LED

  [复制链接]
跳转到指定楼层
楼主
单片机是我的业余爱好

准备工作:
单片机:德飞莱STC15F2K60S2板子,Esp8266 WIfi模
手机App:华为官网上下载 易友调试助手
C程序开发工具:Keil uVision3
单片机程序烧制及串口助手:stc-isp-15xx-v6.82E
图 2

经过几个晚上终于调通了,在调试过程中主要有以下问题:
1、硬件连接问题,如下图1 ,这个图可以在串口调试的时候有用,但如果你是用STC15F2K60S2单片机与esp8266调试需要将TX,RX反接,可能是因为我用ESP8266作为服务端导致的,若有大神了解,望不吝赐教。
2、 网上资料因各自硬件不同,所以对c程序调试会碰到各种问题,主要在串口联接及通信上问题多。


       (图1)      

步骤:
1 测试串口与手机app的连接
将ESP8266与单片机模块按图1连接, 将单片机与电脑用USB连接,如图 2 打开串口
在发送缓冲区依次输入以下命令并点发送按钮。
AT+RST  复位模块,成功后返回ready
AT+CIPMODE=1  设为station模式
AT+CWLAP  显示无线列表
AT+CWJAP="TP-LINK_0728","xxx"  加入无线网络  xxx-为你给路由设置的密码。


设置ESP8266为服务端
AT+CIPMUX=1  模块作为服务器时,可以被多个客户端连接,若作为客户端时,可以连接多个服务器。
AT+CIPSERVER=1,333  333为服务器端口
AT+CIFSR  查找服务端ip, 手机app作为客户端连接服务器需要 服务端IP,端口。

打开手机app, 将协议类型设置 为TCP client, 服务器IP为上一步查询结果,端口为333点击连接后,就可以测试了。

2 、单生机连接esp8266与手机通信。
a  将如下c源码用开发工具编译好。
b 将程序烧录到单片机,烧录时要断开ESP8266 的TX,RX连接,否则烧录不成功。
c 烧录完成后,将上图的TX,RX反接到单片机上。
4测试

C程序:
#include <reg52.h>                       //包含头文件
#define uint unsigned int
#define uchar unsigned char
#define RELOAD_COUNT 0xFA         //宏定义波特率发生器的载入值
#define MAIN_Fosc                22118400L        //定义主时钟       
#define        BaudRate1                115200UL        //选择波特率
#define receive_max 20          //串口接收缓冲长度   
#define        Timer1_Reload        (65536UL -(MAIN_Fosc / 4 / BaudRate1))                //Timer 1 重装值, 对应300KHZ
#define        Timer2_Reload        (65536UL -(MAIN_Fosc / 4 / BaudRate1))        //Timer 2 重装值, 对应300KHZ
typedef  unsigned char u8;


/*****************LED灯对应P0口的1个端口*************/
sbit LED0=P3^7;
/************波特率发生器相关功能寄存器的定义****************/
sfr AUXR=0x8E;
sfr BRT=0x9C;
sfr AUXR1=0xA2;
sfr P_SW1 = 0xA2;
/*****************相关变量**************/
uchar Recive_table[receive_max];        //用于接收wifi模块反馈到MCU上的数据
u8 receive_count=0; //接受数据的个数
/*******************************************************************
名称:延时函数
作用:毫秒级延时,微妙级延时函数,为数据收发完成作等待.......
********************************************************************/
void ms_delay(uint t)
{
    uint i,j;
    for(i=t; i>0; i--)
        for(j=110; j>0; j--);
}
/********************************************************************
名称:波特率发生器函数
作用:波特率发生器可以是T1定时器实现,也可以是MCU内部独立的波特率发生器,
各自不同的载入值计算式,具体根据寄存器相关设置来参考计算,以实现
异步串行通讯。(经测试,两种设置方式均可用,可任选一种。)
********************************************************************/
void Uart_Init()//使用定时器1作为波特率发生器
{
    SCON |= 0x40;               //8位数据
    P_SW1 &=  ~0xc0;       //UART1 使用P30 P31口  默认
    TR1 = 0;                    //关闭定时器
    TR1 = 0;                        //波特率使用Timer1产生
    AUXR &= ~0x01;                //S1 BRT Use Timer1;
    TMOD &= ~(1<<6);   //Timer1 set As Timer
    TMOD &= ~0x30;     //Timer1_16bitAutoReload;2
    AUXR |=  (1<<6);        //Timer1 set as 1T mode
    TH1 = (u8)(Timer1_Reload >> 8);
    TL1 = (u8)Timer1_Reload;
    TR1  = 1;
    PS = 1; //高优先级中断
    REN = 1;        //允许接收
    ES  = 1;        //允许中断
    EA = 1;                //允许全局中断
}


//发送一字节
void sendByte(uchar b)
{   ES=0;
    SBUF = b;
    while(!TI);
    TI=0;
    ES=1;
}


//发送字符串
void sendString(uchar *s)
{
    while(*s != '\0') //字符串默认结尾'\0',以此来判断字符串的结束
    {
        sendByte(*s++);
    }
}


/********************************************************************
名称:WIFI模块设置函数
作用: 启动模块,以便可以实现无线接入和控制
********************************************************************/
void ESP8266_Set(uchar *puf) // 数组指针*puf指向字符串数组
{
    sendString(puf);
    ms_delay(10);
    sendString("\r\n");//回车
}
/****************************************************
名称:ESP8266发送数据函数
功能:用于与wifi模块相连的终端发送数据
*****************************************************/
void ESP8266_Sent(uchar *puf)      // 数组指针*puf指向字符串数组
{
    ESP8266_Set("AT+CIPSEND=0,50");
    sendString(puf);
    ms_delay(10);
    sendString("\r\n");   //回车
}


/********************************************************************
名称:主函数
作用:程序的执行入口
********************************************************************/
void main()
{
    ms_delay(50000);
    LED0=0;//关闭LED灯
    Uart_Init();//使用独立的波特率发生器
    ms_delay(500);
    LED0=!LED0;
    ms_delay(500);
    LED0=!LED0;
    ESP8266_Set("AT+CIPMUX=1"); //启动多连接
    ms_delay(500);
    LED0=!LED0;
    ESP8266_Set("AT+CIPSERVER=1,333");//建立server,端口为333
    ms_delay(500);
    LED0=!LED0;
    //允许串口中断
    while(1)
    {


        if(receive_count > 0)//如果接受到数据
        {
            ms_delay(500);
            receive_count = 0;//接收计数清0


            if(Recive_table[9]=='0')
            {
                LED0=!LED0;//0 灯灭
                ms_delay(500);
                ESP8266_Sent("close");
                //  ms_delay(500);
                //        ESP8266_Sent(Recive_table);
                //         ms_delay(500);
            }
            if(Recive_table[9]=='1')
            {
                LED0=!LED0;//0 灯灭
                ms_delay(500);
                ESP8266_Sent("open");
                //  ms_delay(500);
                //        ESP8266_Sent(Recive_table);
                //         ms_delay(500);
            }
            receive_count = 0;//接收计数清0


        }
    }
}




void UART1_int (void) interrupt 4
{
    if(RI)
    {
        RI = 0;//清除接受标志
        Recive_table[receive_count] = SBUF;//将数据存入数组
        if(++receive_count > receive_max) {
            receive_count = 0;//避免溢出
        }
        if((Recive_table[receive_count-1]=='\n'))
            receive_count=0;
    }
    if(TI)
    {}
}





  



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:384334 发表于 2018-8-10 20:58 来自手机 | 只看该作者
学习中,谢谢
回复

使用道具 举报

板凳
ID:355489 发表于 2018-8-11 09:12 | 只看该作者

RE: STC15F2K60S2+esp8266 ,手机app控制LED

连接图[url=]图片[/url]
回复

使用道具 举报

地板
ID:355489 发表于 2018-8-11 09:16 | 只看该作者
wifi与单片机连接图

IMG_20180811_090947.jpg (1.48 MB, 下载次数: 43)

IMG_20180811_090947.jpg
回复

使用道具 举报

5#
ID:387014 发表于 2018-8-21 13:39 | 只看该作者
不错呀
回复

使用道具 举报

6#
ID:359281 发表于 2018-8-22 14:36 | 只看该作者
STC15F2K60S2+esp8266 ,手机app控制LED
回复

使用道具 举报

7#
ID:631878 发表于 2019-11-12 15:14 | 只看该作者
你好,可以用stc89c52吗?
回复

使用道具 举报

8#
ID:110278 发表于 2019-11-19 14:20 | 只看该作者
很好。
回复

使用道具 举报

9#
ID:25310 发表于 2019-11-20 10:46 | 只看该作者
我得借鉴一下了,谢谢楼主分享。
回复

使用道具 举报

10#
ID:560110 发表于 2020-1-15 21:56 | 只看该作者

你好,可以用stc89c52吗?
回复

使用道具 举报

11#
ID:686631 发表于 2020-1-16 13:26 | 只看该作者
单片机起什么作用?可以省掉吧
回复

使用道具 举报

12#
ID:748762 发表于 2020-5-27 17:52 | 只看该作者
手机APP是用易安卓做的吗?有代码吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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