設計用Stc8板子將溫濕度、光照強度等數據通過wifi模塊上傳到云平臺,代碼在下,可以使用。拋磚引玉,希望大佬多多上傳作品互幫互助
單片機源程序如下:
- #include "stc8.h"
- #include "stdio.h"
- #include "config.h"
- #include "delay.h"
- #include "uart.h"
- #include "display.h"
- #include "ADC.h"
- #include "DHT11.h"
- #include <string.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define ulint unsigned long int
- extern uchar xdata Rec_Buf[Buf_Max];
- /**********************
- 引腳別名定義
- ***********************/
- sbit RST = P3^6; //ESP8266復位引腳用IO口
- void esp8266();
- void Timer0Init(void);
- ulint HTTP_PostPkt(char *pkt,uchar *dsid, uchar *val);
- uint len=0;
- float val_test;
- uchar val_ok[5];
- char HTTP_Buf[400]="";
- uchar g_SEND[400] = " ";
- bit flag=0;
- uint num=0;
- uint ii=0;
- //uchar ATCWJAP[]="AT+CWJAP=\"OPPO A59m\",\"12345678\"\r\n";
- uchar ATCWJAP[]="AT+CWJAP=\"Netcore\",\"12345678\"\r\n";
- uchar ATRST[]="AT+RST\r\n";
- uchar ATCIPMUX[]="AT+CIPMUX=0\r\n";
- uchar ATCIPMODE[]="AT+CIPMODE=1\r\n";
- //uchar ATCIPSTART[]="AT+CIPSTART=\"TCP\",\"192.168.43.126\",5000\r\n";
- uchar ATCIPSTART[]="AT+CIPSTART=\"TCP\",\"ip\",80\r\n";
- uchar ATCIPSEND[]="AT+CIPSEND\r\n";
- uchar ATEXITCIPMODE[]="+++";
- uchar POST1[]="POST /devices/579828346/datapoints?type=3 HTTP/1.1\r\n";
- uchar POST2[]="api-key:8YGhUHuHNQODlsbk7YrimCE2Qow=\r\n";
- uchar POST3[]="Host:api.heclouds.com\r\n";
- uchar POST5[]="\r\n";
- uchar POST40[]="Content-Length:11\r\n";
- uchar POST60[]="{\"temp\":11}";
- uchar POST41[]="Content-Length:10\r\n";
- uchar POST61[]="{\"wet\":20}";
- uchar POST42[]="Content-Length:14\r\n";
- uchar POST62[]="{\"light\":3333}";
- uchar AT[]="AT\r\n";
- uchar ATCWMODE[]="AT+CWMODE=1\r\n";
- uchar numlist[]={
- 0x30,
- 0x31,
- 0x32,
- 0x33,
- 0x34,
- 0x35,
- 0x36,
- 0x37,
- 0x38,
- 0x39
- };
- uchar temp1[3];
- uchar humidity1[3];
- uchar photo1[4];
- uchar tempphoto1;
- uchar mnum,count,mark;
- sbit SDA = P7^6; /* 數據線 */
- sbit SCL = P7^7; /* 時鐘線 */
- void tm0()interrupt 1{
-
- ET0=0;
- TH0 = 0xb7;
- TL0 = 0xfe;
- TF0 = 0;
- count ++;
-
- if(count == 50){
- mnum ++;
-
- count = 0;
- //P6 = ~P6;
-
- }
-
- if(mnum==10){
- mark=1;
-
-
- mnum=0;
- }
-
- ET0=1;
- }
- void espdelay(uint z){ //ms延時
- uint x,y;
- for(x = z; x > 0; x--)
- for(y = 829; y > 0 ; y--);
- }
- void uart3init(){
- S3CON = 0x50;
- T3H = 0xff;
- T3L = 0xfe;
- T4T3M = 0x08;
- }
- void uart3send1byte(uchar dat){
- S3BUF = dat;
- while(!(S3CON&0x02));
- S3CON = S3CON | 0xfd;
- espdelay(2);
- }
- void sendstr(uchar *p){
- while(1)
- {
- uart3send1byte(*p++);
- if(*p=='\0') break;
-
- }
- }
- void send2(unsigned char string){
-
- SBUF = string;
- while(!(SCON&0x02));
- SCON &= ~0x02;
-
- }
- void sendstr1(uchar *p)
- {
- while(1)
- {
- send2(*p++);
- if(*p=='\0') break;
- }
-
- }
- void timer0_init(){
- TMOD = 0x01;
- TH0 = 0xb7;
- TL0 = 0xfe; //20ms
- TR0=1;
- ET0 = 1;
- EA = 1;
- }
-
- int main(void)
- { P0M1 = 0;
- P0M0 = 0;
- P1M1 = 0;
- P1M0 = 0;
- P2M1 = 0;
- P2M0 = 0;
- P3M1 = 0;
- P3M0 = 0;
- P4M1 = 0;
- P4M0 = 0;
-
- P5M1 = 0;
- P5M0 = 0;
- P6M1 = 0;
- P6M0 = 0;
- P7M1 = 0;
- P7M0 = 0;
- P_SW2=0x02;
- ADC_config(); //ADC初始化
- uart3init(); //串口1初始化
- init_1602(); //1602初始化
- EA = 1;
- timer0_init();
- Uart_Init(); //總中斷打開
- delay_ms(10); //初始化后延時
- // WiFi模塊初次設置使用
- sendstr(ATRST);
- sendstr(ATCWJAP);
- sendstr(ATCWMODE);
- sendstr(ATCIPMUX);
- while (1)
- {
- displaynumber();
- DHT11();
- tempphoto1 = Get_ADC12bitResult();
- espdelay(5);
- //將溫濕度值轉換為字符串
- temp1[0] =DHT11Value.tempH;
- temp1[1] =DHT11Value.tempL;
-
- humidity1[0] = DHT11Value.humyH;
- humidity1[1] = DHT11Value.humyL;
- //將光照強度值轉換為字符串
- photo1[0] = tempphoto1/1000;
- photo1[1] = (tempphoto1%1000)/100;
- photo1[2] = ((tempphoto1%1000)%100)/10;
- photo1[3] = ((tempphoto1%1000)%100)%10;
-
- POST60[8]= numlist[temp1[0]];
- POST60[9]= numlist[temp1[1]];
- POST61[7]=numlist[humidity1[0]];
- POST61[8]=numlist[humidity1[1]];
- POST62[9]=numlist[photo1[0]];
- POST62[10]=numlist[photo1[1]];
- POST62[11]=numlist[photo1[2]];
- POST62[12]=numlist[photo1[3]];
- sendstr(ATCIPSTART);
- sendstr1("已連接到服務器\r\n");
- sendstr(ATCIPMODE);
- sendstr1("開啟透傳\r\n");
- sendstr(ATCIPSEND);
- sendstr1("開始發送數據\r\n");
-
-
- sendstr(POST1);
-
- sendstr(POST2);
-
- sendstr(POST3);
-
- sendstr(POST40);
-
- sendstr(POST5);
-
- sendstr(POST60);
-
- sendstr(POST1);
-
- sendstr(POST2);
-
- sendstr(POST3);
-
- sendstr(POST41);
-
- sendstr(POST5);
-
- sendstr(POST61);
-
- sendstr(POST1);
-
- sendstr(POST2);
-
- sendstr(POST3);
-
- sendstr(POST42);
-
- sendstr(POST5);
-
- sendstr(POST62);
-
-
-
- espdelay(500);
-
- sendstr(ATEXITCIPMODE);
-
- sendstr1("退出數據發送\r\n");
- }
- }
復制代碼
所有資料51hei提供下載:
代碼.zip
(287.79 KB, 下載次數: 43)
2020-1-22 13:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|