目录

一、 SPI 协议

1.简介

2.SPI的连接方式

3.通信过程​

二、OLED

1.OLED原理

2.点阵编码原理与显示

三、OLED显示实验

Demo 程序

1.要求

2. OLED 显示汉字

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

4.温湿度显示

四、总结

五、参考文献


一、 SPI 协议

1.简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是由 Motorola 公司提出的一种高速的,全双工,同步的通信总线,被广泛地使用在 ADC、LCD 等设备与 MCU 间要求通讯速率较高的场合。SPI总线系统可直接与各个厂家生产的多种标准外围器件连接,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线C/S(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。

2.SPI的连接方式

SS( Slave Select):从设备选择信号线,常称为片选信号线。
SCK (Serial Clock):时钟信号线,用于通讯数据同步。
MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。
MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚。

3.通信过程

二、OLED

1.OLED原理

OLED(OrganicLight-Emitting Diode),又称为有机电激光显示、有机发光半导体(OrganicElectroluminesence Display,OLED)。OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。

2.点阵编码原理与显示

汉字点阵编码
在汉字的点阵字库中,每个字节的每个位都代表一个汉字的一个点,每个汉字都是由一个矩形的点阵组成,0 代表没有点,1 代表有点,将 0 和 1 分别用不同颜色画出,就形成了一个汉字,常用的点阵矩阵有 1212, 1414, 16*16 三 种字库。
字库根据字节所表示点的不同有分为横向矩阵和纵向矩阵,目前多数的字库都是横向矩阵的存储方式(用得最多的应该是早期 UCDOS 字库),纵向矩阵一 般是因为有某些液晶是采用纵向扫描显示法,为了提高显示速度,于是便把字库 矩阵做成纵向,省得在显示时还要做矩阵转换。
OLED点阵显示
点阵屏像素按128列X64行组织,每一行128个像素单元的阴极是连接在一起,作为公共极(COM),每一列64个像素单元的阳极也连接在一起,作为一段(SEG)。行列交叉点上的LED就是一个显示单元,即一个像素。要点亮一个像素,只要在该像素所在列电极上加上正电压、行电极接地。同样,要驱动一整行图像,就需要同时把128列信号加载到列电极上,把该行行电极接地。该行显示时,其他63行均不能显示,其行电极应为高电平或悬空。
可见,整屏的显示,只能分时扫描进行,一行一行的显示,每次显示一行。行驱依次产生低电平扫描各行,列驱动读取显示数据依次加载到列电极上。扫描一行的时间称为行周期,完成一次全屏扫描,就叫做一帧。一般帧频大于60,人眼观察不到逐行显示。每行扫描显示用时叫占空比,占空比小,为达到相同的显示亮度,驱动电流就大。SSD1306段驱动最大电流为100uA,当整行128个像素全部点亮时,行电极就要流过12.8mA的电流。

三、OLED显示实验

Demo 程序

需要下载 0.96 寸 OLED 显示屏厂家给出的 Demo 程序。
程序下载链接:
0.96 寸 SPI_OLED 模块配套资料包。

下载资料包之后打开其中的0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0\1-Demo\Demo_STM32\0.96inch_OLED_Demo_STM32F103RCT6_Software_4-wire_SPI

1.要求

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

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

3) 上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者一段歌词或诗词

2. OLED 显示汉字

打开取字模软件

输入汉字生成字模

 修改代码

打开 gui.c 下的 oledfont.h 头文件,将 cfont16[] 数组内的内容修改成自己的中文文字点阵

将 test.c 里 void TEST_MainPage(void) 函数中的语句注释掉,添加自己的执行语句


void TEST_MainPage(void)
{   //GUI_ShowString(28,0,"OLED TEST",16,1);//GUI_ShowString(12,16,"0.96\" SSD1306",16,1);//GUI_ShowString(40,32,"64X128",16,1);//GUI_ShowString(4,48,"www.lcdwiki.com",16,1);GUI_ShowCHinese(40,16,16,"冉某人",1);GUI_ShowString(16,32,"631907030519",16,1);delay_ms(1500);      delay_ms(1500);
}

