在stc89c52RC开发板上通过atk-esp8266获取重庆市的时间和天气并且在TFT上显示的c语言代码以及接线图
时间: 2024-05-06 09:17:29 浏览: 120
基于ESP8266与STC单片机的天气时钟(包括DS18B20、TFT、串口、外部中断、ESP8266、STC、API等)
以下是基于ATK-ESP8266和STC89C52RC开发板编写的获取重庆市天气和时间并在TFT屏幕上显示的C语言代码:
```c
#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include "TFT_18.h"
#include "esp8266.h"
#define SSID "YOUR_WIFI_SSID"
#define PASSWORD "YOUR_WIFI_PASSWORD"
char time_str[20] = {0};
char weather_str[100] = {0};
void main(){
TFT_Init(); // 初始化TFT屏幕
ESP8266_Init(); // 初始化ESP8266模块
ESP8266_Connect_AP(SSID, PASSWORD); // 连接WiFi网络
while(1){
// 获取时间
ESP8266_Get("timeapi.org", "/api/timezone/Asia/Chongqing", time_str, 20);
TFT_Clear(WHITE);
TFT_Puts(0, 0, "Time:", &Font16, BLACK);
TFT_Puts(0, 20, time_str, &Font16, BLACK);
// 获取天气
ESP8266_Get("t.weather.sojson.com", "/api/weather/city/101040100", weather_str, 100);
char *weather_info = strstr(weather_str, "forecast"); // 找到天气预报的起始位置
weather_info = strstr(weather_info, "type"); // 找到天气类型的起始位置
weather_info += strlen("type\":\""); // 跳过"type":"这几个字符
char weather_type[10] = {0};
int i = 0;
while(weather_info[i] != '\"'){ // 将天气类型复制到weather_type数组中
weather_type[i] = weather_info[i];
i++;
}
TFT_Puts(0, 40, "Weather:", &Font16, BLACK);
TFT_Puts(0, 60, weather_type, &Font16, BLACK);
DelayMs(5000); // 延时5秒钟
}
}
```
接线图如下:
| ESP8266 | STC89C52RC |
|:------:|:--------:|
| VCC | VCC |
| GND | GND |
| TXD | P3.0 |
| RXD | P3.1 |
注意:为了防止串口通讯冲突,不要在程序中使用P3口进行其他操作。
阅读全文