当前位置: 首页 > news >正文

学习HAL库STM32F103C8T6(实时时钟项目、WIFI天气预报项目)

 1.项目:实时时钟(结合RTC、OLED相关内容)

1.2 项目需求

1. OLED屏幕显示当前时间、日期、闹钟等信息;

2. 正常模式下,按下 KEY1 ,进入时间设置模式,此时按下 KEY2 则可以循环跳转修改秒、分、时、日、 月、年;

3. 时间设置模式下,KEY3 增加数值,KEY4 减小数值,再次按下 KEY1 则退出时间设置模式,并保存修改 后的时间;

4. 正常模式下,按下 KEY2,进入闹钟设置模式,此时按下 KEY2 则可以循环跳转修改秒、分、时;

5. 闹钟设置模式下,KEY3 增加数值,KEY4 减小数值,再次按下 KEY1 则退出闹钟设置模式,并保存修改 后的闹钟;

6. 到达闹钟时间后,蜂鸣器响起。按下 KEY3 或 KEY4 停止蜂鸣器。

1.3 硬件清单

1.OLED 屏幕

2.蜂鸣器

3.按键(2个)

4.开发板

1.4 硬件接线

1.5 项目框图

1.6 代码编写

1.6.1OLED屏幕相关代码编写

1.6.1.1 OLED头文件编写

1.6.1.2 OLED相关字符库编写

使用取模工具将要使用的汉字存到这个数组里

1.6.1.3 OLED相关函数编写

屏幕上显示按照这个图来显示

1.6.2 RTC相关代码编写(设置时间和闹钟)

1.6.2.1 RTC头文件编写

1.6.2.2 RTC相关函数编写

1.6.3 按键相关代码编写

1.6.3.1 按键头文件编写

1.6.3.2 按键相关函数编写

1.6.4.蜂鸣器相关代码编写

1.6.4.1 蜂鸣器头文件编写

1.6.4.2 蜂鸣器相关函数编写

1.6.5 主函数编写

1.7 项目展示效果(上传不了视频不方面展示全部功能)

2.项目:Wi-Fi天气预报

2.1 项目需求

使用 ESP8266 通过 HTTP 获取天气数据(心知天气),并显示在 OLED 屏幕上。

按键 1 :循环切换今天/明天/后天天气数据;

按键 2 :更新天气。

2.2 硬件清单

1.OLED

2.ESP8266

3.开发板

4.硬件接线

2.3 项目框图

2.4 相关代码编写

2.4.1 OLED相关代码编写

2.4.1.1 OLED头文件编写

2.4.1.2 OLED相关字符库编写

2.4.1.3 OLED相关函数编写

2.4.2 ESP8266模块编写(发送JSON包到心知平台上,主机接收返回结果)

心知天气的JSON包格式是

https://api.seniverse.com/v3/weather/daily.json?key=自己账号的密钥&location=想查询的地区代码&language=语言&unit=c&start=从哪一天开始查&查到第几天

下面是我的json包

https://api.seniverse.com/v3/weather/daily.json?key=SUZyuS__R6vKw-sxv&location=WX4FBXXFKE4F&language=zh-Hans&unit=c&start=0&days=1

放到浏览器搜索出现了

再将这段放进JSON解析工具里解析出来了下面这段

2.4.2.1 EPS8266头文件编写

2.4.2.2 ESP8266相关函数编写

2.4.3 weather相关代码编写(用于解析JSON包和封装天气的函数)

2.4.3.1 weather头文件编写

2.4.3.2 weather相关函数编写

JSON包解析库函数是从GitHub上下载的,使用前将内存堆的空间改大些

将0x00000200改为0x00000C00防止堆空间不够用

下面这段代码是给三天天气的JSON包解析我们只要日期、天气、最高温度、最低温度的数据

流程如图一层一层的拨开(可以对照代码和图来看):

1.第一步

 

2.第二步

3.第三步(获取想要的数据)

2.4.4主函数编写

2.5项目展示效果

2.5.1 打开串口助手(默认效果)

2.5.2 按下key2效果(如果过了这一天按下key2重新获取从今天开始到往后第三天的天气)

2.5.3 OLED默认显示(今天的天气)

2.5.4 按下KEY1(获取明天的天气)

2.5.5 再次按下KEY1(获取后天的天气)

http://www.dtcms.com/a/515628.html

相关文章:

  • npm、yarn、pnpm的对比和优略
  • 离散卷积,小demo(小波信号分析)
  • Java 大视界 -- Java 大数据在智能教育学习社区互动模式创新与用户活跃度提升中的应用(426)
  • 建设比较好网站服务器用来做网站和数据库
  • C# iText7与iTextSharp导出PDF对比
  • HARDWARE 属性的Bitmap与普通Bitmap,GPU与RenderThread渲染与处理方式异同比较,Android
  • 东营市做网站的公司h5学习教程
  • 不同类型的金融产品(如股票、期货、加密货币)双时间尺度优化的差异化调整
  • xtuoj Repeat One
  • ENSP Pro Lab笔记:配置STP/RSTP/MSTP(3)
  • **发散创新:模拟计算的高级应用与实现**随着科技的飞速发展,模拟计算已经成为了众多领域的核心工
  • EasyGBS如何在平安乡村搭建无线视频联网监控系统?
  • 上新!联软科技发布新一代LeagView平台,用微服务重塑终端安全
  • 【以太来袭】2. 节点设计与部署
  • 增加网站广告位建网站首页图片哪里找
  • Yolo分割数据集错误数据删除
  • Redis原理篇(一)数据结构
  • 1022作业
  • 北京商城型网站建设网上商城的意义
  • 《3D端游云原生日志:开放世界资源加载卡顿的实战与经验沉淀》
  • 2025年渗透测试面试题总结-213(题目+回答)
  • 技术演进中的开发沉思-146 java-servlet:Servlet 在云原生时代的适配”
  • 网件路由器做网站装修公司加盟好还是自己开
  • 【自适应滤波例程】基于新息协方差匹配的自适应EKF (无迹卡尔曼滤波) vs 经典EKF对比,附MATLAB代码下载链接
  • 获得网站源文件破解WordPress站点
  • 【OpenManus深度解析】MetaGPT团队打造的开源AI智能体框架,打破Manus闭源壁垒。包括架构分层、关键技术特点等内容
  • Redis(一):缓存穿透及其解决方法(SpringBoot+mybatis-plus)
  • Tanh 函数详解
  • 【手机篇】AI深度学习在手机中框/RT四周外观检测应用方案
  • 遂宁网站优化东莞市住房和城乡建设局门户网站