求教,串口能显示温湿度但是app不行
e4a吧
全部回复
仅看楼主
level 1
串口连接单片机能显示温湿度,串口连接wifi能用at指令控制,app连接上WiFi模块且连接成功能看到esp8266模块蓝灯有规律闪烁,我猜是在传数据,但是app上无法显示
贴一下代码
e4a
事件 客户1.收到数据(数据 为 字节型())
编辑框3.内容 = 编辑框3.内容 &字节到文本(数据 ,"GBK")
结束 事件
51单片机
/********************************************************************/
/* WIFIÎÞÏß´«ÊäÊÖ»úÏÔʾ*/
/********************************************************************/
#include <reg52.h>
#include<intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
/*****************Ïà¹Ø±äÁ¿**************/
unsigned char Key_Value=0;
unsigned char code RUN1[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//Õýת
unsigned char code RUN2[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//·´×ª
uint Receive,i,xm0,xm1,xm2; //ζȴ«ËÍÓÃ
long s;
uint xm3,xm4,xm5; //ʪ¶È´«ËÍÓÃ
long s1;
uchar Recive_table[40]; //ÓÃÓÚ½ÓÊÕwifiÄ£¿é·´À¡µ½MCUÉϵÄÊý¾Ý
uchar code ta[]="0123456789- "; //²âÊÔÒ»ÏÂ
uchar table[]="ζȣº00.0 C ʪ¶È£º00.0 %";//´«ËÍÓö¨Î»Ä£°å
void delay (int a)//ºÁÃë¼¶ÑÓʱ
{
int x,y;
for(x=a;x>0;x--)
for(y=110;y>0;y--);
}
void delayus(int t)//΢Ãë¼¶ÑÓʱ
{
while(t--);
}
/*******************************************************************
Ãû³Æ£ºÑÓʱº¯Êý ×÷Ó㺺ÁÃë¼¶ÑÓʱ£¬Î¢Ãî¼¶ÑÓʱº¯Êý£¬ÎªÊý¾ÝÊÕ·¢Íê³É×÷µÈ´ý.......
********************************************************************/
void ms_delay(uint t)
{
uint i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
void us_delay(uchar t)
{
while(t--);
}
/*------------------------------------------------
uSÑÓʱº¯Êý£¬º¬ÓÐÊäÈë²ÎÊý unsigned char t£¬ÎÞ·µ»ØÖµ
unsigned char ÊǶ¨ÒåÎÞ·ûºÅ×Ö·û±äÁ¿£¬ÆäÖµµÄ·¶Î§ÊÇ
0~255 ÕâÀïʹÓþ§Õñ12M£¬¾«È·ÑÓʱÇëʹÓûã±à,´óÖÂÑÓʱ
³¤¶ÈÈçÏ T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t);
/*------------------------------------------------
mSÑÓʱº¯Êý£¬º¬ÓÐÊäÈë²ÎÊý unsigned char t£¬ÎÞ·µ»ØÖµ
unsigned char ÊǶ¨ÒåÎÞ·ûºÅ×Ö·û±äÁ¿£¬ÆäÖµµÄ·¶Î§ÊÇ
0~255 ÕâÀïʹÓþ§Õñ12M£¬¾«È·ÑÓʱÇëʹÓûã±à
------------------------------------------------*/
void DelayMs(unsigned char t);
/*------------------------------------------------
uSÑÓʱº¯Êý£¬º¬ÓÐÊäÈë²ÎÊý unsigned char t£¬ÎÞ·µ»ØÖµ
unsigned char ÊǶ¨ÒåÎÞ·ûºÅ×Ö·û±äÁ¿£¬ÆäÖµµÄ·¶Î§ÊÇ
0~255 ÕâÀïʹÓþ§Õñ12M£¬¾«È·ÑÓʱÇëʹÓûã±à,´óÖÂÑÓʱ
³¤¶ÈÈçÏ T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mSÑÓʱº¯Êý£¬º¬ÓÐÊäÈë²ÎÊý unsigned char t£¬ÎÞ·µ»ØÖµ
unsigned char ÊǶ¨ÒåÎÞ·ûºÅ×Ö·û±äÁ¿£¬ÆäÖµµÄ·¶Î§ÊÇ
0~255 ÕâÀïʹÓþ§Õñ12M£¬¾«È·ÑÓʱÇëʹÓûã±à
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--) //´óÖÂÑÓʱ1mS
{
DelayUs2x(245);
DelayUs2x(245);
}
}
sbit Data=P3^2; //¶¨ÒåÊý¾ÝÏß
uchar rec_dat[11]; //ÓÃÓÚÏÔʾµÄ½ÓÊÕÊý¾ÝÊý×é
uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
void DHT11_delay_us(uchar n)
{
while(--n);
}
void DHT11_delay_ms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void DHT11_start()
{
Data=1;
DHT11_delay_us(2);
Data=0;
DHT11_delay_ms(20); //ÑÓʱ18msÒÔÉÏ
Data=1;
DHT11_delay_us(30);
}
uchar DHT11_rec_byte() //½ÓÊÕÒ»¸ö×Ö½Ú
{
uchar i,dat=0;
for(i=0;i<8;i++) //´Ó¸ßµ½µÍÒÀ´Î½ÓÊÕ8λÊý¾Ý
{
while(!Data); ////µÈ´ý50usµÍµçƽ¹ýÈ¥
DHT11_delay_us(8); //ÑÓʱ60us£¬Èç¹û»¹Îª¸ßÔòÊý¾ÝΪ1£¬·ñÔòΪ0
dat<<=1; //ÒÆÎ»Ê¹ÕýÈ·½ÓÊÕ8λÊý¾Ý£¬Êý¾ÝΪ0ʱֱ½ÓÒÆÎ»
if(Data==1) //Êý¾ÝΪ1ʱ£¬Ê¹dat¼Ó1À´½ÓÊÕÊý¾Ý1
dat+=1;
while(Data); //µÈ´ýÊý¾ÝÏßÀµÍ
}
return dat;
}
void Uart_Init()//ʹÓö¨Ê±Æ÷1×÷Ϊ²¨ÌØÂÊ·¢ÉúÆ÷£¨STC89C52¡¢STC89C51¡¢AT89C51µÈ¾ù¿É£©
{
TMOD = 0x21;
SCON = 0x50; //ÉèÖô®Ðз½Ê½
TH1 = 0xFD; //²¨ÌØÂÊ9600
TL1 = TH1;
PCON = 0x00;
EA = 1;//×ÜÖжϴò¿ª
ES = 1;//¿ª´®¿ÚÖжÏ
TR1 = 1;//Æô¶¯¶¨Ê±Æ÷1
}
/********************************************************************
Ãû³Æ£º´®¿Ú·¢Ëͺ¯Êý ¹¦ÄÜ£ºMCUÏòÎÞÏßWIFIÄ£¿éESP8266·¢ËÍÊý¾Ý
********************************************************************/
void Send_Uart(uchar value)
{
ES=0; //¹Ø±Õ´®¿ÚÖжÏ
TI=0; //Çå·¢ËÍÍê±ÏÖжÏÇëÇó±ê־λ
SBUF=value; //·¢ËÍ
while(TI==0); //µÈ´ý·¢ËÍÍê±Ï
TI=0; //Çå·¢ËÍÍê±ÏÖжÏÇëÇó±ê־λ
ES=1; //ÔÊÐí´®¿ÚÖжÏ
TH0=0;
TL0=0;
}
/********************************************************************
Ãû³Æ£ºWIFIÄ£¿éÉèÖú¯Êý ×÷ÓÃ: Æô¶¯Ä£¿é£¬ÒÔ±ã¿ÉÒÔʵÏÖÎÞÏß½ÓÈëºÍ¿ØÖÆ
********************************************************************/
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'); //»»ÐÐ
}
void motor_ffw()
{
unsigned char i;
for (i=0; i<8; i++) //Ò»¸öÖÜÆÚת3.75*8=30¶È
{
P2 = RUN1[i]&0x1f; //È¡Êý¾Ý
delay(2); //µ÷½ÚתËÙ
}
}
//²½½øµç»úÇý¶¯ ·´×ª
void motor_ffz()
{
unsigned char i;
for (i=0; i<8; i++) //Ò»¸öÖÜÆÚת3.75*8=30¶È
{
P2 = RUN2[i]&0x1f; //È¡Êý¾Ý
delay(2); //µ÷½ÚתËÙ
}
}
/********************************************************************
Ãû³Æ£ºÖ÷º¯Êý ×÷Ó㺳ÌÐòµÄÖ´ÐÐÈë¿Ú
********************************************************************/
void main()
{
Uart_Init();//²¨ÌØÂÊ·¢ÉúÆ÷
ms_delay(10);
ESP8266_Set("AT+CWMODE=2\r\n"); //ÉèÖ÷ÓÉÆ÷ģʽ1 station,ģʽ2 AP,ģʽ3 station+AP»ìºÏģʽ
ms_delay(50);
ESP8266_Set("AT+CIPMUX=1\r\n");
ms_delay(50);
ESP8266_Set("AT+CIPSERVER=1,8080\r\n");
ms_delay(50);
ESP8266_Set("AT+CIPSTO=0\r\n");
ms_delay(50); //ÔÊÐí´®¿ÚÖжÏ
while(1)
{
///////////////////////////////////////////////////////////////////////////
DHT11_start();//¶ÁζÈ
if(Data==0)
{
while(Data==0); //µÈ´ýÀ¸ß
DHT11_delay_us(40); //À¸ßºóÑÓʱ80us
R_H=DHT11_rec_byte(); //½ÓÊÕʪ¶È¸ß°Ëλ
R_L=DHT11_rec_byte(); //½ÓÊÕʪ¶ÈµÍ°Ëλ
T_H=DHT11_rec_byte(); //½ÓÊÕζȸ߰Ëλ
T_L=DHT11_rec_byte(); //½ÓÊÕζȵͰËλ
revise=DHT11_rec_byte(); //½ÓÊÕУÕýλ
DHT11_delay_us(25); //½áÊø
if((R_H+R_L+T_H+T_L)==revise) //УÕý
{
RH=R_H;
RL=R_L;
TH=T_H;
TL=T_L;
}
}
ms_delay(500);
//´¦ÀíζȲ¿·Ö
s=T_H*10;
xm0=(s/100)%10;//´æ·Å°ÙλÊý¾Ý
xm1=(s/10)%10; //´æ·ÅʮλÊý¾Ý
xm2=s%10; //´æ·Å¸öλÊý¾Ý
table[6]=ta[xm0];
table[7]=ta[xm1];
table[9]=ta[xm2];
//´¦Àíʪ¶È²¿·Ö
s1=R_H*10;
xm3=(s1/100)%10;//´æ·Å°ÙλÊý¾Ý
xm4=(s1/10)%10; //´æ·ÅʮλÊý¾Ý
xm5=s1%10; //´æ·Å¸öλÊý¾Ý
table[20]=ta[xm3];
table[21]=ta[xm4];
table[23]=ta[xm5];
ESP8266_Set(table);//Êý¾Ý·¢ËͳöÈ¥
ms_delay(500);
}
}
/*********************************************************************
Ãû³Æ£º´®ÐÐͨѶÖÐ¶Ï ×÷Ó㺷¢ËÍ»ò½ÓÊÕ½áÊøºó½øÈë¸Ãº¯Êý£¬¶ÔÏàÓ¦µÄ±ê־λÈí¼þÇå0£¬ÊµÏÖÄ£¿é¶ÔÊý¾ÝÕý³£µÄÊÕ·¢¡£
********************************************************************/
void Uart_Interrupt() interrupt 4
{
static uchar i=0;
if(RI==1)
{
RI=0;
Receive=SBUF; //MCU½ÓÊÕwifiÄ£¿é·´À¡»ØÀ´µÄÊý¾Ý
Recive_table[i]=Receive;
if((Recive_table[i]=='\n'))
{
i=0;
}
else i++; //Óöµ½»»ÐÐ ÖØÐÂ×°Öµ
}
else TI=0;
}
2021年05月10日 08点05分 1
1