STM32开发基于SPI接口的OLED数据显示
文章目录
- 一、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 | 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. 任务要求
显示自己的学号和姓名;
显示AHT20的温度和湿度;
上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者一段歌词或诗词(最好使用硬件刷屏模式)。
2. 准备工作
- SPI_PLED模块demo程序下载
- 提取链接中文点阵字库及显示工具程序
提取码:xfut
复制这段内容后打开百度网盘手机App,操作更方便哦
3. 演示如下
当下载上面的demo程序后用keil打开,即可在main.c中编写以下代码
- 先显示姓名及学号
显示汉字需要用上面的工具提取相应的字模,使用教程也在其中
添加到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);}
}
- 效果
- 将温湿度的数据显示在屏幕上
基于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数据显示相关推荐
- STM32基于SPI接口的OLED数据显示
文章目录 一.SPI简介 1.1 什么是SPI 1.2 SPI原理 1.3 SPI的连接方式 1.4 协议层 二.OLED 2.1 OLED原理 2.2 点阵编码原理与显示 三.OLED显示实验 3. ...
- 基于SPI接口的OLED数据显示
文章目录 一.实验目的 二.准备工作 三.理论基础 1.0.96OLED简介 2.接线说明 四.实验步骤 1.显示自己的学号和姓名 2.显示AHT20的温度和湿度 3.上下或左右的滑动显示长字符 一. ...
- 基于spi接口的oled屏Android服务框架
上一篇写了一个oled驱动,那么现在有一个问题:apk要怎么使用这个硬件,这里就需要提供一个硬件服务,apk通过这个服务就可以操作到硬件了. 基于rk3288 Android5.1 Android的硬 ...
- 基于SPI通信方式的OLED显示
基于SPI通信方式的OLED显示 文章目录 基于SPI通信方式的OLED显示 1.SPI简介 2.OLED屏幕介绍 3.OLED显示屏显示数据 4.总结 5.参考文献 1.SPI简介 SPI 协议是由 ...
- FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用
写在前面 SPI协议系列文章: FPGA实现的SPI协议(一)----SPI驱动 FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用 在上篇文章,简要介绍了SPI协 ...
- STM32开发 -- W25Q32JV SPI FlASH详解
如需转载请注明出处:https://juyou.blog.csdn.net/article/details/103168687 flash这部分也是很重要的一部分了. 我们将利用 STM32F1 自带 ...
- 基于SPI方式实现OLED屏显
文章目录 一.SPI简介 1.1物理层 1.2协议层 二.OLED 2.1定义 2.2优势 2.3模块工作模式选择 2.4模块特点 三.实验过程 3.1实验准备 3.2硬件连接 3.3程序烧录 3.3 ...
- STM32—4线SPI驱动SSD1306 OLED
文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...
- 基于SPI/IIC接口的OLED数据显示
文章目录 前言 1.字模生成 2.软件修改 3.连线 4.结果 前言 任务: 理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能: 显示自己的学号和姓名: 显示 ...
最新文章
- kettle-核心概念
- ORACLE 临时表空间使用率过高的原因及临时解决方案
- 再谈C#中的委托和事件
- CentOS Vi编辑器
- grpc入门到精通_Spring Cloud 从入门到精通(一)Nacos 服务中心初探
- 绿色日期控件皮肤 My97 DatePicker
- ECNU 3263 丽娃河的狼人传说(差分约束)
- 利用runtime给分类添加属性
- setupdll在CAB安装过程中的一些处理方法
- 【正点原子STM32连载】第七章 认识HAL库 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- 如何建立企业员工满意度测评指标体系
- 8类网线利弊_八类网线你用过吗?与六类、七类等网线有啥区别?
- dcn网络与公网_DCN网络安全分析
- PAT A1008 Elevate
- Electron-Builder打包时报错could not find: “\XXX\0-messages.nsh“
- 硬货来了!轻松掌握 MongDB 流式聚合操作
- python埃及分数_送你一份低折扣书单,Python就占了6本,人工智能2本
- hdu 4114 Disney's FastPass 状压dp
- CSP-J 2021-网络连接
- 使用python玩阴阳师,自动抽到SSR
热门文章
- java avg_JPA 查询AVG简单示例
- 电子技术应用: 基于ADAS的汽车倒车防碰撞系统设计与研究
- Halcon3D学习笔记
- 智能机器人-(三)轮式,足式机器人的基本概念
- ggplot2绘制回归曲线
- 网络推广还有前景吗,网络推广有前途吗
- 网站诊断与网络推广方案设计
- C语言编程题将100元钱兑换成1元,5元和10元的零钱,请用穷举法编程计算共有几种兑换方法,每种方法各兑换多少张纸币。
- 【收藏】Edraw Max(亿图图示)软件快捷键大全
- 【反传销】春节一个短暂误入传销和脱身的真实故事以及对技术的思考(二)回家之路...