文章目录

  • 一、SPI简介
  • 二、0.96inch SPI OLED 介绍
  • 三、实验内容及结果
    • 1. 任务要求
    • 2. 准备工作
    • 3. 演示如下
  • 四、参考

一、SPI简介

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

更多可参考SPI详解

二、0.96inch SPI OLED 介绍

  1. 图片展示
序号 模块引脚 引脚说明
1 GND 电源地
2 OLED 电源正(3.3V~5V)
3 D0 SPI和IIC总线时钟信号
4 D1 OLED SPI和IIC总线数据信号
5 RES OLED复位信号,低电平复位(选择IIC总线时,该引脚需要接高电平(可以接VCC))
6 DC OLED命令/数据输入选择信号,高电平:数据,低电平:命令选择(3线制SPI总线时,该引脚不需要使用(可以不接);选择IIC总线时,该引脚需要接电源地)
7 CS OLED片选信号,低电平使能(选择IIC总线时,该引脚需要接电源地)

更多信息0.96inch SPI OLED Module

三、实验内容及结果

1. 任务要求

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

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

  3. 上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者一段歌词或诗词(最好使用硬件刷屏模式)。

2. 准备工作

  1. SPI_PLED模块demo程序下载
  2. 提取链接中文点阵字库及显示工具程序
    提取码:xfut
    复制这段内容后打开百度网盘手机App,操作更方便哦

3. 演示如下

当下载上面的demo程序后用keil打开,即可在main.c中编写以下代码

  1. 先显示姓名及学号
    显示汉字需要用上面的工具提取相应的字模,使用教程也在其中
    添加到oledfont.h中,如下
void TEST_MainPage1()
{   GUI_ShowCHinese(30,0,16,"木子曦",1);//中文姓名GUI_ShowString(5,15,"631907060517",16,1);//学号Delay_1ms(1000);
}
int main(void)
{   delay_init();                  //延时函数初始化    OLED_Init();                     //初始化OLED  OLED_Clear(0);             //清屏(全黑)/***********************************************************************************//**///①刚上电,产品芯片内部就绪需要时间,延时100~500ms,建议500ms/***********************************************************************************/
/***********************************************************************************//**///②上电第一次发0x71读取状态字,判断状态字是否为0x18,如果不是0x18,进行寄存器初始化/***********************************************************************************/OLED_WR_Byte(0x2E,OLED_CMD); //关闭滚动OLED_WR_Byte(0x26,OLED_CMD); //水平向左或者右滚动 26/27OLED_WR_Byte(0x00,OLED_CMD); //虚拟字节OLED_WR_Byte(0x00,OLED_CMD); //起始页 0OLED_WR_Byte(0x07,OLED_CMD); //滚动时间间隔OLED_WR_Byte(0x01,OLED_CMD); //终止页 2OLED_WR_Byte(0x00,OLED_CMD); //虚拟字节OLED_WR_Byte(0xFF,OLED_CMD); //虚拟字节while(1) {         TEST_MainPage1();         //界面显示OLED_WR_Byte(0x2F,OLED_CMD); //开启滚动Delay_1ms(2000);}
}
  1. 效果

  1. 将温湿度的数据显示在屏幕上
    基于I2C协议的AHT20温湿度数据收集参考我之间写的基于I2C协议的AHT20温湿度传感器的数据采集

main.c代码:

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
#include "AHT20-21_DEMO_V1_3.h"
void TEST_MainPage1(int c1,int t1)
{   GUI_ShowCHinese(30,0,16,"木子曦",1);//中文姓名GUI_ShowString(5,15,"631907060517",16,1);//数字详细GUI_ShowCHinese(5,30,16,"湿度",1);GUI_ShowCHinese(5,45,16,"温度",1);GUI_ShowNum(35,30,c1/10,4,16,1);GUI_ShowCHinese(80,30,16,"%",1);GUI_ShowNum(35,45,t1/10,4,16,1);GUI_ShowCHinese(80,45,16,"℃",1);Delay_1ms(1000);
}
volatile int  c1,t1;
uint32_t CT_data[2]={0,0};
u8 temp[10];
u8 hum[10];
int main(void)
{   delay_init();                  //延时函数初始化    OLED_Init();                     //初始化OLED  OLED_Clear(0);             //清屏(全黑)/***********************************************************************************//**///①刚上电,产品芯片内部就绪需要时间,延时100~500ms,建议500ms/***********************************************************************************/AHT20_Init();Delay_1ms(500);/***********************************************************************************//**///②上电第一次发0x71读取状态字,判断状态字是否为0x18,如果不是0x18,进行寄存器初始化/***********************************************************************************/if((AHT20_Read_Status()&0x18)!=0x18){AHT20_Start_Init(); //重新初始化寄存器Delay_1ms(10);}//NVIC_Configuration();       //设置NVIC中断分组2:2位抢占优先级,2位响应优先级     OLED_WR_Byte(0x2E,OLED_CMD); //关闭滚动OLED_WR_Byte(0x26,OLED_CMD); //水平向左或者右滚动 26/27OLED_WR_Byte(0x00,OLED_CMD); //虚拟字节OLED_WR_Byte(0x00,OLED_CMD); //起始页 0OLED_WR_Byte(0x07,OLED_CMD); //滚动时间间隔OLED_WR_Byte(0x01,OLED_CMD); //终止页 2OLED_WR_Byte(0x00,OLED_CMD); //虚拟字节OLED_WR_Byte(0xFF,OLED_CMD); //虚拟字节while(1) {       AHT20_Read_CTdata(CT_data);       //不经过CRC校验,直接读取AHT20的温度和湿度数据    推荐每隔大于1S读一次//AHT20_Read_CTdata_crc(CT_data);  //crc校验后,读取AHT20的温度和湿度数据 c1 = CT_data[0]*100*10/1024/1024;  //计算得到湿度值c1(放大了10倍)t1 = CT_data[1]*200*10/1024/1024-500;//计算得到温度值t1(放大了10倍) TEST_MainPage1(c1,t1);         //界面显示OLED_WR_Byte(0x2F,OLED_CMD); //开启滚动Delay_1ms(2000);}
}

