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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> I2C/SPI总线温湿度的采集与OLED显示 -> 正文阅读

[嵌入式]I2C/SPI总线温湿度的采集与OLED显示

I2C协议

1.IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。

在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps 以上。
2.软件I2C和硬件I2C
①硬件I2C
直接利用 STM32 芯片中的硬件 I2C 外设。

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

②软件I2C

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

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

③两者的差别

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

SPI协议

SPI总线是一种4线总线,因其硬件功能很强,所以与SPI有关的软件就相当简单,使中央处理器(Central Processing Unit,CPU)有更多的时间处理其他事务。正是因为这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如AT91RM9200。SPI是一种高速、高效率的串行接口技术。通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换。SPI是一个环形结构,通信时需要至少4根线(事实上在单向传输时3根线也可以)
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。

利用AHT20采集温湿度并发送到上位机

需要的设备有stm32f103,AHT20,串口,8根线
stm32与串口接线:RX-A9,TX-A10,GND-GND,3.3-3.3
stm32与AHT10连线:SCL–>PB6,SDA–>PB7 ,GND-GND,3.3-3.3
连线接好后烧录程序代码
注意:用的是PB6,PB7引脚
完整代码链接
链接:https://pan.baidu.com/s/1zwTu6UqmDkutvN490Czfbg
提取码:0ckv

/main
#include "delay.h"
#include "usart.h"
#include "bsp_i2c.h"


int main(void)
{	
	delay_init();     //?¨?¨o?ào?¥¨oy3?¨o???¥	  
	uart_init(115200);	 //????¨23?¨o???¥?a115200
	IIC_Init();
		while(1)
	{
		printf("???èêa?è??ê?");
		read_AHT20_once();
		delay_ms(1500);
  }
}

下载编译成功烧录即可
生成HEX文件,进行烧录
在这里插入图片描述
之后连接好芯片,进行温度的采集
打开串口,115200比特,观察结果
在这里插入图片描述
在这里插入图片描述

OLED名字学号的显示

整个工程完整代码
链接:https://pan.baidu.com/s/1fMcnuijiXbh1n1RskQ_jcQ
提取码:swhb
代码下载后对汉字进行字模提取
提取软件
链接:https://pan.baidu.com/s/19gZ-bliFGb1tk4gqdhG01w
提取码:8w4j
之后进行字模提取
下载成功后打开软件,选择宋体,用户定义,编辑码表,选择c文件,最后点击生成
在这里插入图片描述
在这里插入图片描述

将字模文件加入下面oledfont.h文件里面
在这里插入图片描述
在这里插入图片描述

在改工程里面test.c名字和学号
在这里插入图片描述
后面烧录编译即可
对应连接如下
在这里插入图片描述
效果展示
在这里插入图片描述

显示AHT20的温度和湿度

代码如下
链接:https://pan.baidu.com/s/1MralN8EJxe_yt_On22qdVg
提取码:mp5a
下载工程编译烧录
在这里插入图片描述
效果图如下
在这里插入图片描述

oled滚动划屏显示

完整代码如下
链接:https://pan.baidu.com/s/1Jj17TNRwVNaVD758cOFu_w
提取码:z12f
打开工程,修改test.c文件
在这里插入图片描述
生成相应的字模
在这里插入图片描述
打开相应的文件,加入到oledfont.h里面
在这里插入图片描述
然后编译烧录成功即可

在这里插入图片描述
效果图如下
在这里插入图片描述

总结

本次实验我很认真的完成了,将理论与实践完美的结合,我收获蛮多的,希望下次再能有更多的体会和经历

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 10:04:07  更:2021-11-27 10:05:24 
 
开发: 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年11日历 -2024/11/26 11:53:13-

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