如題,小白最近在研究怎么把自己設計的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也不知道何種原因無法實現
|