修改mian函数中的while循环

编译烧录程序,结果如下

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

跟前面一样,获取字模后,向 gui.c 下的 oledfont.h 头文件里的 cfont16[] 数组内的添加中文文字点阵,我这里添加了“欢迎来到重庆”这 几个点阵

代码修改

修改 test.c 里 void TEST_MainPage(void) 函数如下

修改mian函数中的while循环

编译烧录程序,显示结果为 

4.温湿度显示

跟前面一样,获取字模后,向 gui.c 下的 oledfont.h 头文件里的 cfont16[] 数组内的添加中文文字点阵,我这里添加了“当前温湿度”这 几个点阵

移植 AHT20 温湿度采集代码

从里面移植下面 4 个文件:
bsp_i2c.h、bsp_i2c.c、sys.h、sys.c;
并将bsp_i2c.c文件中的串口发送改为 OLED 显示 void Show_OLED(void)

void Show_OLED(void)
{/*------------*/GUI_ShowCHinese(28,10,16,"当前温湿度",1);GUI_ShowCHinese(20,32,16,"温度:",1);GUI_ShowString(60,32,strTemp1,16,1);GUI_ShowString(68,32,strTemp2,16,1);GUI_ShowString(76,32,".",16,1);GUI_ShowString(84,32,strTemp3,16,1);GUI_ShowCHinese(92,32,16,"℃",1);GUI_ShowCHinese(20,48,16,"湿度:",1);GUI_ShowString(60,48,strHumi1,16,1);GUI_ShowString(68,48,strHumi2,16,1);GUI_ShowString(76,48,".",16,1);GUI_ShowString(84,48,strHumi3,16,1);GUI_ShowCHinese(92,48,16,"%",1);
}

修改main函数

