嵌入式进阶——OLED显示器(I2C)

🎬 秋野酱:《个人主页》
🔥 个人专栏:《Java专栏》《Python专栏》

⛺️心若有所向往,何惧道阻且长

文章目录

    • SSD1306
    • I2C版的SSD1306
    • 原理图
    • 驱动屏幕
    • API的使用
    • 软驱动与硬驱动
    • 字体制作
    • 图形制作

SSD1306

SSD1306是一款OLED显示驱动芯片,由Solomon Systech Limited公司制造。它支持基于SPI和I2C两种通信协议,具有低功耗、高对比度和快速响应等优点,通常用于各种小型嵌入式系统和DIY电子项目中。
SSD1306芯片可以控制OLED显示屏上的像素,支持的分辨率为128x32、128x64、96x16和64x48等不同规格。其中,128x64是最常见的规格,它由128列和64行像素组成,总共有8192个像素点。SSD1306芯片还支持多种字体和字符集,可显示各种文字、图标、图形等内容。
SSD1306芯片还具有内置的RAM缓冲区,可以通过SPI或I2C接口向缓冲区写入数据,然后再通过命令将缓冲区中的数据刷新到OLED显示屏上。这种方式可以大大减少SPI或I2C通信的次数,提高数据传输效率,从而达到更好的显示效果。
总之,SSD1306是一款高性能、低功耗、易于控制的OLED显示驱动芯片,广泛应用于各种嵌入式系统和电子产品中,是一种理想的显示解决方案。
以下是对ssd1306的特点总结:

  1. 支持I2C、SPI等多种通信接口;
  2. 驱动方式简单,可快速上手;
  3. 低功耗,显示效果好,适合各种嵌入式系统;
  4. 内部集成RAM,能够缓存多页的图像;
  5. 提供多种字体和图形,支持自定义字体和图形;
  6. 支持对图像进行旋转、反转等操作;
  7. 支持多种显示模式和亮度控制。
    应用场景:
  8. 数码管;
  9. 智能手表、手环等可穿戴设备;
  10. 智能家居控制面板;
  11. 可移动终端设备的显示部分;
  12. 电子秤、体脂称等健康设备的显示部分。

I2C版的SSD1306

在这里插入图片描述
I2C版本就是在原来模组上做了外围电路,外围电路的作用是将ssd1306的模式配置为I2C模式,这样就可以采用I2C方式进行通讯

原理图

在这里插入图片描述

驱动屏幕

在这里插入图片描述
通过官方给定的示例,进行改造,运行.

  1. 通常需要检查官方是否封装了驱动。
  2. 如果有封装,如何移植
    此处我们只需要进行移植,移植需要看的是头文件。
    官方示例头文件:
    在这里插入图片描述
    ● 引脚不符合需求,需要改成自己对应的
    ● 引入的头存在差异,修改为自己的
    修改后如下:
    在这里插入图片描述

API的使用

void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 sizey);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 sizey);
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 sizey);
void OLED_ShowChinese(u8 x,u8 y,u8 no,u8 sizey);

● x, y: 为坐标
● sizey为字体高度
● 其他为显示的具体信息

软驱动与硬驱动

● 硬驱动:硬件电路实现(I2C外设)I2C数据的发送与读取,执行效率高,节省CPU的运算资源。
● 软实现:通过代码直接操作IO,进行拉高拉低,实现I2C数据的发送与读取,CPU较累。软实现优点是适用场景广泛,对硬件电路要求没那么严格。如果硬实现无法正常通信,可以尝试用软实现。
官方示例的逻辑为I2C的软件驱动方式,意思是自己通过发送高低电平,模拟I2C的协议,进行I2C通讯。
硬驱动的意思是,我的电路中通过电路设计,可以实现高低电平的变化,这个高低电平的变化遵循了I2C协议,只需要通过寄存器控制就可以打开这个功能。
一些冲突问题:
● I2C是总线,可以有很多从设备,我们扩展板上有时钟设备,也是I2C
● 时钟设备和屏幕应该可以采用I2C同时工作
● 时钟实现为默认的硬驱动
● 屏幕为软驱动
● 他们共用了相同的SCL和SDA引脚
如果不共用的话,一个软实现一个硬实现,不会有问题。共用,则需要修改一方。目前我们将软实现修改为硬实现。
修改 OLED_WR_Byte的实现即可
改为:

