标题:
STC15单片机利用ESP8266控制LED 源程序
[打印本页]
作者:
老古董2号
时间:
2020-9-15 10:17
标题:
STC15单片机利用ESP8266控制LED 源程序
输入ESPKLED,LED灯亮,输入ESPGLED,灯灭
单片机源程序如下:
/**************************************************
*
* 平台:keil5 + STC154K58S
* 功能:输入ESPKLED,LED灯亮,输入ESPGLED,灯灭
* 日期:2020年7月22日
*
***************************************************/
# include "config.h"
# include "GPIO.h"
# include "delay.h"
# include "USART.h"
# include <string.h>
# define uchar unsigned char
# define uint unsigned int
uchar s;
uchar flag;
uchar a;
sbit LED = P0^0;
void delay() //延时1000ms
{
uchar i;
for(i=0;i<5;i++)
{
delay_ms(200);
}
}
void GPIO_init() //将P3口设置为准双向口
{
GPIO_InitTypeDef GPIO_init3;
GPIO_init3.Mode = GPIO_PullUp;
GPIO_init3.Pin = GPIO_Pin_All;
GPIO_Inilize(GPIO_P3, &GPIO_init3);
}
/******************************************************
*
* 功能:串口初始化
* 描述:8位波特率可变,使用定时器1,波特率为115200
* 使用P30,P31口
*
*
*******************************************************/
void USART_init1()
{
COMx_InitDefine USART_init1;
USART_init1.UART_Mode = UART_8bit_BRTx; //模式
USART_init1.UART_BRT_Use = BRT_Timer1; //使用定时器1作为波特率发生器
USART_init1.UART_BaudRate = 115200UL; //波特率
USART_init1.Morecommunicate = DISABLE; //多机通讯禁止
USART_init1.UART_RxEnable = ENABLE; //允许接收
USART_init1.BaudRateDouble = DISABLE; //波特率不加倍
USART_init1.UART_Interrupt = ENABLE; //允许中断
USART_init1.UART_Polity = PolityLow; //优先级低(默认)
USART_init1.UART_P_SW = UART1_SW_P30_P31; //USART端口
USART_init1.UART_RXD_TXD_Short = DISABLE; //内部短路RXD与TXD, 做中继
USART_Configuration(USART1, &USART_init1);
}
/****************************************************
*
* 功能:ESP8266模块初始化
* 描述:利用AT指令,
* 设置WIFI名称为:ESPESP1
* 密码:12345678
* 端口:3333
* IP地址:192.168.4.1(默认)
*
*****************************************************/
void ESP8266_init()
{
for(s=0;s<3;s++) //多进行几次初始化
{
PrintString1("AT\r\n");
PrintString1("AT+RST\r\n");
delay();
PrintString1("AT+CWMODE=3\r\n");
delay();
PrintString1("AT+CWSAP=\"ESPESP1\",\"12345678\",5,3\r\n");
delay();
PrintString1("AT+RST\r\n");
delay();
PrintString1("AT+CIPMUX=1\r\n");
delay();
PrintString1("AT+CIPSERVER=1,3333\r\n");
delay();
}
}
/**************************************
功能描述:握手成功与否函数
入口参数:uint8 *a
返回值:位
***************************************/
bit Hand(uchar *a)
{
if(strstr(RX1_Buffer,a)!=NULL) //判断字符串a是否是字符串Rec_Buf的子串
return 1; //如果字符串a是字符串Rec_Buf的子串
else
return 0; //如果字符串a不是字符串Rec_Buf的子串
}
void main()
{
GPIO_init();
delay_ms(10);
USART_init1();
ES = 1; //允许串口1中断
EA = 1; //允许总中断
delay_ms(20);
ESP8266_init();
while (1)
{
delay_ms(1);
if(COM1.RX_TimeOut > 0) //超时计数
{
if(--COM1.RX_TimeOut == 0)
{
if(COM1.RX_Cnt > 0)
{
if(Hand("ESPKLED"))
{
ES = 0; //关闭串口1中断
LED = 0;
ES = 1; //打开串口1中断
}
if(Hand("ESPGLED"))
{
ES = 0; //关闭串口1中断
LED = 1;
ES = 1; //打开串口1中断
}
}
COM1.RX_Cnt = 0;
}
}
}
}
复制代码
所有程序51hei提供下载:
ESP8266终极版控制LED.zip
(121.54 KB, 下载次数: 155)
2020-9-15 10:14 上传
点击文件名下载附件
ESP8266
下载积分: 黑币 -5
作者:
suoguocs
时间:
2022-1-17 10:39
这个怎么没人赞呢?
作者:
cmyldd
时间:
2022-4-10 09:10
如果可以连接阿里云就更加完美了
作者:
wjhhhhh
时间:
2022-7-27 13:22
suoguocs 发表于 2022-1-17 10:39
这个怎么没人赞呢?
如果直接用8266控制,节省STC15单片机,可能就会有人点赞; 如果连接阿里云就更加完美; 如果直接使用每月10圆以下的sim卡+家用路由器+8266来控制,可能会得到大大的赞。
作者:
zyb572168
时间:
2022-8-1 10:03
正好用的上,学习学习
作者:
小新
时间:
2022-9-19 07:55
cmyldd 发表于 2022-4-10 09:10
如果可以连接阿里云就更加完美了
我连接的百度云
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1