标题:
ESP8266的单片机程序,一页版
[打印本页]
作者:
klhqqcom
时间:
2018-3-11 10:57
标题:
ESP8266的单片机程序,一页版
单片机源程序如下:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcd0=P1^0;
sbit lcd1=P1^1;
sbit lcd2=P1^2;
sbit lcd3=P1^3;
sbit lcd4=P1^4;
sbit lcd5=P1^5;
sbit lcd6=P1^6;
sbit lcd7=P1^7;
sbit key_config_Ap=P2^1;
sbit key_config_Air=P2^3;
uchar usartbuf[50]={0};
uchar sn,checksum,usrtlen,usarrtflag,num_usart;
uchar send_3_config,send_7_error,send_8_dev,send_9_dev;
/*wifi模组请求设备信息,mcu回复*/
uchar mcu_send_1[75]={
0xff,0xff,0x00,0x47,0x02,0x55,0x00,0x00,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,
0x34,0x39,0x33,0x35,0x33,0x31,0x33,0x36,
0x30,0x66,0x38,0x66,0x34,0x32,0x37,0x64,
0x38,0x64,0x33,0x34,0x35,0x39,0x36,0x62,
0x33,0x37,0x33,0x62,0x38,0x61,0x39,0x30,
0x00,0x00,0x55};
/*wifi模组与设备mcu心跳,mcu回复*/
uchar mcu_send_2[9]={0xff,0xff,0x00,0x05,0x08,0x55,0x00,0x00,0x55};
/*设备mcu通知wifi模组进入配置模式,mcu发送*/
uchar mcu_send_3[10]={0xff,0xff,0x00,0x06,0x09,0x55,0x00,0x00,0x11,0x55};
/*设备mcu重置wifi,mcu发送*/
uchar mcu_send_4[9]={0xff,0xff,0x00,0x05,0x0b,0x55,0x00,0x00,0x55};
/*wifi模组向设备通知工作状态变化,mcu回复*/
uchar mcu_send_5[9]={0xff,0xff,0x00,0x05,0x0e,0x55,0x00,0x00,0x55};
/*wifi模组请求重启mcu,mcu回复*/
uchar mcu_send_6[9]={0xff,0xff,0x00,0x05,0x10,0x55,0x00,0x00,0x55};
/*非法消息通知,mcu回复*/
uchar mcu_send_7[10]={0xff,0xff,0x00,0x06,0x12,0x55,0x00,0x00,0x11,0x55};
/*wifi模组读取设备当前状态,mcu回复*/
uchar mcu_send_8[11]={0xff,0xff,0x00,0x07,0x04,0x55,0x00,0x00,0x03,0x11,0x55};
/*设备向wifi主动上报当前状态,mcu发送*/
uchar mcu_send_9[11]={0xff,0xff,0x00,0x07,0x05,0x55,0x00,0x00,0x04,0x11,0x55};
/*wifi模组控制设备,mcu回复*/
uchar mcu_send_10[9]={0xff,0xff,0x00,0x05,0x04,0x55,0x00,0x00,0x55};
/*mcu通知wifi进入可绑定模式,mcu发送*/
uchar mcu_send_12[9]={0xff,0xff,0x00,0x05,0x15,0x55,0x00,0x00,0x55};
/**********************************************************************/
/**********************************************************************/
/**********************************************************************/
/**********************************************************************/
/**********************************************************************/
/**********************************************************************/
/**********************************************************************/
/**********************************************************************/
/*延时函数*/
void Delay_ms(unsigned char z)
{
unsigned char x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*初始化函数*/
void Usart_Init()
{
TMOD=0x21; //定时器0工作方式1,定时器1工作方式2
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=0xfd;
TL1=0xfd;
TR0=1;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
/*mcu发送数据程序*/
void Usart_SendArrang(uchar *dat,uchar len)
{
unsigned char i;
for(i=0;i<len;i++)
{
ES=0;
SBUF=dat[i];
while(!TI);
TI=0;
ES=1;
}
}
/*定时器0中断*/
void Timer0_Int() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
num_usart++;
}
/*串口中断函数*/
void Usart_Int() interrupt 4
{
num_usart=0;
ET0=1;
usartbuf[usrtlen++]=SBUF;
if(usrtlen==2)
{
if(usartbuf[0]!=0xff||usartbuf[1]!=0xff)
{
usrtlen=0;
}
}
RI=0;
}
/*改变设备状态*/
void Control_Mcu()
{
switch(usartbuf[9])
{
case 0x01:
if(usartbuf[10]==0x01)
{
lcd0=0;
}
else if(usartbuf[10]==0)
{
lcd0=1;
}
break;
case 0x02:
if(usartbuf[10]==0x02)
{
lcd1=0;
}
else if(usartbuf[10]==0)
{
lcd1=1;
}
break;
case 0x04:
if(usartbuf[10]==0x04)
{
lcd2=0;
}
else if(usartbuf[10]==0)
{
lcd2=1;
}
break;
case 0x08:
if(usartbuf[10]==0x08)
{
lcd3=0;
}
else if(usartbuf[10]==0)
{
lcd3=1;
}
break;
case 0x10:
if(usartbuf[10]==0x10)
{
lcd4=0;
}
else if(usartbuf[10]==0)
{
lcd4=1;
}
break;
case 0x20:
if(usartbuf[10]==0x20)
{
lcd5=0;
}
else if(usartbuf[10]==0)
{
lcd5=1;
}
break;
case 0x40:
if(usartbuf[10]==0x40)
{
lcd6=0;
}
else if(usartbuf[10]==0)
{
lcd6=1;
}
break;
case 0x80:
if(usartbuf[10]==0x80)
{
lcd7=0;
}
else if(usartbuf[10]==0)
{
lcd7=1;
}
break;
}
}
/*处理串口数据*/
void Usart_Communication()
{
uchar i;
if(num_usart==10)
{
ET0=0;
num_usart=0;
usarrtflag=1;
REN=0;
}
if(usarrtflag)
{
sn=usartbuf[5];
checksum=0;
switch(usartbuf[4])
{
case 0x01:
mcu_send_1[5]=sn;
for(i=2;i<74;i++)
{
checksum=checksum+mcu_send_1[i];
}
checksum=checksum%256;
mcu_send_1[74]=checksum;
Usart_SendArrang(mcu_send_1,75);
break;
case 0x07:
mcu_send_2[5]=sn;
for(i=2;i<8;i++)
{
checksum=checksum+mcu_send_2[i];
}
checksum=checksum%256;
mcu_send_2[8]=checksum;
Usart_SendArrang(mcu_send_2,9);
break;
case 0x0a:
break;
case 0x0c:
break;
case 0x0d:
mcu_send_5[5]=sn;
for(i=2;i<8;i++)
{
checksum=checksum+mcu_send_5[i];
}
checksum=checksum%256;
mcu_send_5[8]=checksum;
Usart_SendArrang(mcu_send_5,9);
break;
case 0x0f:
mcu_send_6[5]=sn;
for(i=2;i<8;i++)
{
checksum=checksum+mcu_send_6[i];
}
checksum=checksum%256;
mcu_send_6[8]=checksum;
Usart_SendArrang(mcu_send_6,9);
break;
case 0x11:
mcu_send_7[5]=sn;
send_7_error=usartbuf[8];
mcu_send_7[8]=send_7_error;
for(i=2;i<9;i++)
{
checksum=checksum+mcu_send_7[i];
}
checksum=checksum%256;
mcu_send_7[9]=checksum;
Usart_SendArrang(mcu_send_7,10);
break;
case 0x03:
if(usartbuf[3]=0x06&&usartbuf[8]==0x02)
{
mcu_send_8[5]=sn;
send_8_dev=~P1;
mcu_send_8[9]=send_8_dev;
for(i=2;i<10;i++)
{
checksum=checksum+mcu_send_8[i];
}
checksum=checksum%256;
mcu_send_8[10]=checksum;
Usart_SendArrang(mcu_send_8,11);
break;
}
if(usartbuf[3]=0x08&&usartbuf[8]==0x01)
{
Control_Mcu(); //收到数据后,mcu控制设备函数
mcu_send_10[5]=sn;
for(i=2;i<8;i++)
{
checksum=checksum+mcu_send_10[i];
}
checksum=checksum%256;
mcu_send_10[8]=checksum;
Usart_SendArrang(mcu_send_10,9); //mcu回复
mcu_send_9[5]=sn;
send_9_dev=~P1;
mcu_send_9[9]=send_9_dev;
for(i=2;i<10;i++)
{
checksum=checksum+mcu_send_9[i];
}
checksum=checksum%256;
mcu_send_9[10]=checksum;
Usart_SendArrang(mcu_send_9,11); //mcu主动上报设备状态
break;
}
case 0x06:
break;
case 0x16:
break;
}
usrtlen=0;
usarrtflag=0;
REN=1;
}
}
/*按键配置设备入网*/
void Key_Usart_Config()
{
uchar i;
checksum=0;
if(key_config_Ap==0) //SoftAp配置模式
{
Delay_ms(10);
if(key_config_Ap==0)
{
REN=0;
sn=0x00;
mcu_send_3[5]=sn;
for(i=2;i<9;i++)
{
checksum=checksum+mcu_send_3[i];
}
checksum=checksum%256;
mcu_send_3[9]=checksum;
send_3_config=1;
mcu_send_3[8]=send_3_config;
Usart_SendArrang(mcu_send_3,10);
while(key_config_Ap==0);
REN=1;
}
}
if(key_config_Air==0) //AirLink配置模式
{
Delay_ms(10);
if(key_config_Air==0)
{
REN=0;
sn=0x00;
mcu_send_3[5]=sn;
for(i=2;i<9;i++)
{
checksum=checksum+mcu_send_3[i];
}
checksum=checksum%256;
mcu_send_3[9]=checksum;
send_3_config=2;
mcu_send_3[8]=send_3_config;
Usart_SendArrang(mcu_send_3,10);
while(key_config_Air==0);
REN=1;
}
}
}
/*主函数*/
void main()
{
Usart_Init();
while(1)
{
Key_Usart_Config();
Usart_Communication();
}
}
复制代码
所有资料51hei提供下载:
main.rar
(1.85 KB, 下载次数: 34)
2018-3-11 10:55 上传
点击文件名下载附件
8266的单片机程序
下载积分: 黑币 -5
作者:
yi1liang
时间:
2018-3-11 21:36
谢谢分享。
作者:
雨刻心中
时间:
2019-10-28 09:04
yi1liang 发表于 2018-3-11 21:36
谢谢分享。
请问有stm32一页的吗
作者:
wardwang
时间:
2019-10-29 08:59
好东西啊
作者:
依恋晓
时间:
2019-10-29 11:27
多谢分亨
作者:
zl11054
时间:
2019-11-7 13:26
谢谢分享 正需要
作者:
zctwss321
时间:
2019-11-10 11:13
具体51的啥单片机啊,1T还是12T的? 还有哪些16进制的数组怎么来的啊,比如mcu_send_1[75],mcu_send_2[],mcu_send_3[],mcu_send_4[],mcu_send_5[],mcu_send_6[];还有你的原理图呢?实物连接图呢?好哥哥 ,能发一份吗
作者:
zctwss321
时间:
2019-11-10 11:18
哥,原理图和实物图呢?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1