void OLED_WR_Byte(u8 dat,u8 mode) {
	u8 reg;
	if(mode) {
		reg = 0x40;
	} else {
		reg = 0x00;
	}
	I2C_WriteNbyte(0x3C << 1, reg, &dat, 1);
}

字体制作

  1. 打开提供的制作软件,确保为字符模式
    在这里插入图片描述
    在输入框输入要生成的文字
    在这里插入图片描述
    配置为c51输出模式
    在这里插入图片描述
    在这里插入图片描述

  2. 生成数据
    在这里插入图片描述

  3. 将生成的数据放到 oledfont.h中

图形制作

  1. 配置模式
    在这里插入图片描述
    新建图像
    在这里插入图片描述
    在这里插入图片描述
    生成数据
    点击生成
  2. 将生成的数据放到 bmp.h中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652134.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多个存储权限管理的好处,你get到了吗?

多个存储权限管理是NAS&#xff08;网络附加存储&#xff09;系统中的一个重要功能&#xff0c;它允许管理员对存储在NAS上的文件和文件夹进行细粒度的访问控制。以下是实现多个存储权限管理的关键点&#xff1a; 1.用户和用户组&#xff1a; 创建不同的用户账户和用户组&…

Mybatis——入门

新建 idea 准备 数据库 create table user(id int unsigned primary key auto_increment comment ID,name varchar(100) comment 姓名,age tinyint unsigned comment 年龄,gender tinyint unsigned comment 性别, 1:男, 2:女,phone varchar(11) comment 手机号 ) comment 用…

51-54 Sora能制作动作大片还需要一段时间 | DrivingGaussian:周围动态自动驾驶场景的复合高斯飞溅

24年3月&#xff0c;北大、谷歌和加州大学共同发布了DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes。视图合成和可控模拟可以生成自动驾驶的极端场景Corner Case&#xff0c;这些安全关键情况有助于以更低成本验证和增强自…

如何恢复已删除/丢失或未保存的 PDF 文件?

许多用户曾因某些问题删除或丢失 PDF 文件。此外&#xff0c;一些用户在关闭应用程序时未保存 PDF 文件&#xff0c;从而丢失 PDF 文件。您可以尝试一些解决方案来恢复已删除的 PDF 文件、恢复未保存的 PDF 文件&#xff0c;以及在任何其他数据丢失情况下挽救丢失的 PDF 文件。…

【免费Web系列】大家好 ,今天是Web课程的第九天点赞收藏关注,持续更新作品 !

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 部门管理开发 1. 删除部门 1.1 需求分析 删除部门数据。在点击 "删除" 按钮&#xff0c;会根据ID删除部门数据。 了解了需求之后&#xff0c;我们再看看接口文档中&#xff0c;关于删除部门…

js中的作用域和作用域链,你未必能分清,用代码示例告诉你。

有很多小伙伴分不清二者&#xff0c;看了网上教程也是很迷茫&#xff0c;好吧让我告诉你吧。 一、作用域和作用域链 作用域是指在程序中变量和函数的可访问性和可见性范围。作用域决定了在哪些地方可以访问到变量和函数&#xff0c;以及在哪些地方可以对其进行修改和调用。 …

韩顺平0基础学java——第12天

p250-263 this细节 4的补充&#xff1a;意思是不能在成员方法里通过this调用构造器。 补充 引用类型&#xff08;如数组&#xff09;可以是null&#xff0c;相当于记了个名字&#xff0c;还没有开空间。如果数组是{}&#xff0c;则是开了空间&#xff0c;没有放元素进去。 …

Text Control 控件 中 Service Pack 3:MailMerge 支持 SVG 图像

图像的合并方式与报告模板中的合并字段相同。占位符在设计时添加&#xff0c;并与文件、数据库或内存中的数据合并。可以将图像对象添加到具有指定名称的模板中。数据列必须包含字节数组形式的二进制图像数据、System.Drawing.Image 类型的对象、文件名、十六进制或 Base64 编码…

