IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> AHT20温湿度传感器的数据采集及OLED屏显和汉字点阵编码 -> 正文阅读

[嵌入式]AHT20温湿度传感器的数据采集及OLED屏显和汉字点阵编码

目录

一、了解I2C总线协议

二、AHT20温湿度传感器的数据采集

1.目的

2.准备条件

3.实现代码

4.线路连接

5.烧录

三、OLED屏显和汉字点阵编码

1.目的

2.准备

3.功能实现

3.1??显示自己的学号和姓名

?3.2? ?显示AHT20的温度和湿度

3.3? ?上下或左右的滑动显示长字符

四、总结

五、参考资料


一、了解I2C总线协议

  1. 什么是I2C协议
    I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

  2. I2C 协议的物理层和协议层
    ①物理层
    I2C是一个支持设备的总线。可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。对于I2C 总线,只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。
    I2C 通讯设备常用连接方式(引用野火资料中的图)

在这里插入图片描述

②协议层

主要是定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等。

通讯的起始和停止信号

在这里插入图片描述

数据有效性

在这里插入图片描述

从图中可以看出I2C在通讯的时候,只有在SCL处于高电平时,SDA的数据传输才是有效的。SDA 信号线是用于传输数据,SCL 信号线是保证数据同步。
响应

在这里插入图片描述

当SDA传输数据后,接收方对接受到的数据进行一个应答。如果希望继续进行传输数据,则回应应答信号(低电平),否则回应非应答信号(高电平)。

3、I2C的两种方式——硬件I2C和软件I2C
①硬件I2C
直接利用 STM32 芯片中的硬件 I2C 外设。

硬件I2C的使用
只要配置好对应的寄存器,外设就会产生标准串口协议的时序。在初始化好 I2C 外设后,只需要把某寄存器位置 1,此时外设就会控制对应的 SCL 及 SDA 线自动产生 I2C 起始信号,不需要内核直接控制引脚的电平。

②软件I2C
直接使用 CPU 内核按照 I2C 协议的要求控制 GPIO 输出高低电平,从而模拟I2C。

软件I2C的使用
需要在控制产生 I2C 的起始信号时,控制作为 SCL 线的 GPIO 引脚输出高电平,然后控制作为 SDA 线的 GPIO 引脚在此期间完成由高电平至低电平的切换,最后再控制SCL 线切换为低电平,这样就输出了一个标准的 I2C 起始信号。

③两者的差别
硬件 I2C 直接使用外设来控制引脚,可以减轻 CPU 的负担。不过使用硬件I2C 时必须使用某些固定的引脚作为 SCL 和 SDA,软件模拟 I2C 则可以使用任意 GPIO 引脚,相对比较灵活。对于硬件I2C用法比较复杂,软件I2C的流程更清楚一些。如果要详细了解I2C的协议,使用软件I2C可能更好的理解这个过程。在使用I2C过程,硬件I2C可能通信更加快,更加稳定。
?

二、AHT20温湿度传感器的数据采集

1.目的

使用STM32F103完成基于I2C协议(硬件I2C完成)的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。编程实现:每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win10)

2.准备条件

STM32F103C8T6芯片、?AHT20温度传感器、pc机、串口调试助手

3.实现代码

链接:https://pan.baidu.com/s/1TZNBqkWH_aRGktK8Wk8cTA?
提取码:qwer

4.线路连接

GND — GND
5v — 3v3? ?(左边USB接口一定要接5v接口,否则显示的温湿度为0)
TXD — A10
RXD — A9

?其中SDA接B7;? SCL接B6

5.烧录

烧录结果:

打开串口运行?

?对着芯片呼气,可以发现温湿度都明显提高,实验成功

三、OLED屏显和汉字点阵编码

1.目的

使用STM32F103的SPI或IIC接口实现以下功能

1) 显示自己的学号和姓名;?

2) 显示AHT20的温度和湿度;

3) 上下或左右的滑动显示长字符

2.准备

在上个项目基础上加一块OLED显示屏

?

3.功能实现

3.1??显示自己的学号和姓名

1、实现代码

链接:https://pan.baidu.com/s/1vawtPaudZmzuWdMjImrF3Q?
提取码:qwer

2、修改代码

打开test.c,输入自己的名字和学号

?

?3、添加点阵字

取模

?

?

?

?

?修改字体代码?

?4、编译烧录并运行

结果:

?

?3.2? ?显示AHT20的温度和湿度

1、实现代码

链接:https://pan.baidu.com/s/1fwpkkrHpujE57SGZBOXlmQ?
提取码:qwer

2、编译烧录并运行

结果:

????? ??

可以看到温湿度有明显变化

3.3? ?上下或左右的滑动显示长字符

?1、实现代码

链接:https://pan.baidu.com/s/1KhdrhXcBWLVsky-pVAXH_A?
提取码:qwer

2、修改代码

打开test.c,输入自己的一句话

?

?添加点阵字按照上面步骤即可,这里不再重复

修改点阵字代码

?

?3、编译烧录并运行

?结果:

?

四、总结

? ? ? ? 在第一个串口显示温湿度实验时,一开始的时候那个USB我接的是3v3接口,结果显示的温湿度全部为0,刚开始我还以为是代码或者是芯片的问题,但通过我逐一排查才发现,USB应该是要接5v接口的,于是我又更改这个接口,然后烧录并运行串口,结果显示的温湿度都正常,这才解决了这个问题。总的来说,本次实验个人觉得是非常有意思的,收获也不少,感觉很棒。

五、参考资料

??https://blog.csdn.net/qq_43279579/article/details/111597278

基于STM32的0.96寸OLED显示屏显示数据_HarrietLH的博客-CSDN博客

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:42:58  更:2022-11-05 00:45:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 11:24:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码