四、参考

完整代码github
0.96inch SPI OLED Module

STM32开发基于SPI接口的OLED数据显示相关推荐

  1. STM32基于SPI接口的OLED数据显示

    文章目录 一.SPI简介 1.1 什么是SPI 1.2 SPI原理 1.3 SPI的连接方式 1.4 协议层 二.OLED 2.1 OLED原理 2.2 点阵编码原理与显示 三.OLED显示实验 3. ...

  2. 基于SPI接口的OLED数据显示

    文章目录 一.实验目的 二.准备工作 三.理论基础 1.0.96OLED简介 2.接线说明 四.实验步骤 1.显示自己的学号和姓名 2.显示AHT20的温度和湿度 3.上下或左右的滑动显示长字符 一. ...

  3. 基于spi接口的oled屏Android服务框架

    上一篇写了一个oled驱动,那么现在有一个问题:apk要怎么使用这个硬件,这里就需要提供一个硬件服务,apk通过这个服务就可以操作到硬件了. 基于rk3288 Android5.1 Android的硬 ...

  4. 基于SPI通信方式的OLED显示

    基于SPI通信方式的OLED显示 文章目录 基于SPI通信方式的OLED显示 1.SPI简介 2.OLED屏幕介绍 3.OLED显示屏显示数据 4.总结 5.参考文献 1.SPI简介 SPI 协议是由 ...

  5. FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用

    写在前面 SPI协议系列文章: FPGA实现的SPI协议(一)----SPI驱动 FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用 在上篇文章,简要介绍了SPI协 ...

  6. STM32开发 -- W25Q32JV SPI FlASH详解

    如需转载请注明出处:https://juyou.blog.csdn.net/article/details/103168687 flash这部分也是很重要的一部分了. 我们将利用 STM32F1 自带 ...

  7. 基于SPI方式实现OLED屏显

    文章目录 一.SPI简介 1.1物理层 1.2协议层 二.OLED 2.1定义 2.2优势 2.3模块工作模式选择 2.4模块特点 三.实验过程 3.1实验准备 3.2硬件连接 3.3程序烧录 3.3 ...

  8. STM32—4线SPI驱动SSD1306 OLED

    文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...

  9. 基于SPI/IIC接口的OLED数据显示

    文章目录 前言 1.字模生成 2.软件修改 3.连线 4.结果 前言 任务: 理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能: 显示自己的学号和姓名: 显示 ...

最新文章

  1. kettle-核心概念
  2. ORACLE 临时表空间使用率过高的原因及临时解决方案
  3. 再谈C#中的委托和事件
  4. CentOS Vi编辑器
  5. grpc入门到精通_Spring Cloud 从入门到精通(一)Nacos 服务中心初探
  6. 绿色日期控件皮肤 My97 DatePicker
  7. ECNU 3263 丽娃河的狼人传说(差分约束)
  8. 利用runtime给分类添加属性
  9. setupdll在CAB安装过程中的一些处理方法
  10. 【正点原子STM32连载】第七章 认识HAL库 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  11. 如何建立企业员工满意度测评指标体系
  12. 8类网线利弊_八类网线你用过吗?与六类、七类等网线有啥区别?
  13. dcn网络与公网_DCN网络安全分析
  14. PAT A1008 Elevate
  15. Electron-Builder打包时报错could not find: “\XXX\0-messages.nsh“
  16. 硬货来了!轻松掌握 MongDB 流式聚合操作
  17. python埃及分数_送你一份低折扣书单,Python就占了6本,人工智能2本
  18. hdu 4114 Disney's FastPass 状压dp
  19. CSP-J 2021-网络连接
  20. 使用python玩阴阳师,自动抽到SSR

热门文章

  1. java avg_JPA 查询AVG简单示例
  2. 电子技术应用: 基于ADAS的汽车倒车防碰撞系统设计与研究
  3. Halcon3D学习笔记
  4. 智能机器人-(三)轮式,足式机器人的基本概念
  5. ggplot2绘制回归曲线
  6. 网络推广还有前景吗,网络推广有前途吗
  7. 网站诊断与网络推广方案设计
  8. C语言编程题将100元钱兑换成1元,5元和10元的零钱,请用穷举法编程计算共有几种兑换方法,每种方法各兑换多少张纸币。
  9. 【收藏】Edraw Max(亿图图示)软件快捷键大全
  10. 【反传销】春节一个短暂误入传销和脱身的真实故事以及对技术的思考(二)回家之路...