#include "bsp_i2c.h"  //注意添加头文件
int main(void)
{   delay_init();                  //延时函数初始化      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级OLED_Init();                    //初始化OLEDIIC_Init();                //初始化IICOLED_Clear(0);             //清屏(全黑)while(1) {read_AHT20_once();         //读取温度并显示OLED_Clear(0);             //清屏(全黑)       delay_ms(1500);}

显示结果为

四、总结

简单了解了SPI 协议,并根据官方的代码再参考别人的代码进行了修改完成了0.96 寸OLED的显示

五、参考文献

基于 SPI 协议用 0.96 寸 OLED 显示汉字及温湿度数据_L-GRAZY的博客-CSDN博客

基于STM32的0.96寸OLED显示屏显示数据_Harriet的博客-CSDN博客_基于stm32的oled显示时间

基于SPI通信方式的OLED显示_不#曾&轻听的博客-CSDN博客_oled spi通讯

基于 SPI 协议的0.96 寸OLED显示相关推荐

  1. STM32Mini基于SPI接口的0.96寸OLED屏数据显示

    文章目录 一.实验资料准备 1.下载工程包 2.引脚接法 3.字模软件准备 4.了解SPI(串行外设接口) (1)SPI的定义 (2)SPI的连接方式 (3)SPI的通讯过程 5.了解OLED屏的滚屏 ...

  2. STM32读取SM300D2七合一传感器模块数据在0.96寸OLED显示,通过DL-LN3X无线模块显示在上位机

    先看这个: 资料 https://blog.csdn.net/gsh_hello_world/article/details/56277182 https://blog.csdn.net/gsh_he ...

  3. STM32驱动代码:STM32F4驱动7针0.96寸OLED显示字符、汉字

    STM32F4驱动7针0.96寸OLED显示字符.汉字 适用于stm32f1.stm32f4移植 工程资料链接:STM32F4驱动7针0.96寸OLED.rar 一. 代码效果 二.硬件准备 1.准备 ...

  4. STC15W408AS单片机IIC驱动0.96寸OLED显示

    STC15W408AS单片机IIC驱动0.96寸OLED显示 不同页的滚动效果() 全页的滚动效果 STC15W408AS最新系统板 注意图片上的0欧姆电阻贴错了位置,应该是与GND相连的,图片上是P ...

  5. 0.96寸OLED显示汉字图片及简单GIF

    0.96寸OLED显示汉字图片及简单GIF 只是做一些简单显示,具体逻辑大家自行添加. 网上的OLED驱动很多,我懂的也不是很深,这里就不说了,我这里用的是中景园的驱动.这里重点说怎么改可以显示这些东 ...

  6. STM32实现0.96寸OLED显示模拟IIC和IIC四种实现(标准库和HAL库)

    目录 本文通过四种方法实现OLED显示 设备选择 OLED介绍 接线表设计 OLED应用 1.标准库模拟IIC实现OLED显示 2.标准库IIC实现OLED显示 3.HAL库模拟IIC实现OLED显示 ...

  7. 0.96寸oled显示动画软件和步骤

    0.96寸oled的SPI版本移植成功,并成功显示动画. 2021.4.9:最下方下载软件 制作动画步骤 使用软件: 第一个软件:进行gif的帧数删减,画面优化,最重要的是大小的改变0.96寸oled ...

  8. 0.96寸oled显示坏苹果(badapple)

    前言 俗话说:有屏幕的地方就会有badapple. 下面带来使用0.96寸OLED屏幕显示badapple的教程. 1.获取视频 首先从网上下载badapple的视频,下载地址:badapple 2. ...

  9. 灵感手环第一步——0.96寸OLED显示实验

    这算是我这个系列的第一篇博客吧.首先要解决的就是屏幕显示问题.我选择了目前新兴起的OLED显示模块. OLED(OrganicLightEmittingDiode),中文译作有机发光二极管,目前被广泛 ...

最新文章

  1. QListWidget 小练习
  2. 孙正义看未来30年:这个趋势,永远不会错(附完整PPT)
  3. 成功解决To fix this you could try to: 1. loosen the range of package versions you‘ve specified ​​​​​​​
  4. Java 堆内存优化
  5. C指针详解(经典,非常详细)
  6. Java的子类可以继承父类的私有变量和私有方法吗?
  7. mybatis 一对一 一对多 级联查询
  8. web3@0.20.1 在依据abi创建智能合约的时候报错 TypeError: web3.eth.contract is not a function
  9. ping端口_干货分享:shell脚本批量telnet ip 端口
  10. 东北大学软件项目管理与过程改进_可视化看板——汽车研发项目管理成功的奥秘...
  11. Postresql初始安装后用户的创建
  12. 数学物理计算机的思考
  13. 2017 Postgres大象会 TBase可靠性探究ppt
  14. win2003从组策略关闭端口(445/135/137/138/139/3389等)教程
  15. 关于课题的一点思考(基于多生理信号的情绪识别)
  16. PPT学习整理(五)编辑顶点
  17. 敬畏传奇——直面第一台可编程电子计算机:Colossus
  18. sqlmap安装配置教程
  19. Transfomer详解
  20. 界面设计方法 (1) — 1.界面的概念与分类

热门文章

  1. HCL实验:OSPF路由汇聚
  2. 详解色彩模型、色域以及颜色空间转换
  3. 比较不同利率下的贷款
  4. 校园歌手信息评分系统(C语言),大一新生期末实训
  5. python_给视频打马赛克
  6. xcopy 复制目录及子目录
  7. 申请加精—ERP实施方法论的比较(SAP、 Oracle、J.D.E、BANN、用友等实施方法论)...
  8. 人物-作家-马克·吐温:马克·吐温
  9. org.springframework.dao.InvalidDataAccessApiUsageException:The given object has a null identifi的解决方案
  10. 这些东西适合做什么?