欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
通過機智云控制8盞燈的亮滅
[打印本頁]
作者:
syl1
時間:
2019-12-1 14:28
標題:
通過機智云控制8盞燈的亮滅
通過機智云控制8盞燈的亮滅
單片機源程序如下:
#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提供下載:
c51連機智云控制8盞燈的亮滅.zip
(202.38 KB, 下載次數: 13)
2019-12-1 14:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
無理
時間:
2020-1-26 22:48
樓主你的會報這個錯嗎main.c(425): error C249: 'DATA': SEGMENT TOO LARGE
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1