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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于SPI协议 AH20+OLED屏显 -> 正文阅读

[嵌入式]基于SPI协议 AH20+OLED屏显

本文内容:

理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:

1) 显示学号和姓名;?

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

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

目录

本文内容:

一、SPI协议

1.SPI简介

2.SPI 物理层

3.SPI 协议层?

4.SPI四种工作模式?

5.SPI时序图?

二、硬件实现

1.实验准备

2.字模获取

3.代码编写?

4.连线

5.成果展示

三、参考网站


一、SPI协议

1.SPI简介

  • SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。
  • ?SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。 SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输)

?

2.SPI 物理层

  • SPI 通讯设备之间的常用连接方式,如下图:

在这里插入图片描述

3.SPI 协议层?

  • SPI 通讯的通讯时序,如下图所示:

在这里插入图片描述

4.SPI四种工作模式?


SPI 有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式:

① CPOL=0,串行时钟空闲状态为低电平。
② CPOL=1,串行时钟空闲状态为高电平,此时可以通过配置时钟相位(CPHA)来选择具体的传输协议。
③ CPHA=0,串行时钟的第一个跳变沿(上升沿或下降沿)采集数据。
④ CPHA=1,串行时钟的第二个跳变沿(上升沿或下降沿)采集数据。
这四种工作模式如下图所示:

SPI四种工作模式

?

5.SPI时序图?


以 CPOL=0, CPHA=0 这个工作模式为例, SPI 进行全双工通信的时序如下图所示:

在这里插入图片描述
从上图可以看出, SPI 的时序图很简单,不像 I2C 那样还要分为读时序和写时序,因为 SPI 是全双工的,所以读写时序可以一起完成。图中CS 片选信号先拉低,选中要通信的从设备,然后通过 MOSI 和 MISO 这两根数据线进行收发数据, MOSI 数据线发出了0XD2 这个数据给从设备,同时从设备也通过 MISO 线给主设备返回了 0X66 这个数据。这个就是 SPI 时序图。

二、硬件实现

1.实验准备

硬件:

  • STM32开发板
  • ATH20温湿度传感器
  • 0.96寸OLED显示屏
  • 杜邦线

软件:

  • Keil5 MDK
  • 串口调试助手

2.字模获取

文字取模的理论知识可以参考:汉字取模

字模软件下载

链接:https://pan.baidu.com/s/1tIyl4bRt7LKKNQVkNbCkWQ?
提取码:1234?
打开应用程序后,输入自己想要的汉字,即可。

我这里需要将正向的文字左旋 90 °,然后再向下翻转,这样,OLED 上显示的文字才是正向的。

3.代码编写?

具体的工程文件:链接:https://pan.baidu.com/s/1i4FOYWawDklSqSLwPzln7A?
提取码:1234?
在?gui.c?下有个?oledfont.h?头文件,打开后,将?cfont16[ ]?数组内的内容修改成自己需要的中文文字点阵即可。

?

这里我添加的汉字字模有:袁、某、人、欢、迎、来、到、重、庆、交、通、大、学、物、联、网、实、训、室、温、度、湿、:、℃、%

然后在test.c文件最后设置自己想要显示的内容。

?

函数说明:

GUI_ShowChinese() 的参数
参数一:X 坐标
参数二:Y 坐标
参数三:汉字点阵大小(这里使用的是 16×16 的,参数应该是 16)
参数四:要显示的汉字
参数五:显示样式(1:白字黑底;0:黑字白底)

GUI_ShowString() 的参数
参数一:X 坐标
参数二:Y 坐标
参数三:字符串(ASCLL码中的)
参数四:bit (表示字符显示格式,这里我用的 16 ,和汉字一样高)
参数五:显示样式(1:白字黑底;0:黑字白底)

4.连线

打开main.c 对着连线即可?

ATH20温湿度传感器的连接如下:

VCC→3V3,GND→GND,SCL→PB6,SDA→PB7

5.成果展示

?

三、参考网站

https://blog.csdn.net/ssj925319/article/details/111588662?spm=1001.2014.3001.5502

https://blog.csdn.net/weixin_45309916/article/details/108713843?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163741536916780271972904%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163741536916780271972904&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-108713843.first_rank_v2_pc_rank_v29&utm_term=spi%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3&spm=1018.2226.3001.4187

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

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