npm install node-sass 安装失败的解决方案:利用国内镜像加速安装

在开发前端项目时&#xff0c;使用Sass作为CSS预处理器是很多开发者的选择。然而&#xff0c;在通过npm安装其Node.js绑定库node-sass时&#xff0c;一些开发者可能会遇到安装失败的问题&#xff0c;尤其是网络原因导致的下载缓慢或中断。本文将指导你如何通过更换为国内镜像源…

其二:使用递归法实现二分搜索

开篇 本文主要是利用递归法来实现一个简单的二分搜索程序。题目来源是《编程珠玑》第4章课后习题3。 问题概要 编写并验证一个递归的二分搜索程序, 并返回t在数组x[0…n-1]中第一次出现的位置。 思路分析 本题的思路与第一版相似&#xff0c;不过不同的是&#xff0c;为确保返回…

全屏后 element-ui 组件不显示

文章目录 问题分析ElementUI 解决方案ElementPlus 解决方案 注意 问题 上篇我们说到如何 将 DIV 全屏展示 在使用将页面中指定的 DIV 全屏展示后&#xff0c;出现全屏后 element-ui 组件不显示&#xff0c;全屏后展示的提示信息是没有的&#xff0c;如下如所示&#xff1a; 全…

C语言之指针详解(5)(含有易错笔试题)

文章目录 一、sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof 和 strlen 的对比 二、数组和指针笔试题2.1 一维数组2.2 字符数组2.3 二维数组 三、指针运算笔试题3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目7 一、sizeof和strlen的对比 有一个很神…

AS加密技术的实战应用与解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、AS加密技术简介 二、AS加密技术的实现过程 1. 生成公钥和私钥 2. 使用公钥加密数据 …

C++ day1 作业练习

整理思维导图 定义自己的命名空间my_sapce&#xff0c;在my_sapce中定义string类型的变量s1&#xff0c;再定义一个函数完成对字符串的逆置。 #include <iostream> #include <cstring>using namespace std; namespace my_space {string s1; }void show() {cout<…

基于springboot的论坛管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的论坛管理系统3拥有两种角色 管理员&#xff1a;用户管理、公告管理、帖子管理、分类管理、留言管理、系统管理等 用户&#xff1a;登录注册、查看发布帖子等 1.1 背景…

OM电商系统asp.net

OM电商系统&#xff0c;可以让顾客全面了解商品的详细信息&#xff0c;消除网上购物的信息不对称问题。通过商品分类来组织众多的商品&#xff0c;方便顾客找到所需要的商品。提供客服顾客互动机制&#xff0c;提高顾客的参与度。通过设计合理的订单处理流程&#xff0c;提高顾…

YOLOv10介绍与推理--图片和视频演示(附源码)

导 读 本文主要对YOLOv10做简单介绍并给出推理图片和视频的步骤演示。 YOLOv10简介 YOLOv10是清华大学的研究人员在Ultralytics Python包的基础上&#xff0c;引入了一种新的实时目标检测方法&#xff0c;解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑…

JavaEE---多线程进阶之JUC的常见类

JUC(java.util.conccurrent) : concurrent(并发)是多线程相关的组件 Callable接口 也是一种创建线程的方式,适用于想让某个线程执行逻辑后,返回一个结果 相比之下Runnable不关注结果 改进 以下是Callable的基本使用方法 运行结果: ReentrantLock 信号量Semaphore 也就…

基于PostGIS的mvt动态矢量切片的后台地图服务和前端调用

目录 一、背景 二、矢量切片 三、Mapbox的矢量切片格式 四、PostGIS生成矢量切片 ST_AsMVT: ST_AsMVTGeom: 五、导入试验数据 六、编写PostGIS函数 七:Java后端实现 八、Openlayers前端调用 一、背景 矢量切片技术目前已成为互联网地图的主流技术,无论是Mapbox还…

ChatGPT Mac客户端 下载安装教程(免费 不限次数使用 还支持语音聊天)

ChatGPT Mac客户端 下载安装教程&#xff08;免费 不限次数使用 还支持语音聊天&#xff09; 原文链接&#xff1a;https://blog.csdn.net/weixin_48311847/article/details/139248625 免费 不限次数使用 还支持语音聊天