如题,小白最近在研究怎么把自己设计的stc8a8k跟esp8266和dht11连接在一起。目前能够在手机上控制自己在stc8a8k上的LED灯,但是也只是在手机上简单发点指令能让它亮起来,但代码部分实在是不懂如何与DHT11连接。求助大神!目前还有个想法是能根据温度控制灯的亮灭,要是有大神在此方面也能够指点一二,感激不尽!
下面是控制灯亮灭的部分代码- main()
- {
- int i=0,itemp=0;
- int No,Timer;
- int CommNo;
- char xdata CommDat[20];
- Uart1Init();//串口1发出调试信息
- Uart2Init();//串口2跟8266通信
- Timer0Init();
- EA=1;
- ESP8266Init();
-
-
- while(1)
- {
- if(Uart2RecFlag==2)
- {//接收到数据
- Uart2RecFlag=0;
-
- memset(ESP8266RecBuf,0,100*sizeof(char));
- strcpy(ESP8266RecBuf,Uart2RecBuff);
- if(strcmp(ESP8266RecBuf,"TICK\r\n\0")!=0)
- {
- i=ansComm(ESP8266RecBuf,&CommNo,CommDat);
- if(i==1)
- {//解析成功
- switch(CommNo)
- {
- case 1:
- {//点亮LED
- itemp=atoi(CommDat);//提取编号
- switch(itemp)
- {
- case 1:
- LED0=0;
- break;
- case 2:
- LED1=0;
- break;
- case 3:
- LED2=0;
- break;
- case 4:
- LED3=0;
- break;
- default:
- break;
- }
- break;
- }
- case 2:
- {//灭LED
- itemp=atoi(CommDat);//提取编号
- switch(itemp)
- {
- case 1:
- LED0=1;
- LED0Start=0;
- break;
- case 2:
- LED1=1;
- LED1Start=0;
- break;
- case 3:
- LED2=1;
- LED2Start=0;
- break;
- case 4:
- LED3=1;
- LED3Start=0;
- break;
- default:
- break;
- }
- break;
- }
- case 3:
- {//启动闪烁
- i=sscanf(CommDat,"%d:%d",&No,&Timer);
- if(i==2)
- {
- switch(No)
- {
- case 1:
- LED0Start=1;
- LED0Dat=Timer;
- break;
- case 2:
- LED1Start=1;
- LED1Dat=Timer;
- break;
- case 3:
- LED2Start=1;
- LED2Dat=Timer;
- break;
- case 4:
- LED3Start=1;
- LED3Dat=Timer;
- break;
- default:
- break;
- }
- }
- break;
- }
- case4:
- {//设置热点
- FlashWrite(0,CommDat);//将服务器接收的数据放入0号地址中
- ESP8266Init();
- //memset(APName,0,30*sizeof(char));//清除APName中的内容
- //FlashRead(0,APName);//再从0号地址中读出,放入APName中
- // ESP8266SendData(0,APName);//再通过0号通道发送出去
- break;
- }
-
- }
- ESP8266SendData(0,"OK\r\n\0");//给服务器回OK
- }
- else ESP8266SendData(0,"ERROR\r\n\0");
-
- }
-
- }
复制代码 小白渣代码 其中case4也不知道何种原因无法实现
|