嵌入式系统基础学习笔记(九):基于 SPI 协议在 0.96 寸 OLED上【平滑显示汉字】及【温湿度数据采集显示】

本文主要是介绍嵌入式系统基础学习笔记(九):基于 SPI 协议在 0.96 寸 OLED上【平滑显示汉字】及【温湿度数据采集显示】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、准备工作
  • 二、显示姓名、滚动显示
  • 三、 显示AHT20传感器数据

一、准备工作

开发硬件:

  • 野火STM32 MINI开发板
  • SPI0.96寸显示屏
  • AHT20 温湿度传感器

开发软件:

  • Keil 5
  1. 打开keil 5,载入厂家给出的 Demo 程序,链接:https://detail.tmall.com/item.htm?spm=a1z0d.6639537.1997196601.80.201d74841fbMPw&id=556732249552

下载好后解压,在文件路径:
X;\0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0\1-Demo\Demo_STM32\0.96inch_OLED_Demo_STM32F103RCT6_Hardware_4-wire_SPI\PROJECT中找到keil5工程文件,打开

二、显示姓名、滚动显示

在厂家的 Demo 程序中有许多的演示部分,我们都不需要,要显示自己的姓名学号和滚动显示内容,只需要用到下面的部分

  1. 想要显示的中文的点阵数据,在oledfont.h文件里面,需要生成字模软件

在这里插入图片描述
2. 显示函数,写在test.c里面

在这里插入图片描述

  1. main函数功能实现

在这里插入图片描述
在设置好烧录选项后烧录进开发板中,结果如下

在这里插入图片描述

三、 显示AHT20传感器数据

AHT20接收数据和显示函数

void read_AHT20_once(void)
{//延时 10 微妙delay_ms(10);//传输数据前进行启动传感器和软复位reset_AHT20();delay_ms(10);//查看使能位init_AHT20();delay_ms(10);//触发测量startMeasure_AHT20();delay_ms(80);//读数据read_AHT20();delay_ms(5);
}void reset_AHT20(void)
{//数据传输开始信号I2C_Start();//发送数据I2C_WriteByte(0x70);//接收 ACK 信号ack_status = Receive_ACK();//发送软复位命令(重启传感器系统)I2C_WriteByte(0xBA);//接收 ACK 信号ack_status = Receive_ACK();//停止 I2C 协议I2C_Stop();
}//0x70 —> 0111 0000 前七位表示 I2C 地址,第八位为0,表示 write
//0xE1 —> 看状态字的校准使能位Bit[3]是否为 1
//0x08 0x00 —> 0xBE 命令的两个参数,详见 AHT20 参考手册
void init_AHT20(void)
{//传输开始I2C_Start();//写入 0x70 数据I2C_WriteByte(0x70);//接收 ACK 信号ack_status = Receive_ACK();//写入 0xE1 数据I2C_WriteByte(0xE1);ack_status = Receive_ACK();//写入 0x08 数据I2C_WriteByte(0x08);ack_status = Receive_ACK();//写入 0x00 数据I2C_WriteByte(0x00);ack_status = Receive_ACK();//停止 I2C 协议I2C_Stop();
}//0x70 —> 0111 0000 前七位表示 I2C 地址,第八位为0,表示 write
//0xAC —> 触发测量
//0x33 0x00 —> 0xAC 命令的两个参数,详见 AHT20 参考手册
void startMeasure_AHT20(void)
{//启动 I2C 协议I2C_Start();I2C_WriteByte(0x70);ack_status = Receive_ACK();I2C_WriteByte(0xAC);ack_status = Receive_ACK();I2C_WriteByte(0x33)<

这篇关于嵌入式系统基础学习笔记(九):基于 SPI 协议在 0.96 寸 OLED上【平滑显示汉字】及【温湿度数据采集显示】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915352

相关文章

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

MySQL数据脱敏的实现方法

《MySQL数据脱敏的实现方法》本文主要介绍了MySQL数据脱敏的实现方法,包括字符替换、加密等方法,通过工具类和数据库服务整合,确保敏感信息在查询结果中被掩码处理,感兴趣的可以了解一下... 目录一. 数据脱敏的方法二. 字符替换脱敏1. 创建数据脱敏工具类三. 整合到数据库操作1. 创建服务类进行数据库

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC