oled--SSD1315驱动

OLED

接口方式(由硬件电路确定):6800、8080、spi、i2c.

常见的驱动芯片:ssd1306、ssd1315。

oled屏幕的发光原理不同于lcd,上电后无法直接显示,需要初始化后才能正常显示。

SSD1315手册资料

SSD1315是一款单芯片CMOS OLED/PLED驱动控制芯片,直接从内部128*64位GDDRAM中显示数据。

GDDRAM(Graphic Display Data RAM,图形显示数据RAM)

GDDRAM是位映射静态RAM,保存要显示的位模式。RAM的大小为128*64位,又分为8页(PAGE0~PAGE7),用于单色128*64点阵显示。

当一个数据字节写入GDDRAM时,将当前列同一页的所有行图像数据全部填充(即填充列地址指针所指向的整列,8位)。D0数据位写在最上面一行,D7数据位写在最下面一行。

ssd1315基本命令

设置页寻址模式的列起始地址(00h~0fh、10h~17h)

00h~0fh该命令指定页面寻址模式的RDDRAM的8位列起始地址的较低部分(8位列地址的低四位)。列地址将随着每次数据访问而增加。

10h~17h该命令指定页面寻址模式的RDDRAM的8位列起始地址的较高部分(8位列地址的高四位)。列地址将随着每次数据访问而增加。

页寻址模式会讲到,这命令就会很清楚了。

设置页寻址模式的页起始地址(B0h~B7h)

该命令指定页面寻址模式的RDDRAM的页起始地址(PAGE0~PAGE7)。页寻址模式会讲到,这命令就会很清楚了。

设置内存寻址模式(20h)

3种内存寻址模式:水平寻址模式、垂直寻址模式、页寻址模式。

页寻址模式(A[1:0]=10b)

在页寻址模式下,在GDDRAM进行读写后会自动移向下一个COL,用户必须设置新的PAGE和COL地址才能访问下一个PAGE的内容。在页寻址模式下,PAGE的移动顺序和列地址方向如下图所示。(先确定PAGE,再确定COL,最后写入数据)

页寻址模式下正常的GDDRAM读写,需要通过以下步骤来定义RAM的起始访问指针位置:

通过命令 b0h~b7h 设置目标显示位置的页面起始地址(b固定,0~7对应PAGE0~PAGE7)。

通过命令 00h~0fh 设置指针的较低部分的起始列地址(0固定,0~f搭配下方的0~7)。

通过命令 10h~17h 设置指针的较高部分的起始列地址(1固定,0~7搭配上方的0~f)。

举例:假如页地址 = b2h,较低的起始列地址 = 03h,较高的起始列地址 = 15h。

那么较低的起始列地址剥离开始的0,3对应8位的低4位,即03h。

那么较高的起始列地址剥离开始的1,5对应8位的高4位,即50h。

所以起始列地址 = 50h | 03h = 53h = 83。即对应的PAGE2的COL83。

水平寻址模式(A[1:0]=00b)

在水平寻址模式下,在GDDRAM进行读写后会自动移向下一个COL。当列地址指针到达COL127时,列地址指针重置为COL0,页面地址指针加1。当列地址指针和页地址指针都到达结束地址时,指针被重置为PAGE0_COL0。

水平寻址模式下正常的GDDRAM读写,需要通过以下步骤来定义RAM的起始访问指针位置:

通过命令 21h 设置目标显示位置的列起始地址和列结束地址。(水平)

通过命令 22h 设置目标显示位置的页起始地址和页结束地址。(垂直)

垂直寻址模式(A[1:0]=00b)

在垂直寻址模式下,在GDDRAM进行读写后会自动移向下一个PAGE。当页地址指针到达PAGE7时,页地址指针重置为PAGE0,列地址指针加1。当列地址指针和页地址指针都到达结束地址时,指针被重置为PAGE0_COL0。

垂直寻址模式下正常的GDDRAM读写,需要通过以下步骤来定义RAM的起始访问指针位置:

通过命令 21h 设置目标显示位置的列起始地址和列结束地址。(水平)

通过命令 22h 设置目标显示位置的页起始地址和页结束地址。(垂直)

设置列地址和页地址(21h、22h)

21h这个三字节命令指定GDDRAM的列起始地址和列结束地址。该命令还设置列地址指针为列起始地址。

22h这个三字节命令指定GDDRAM的页起始地址和页结束地址。该命令还设置页地址指针为页起始地址。

举例:假如列起始地址 = 2,列结束地址 = 125,页起始地址 = 1,页结束地址 = 6,通过 20h 命令设置为水平寻址模式。

那么GDDRAM的可访问范围仅为COL2~COL125和PAGE1~PAGE6。另外,将列地址指针设置为2,页地址指针设置为1。

指针移动方向还是和水平寻址方式一样,只不过范围限制了,即在范围内维持了水平寻址模式的指针移动方向。即使指针到达了PAGE6_COL125,指针会重置为PAGE1_COL2。

设置显示起始线(40h~7fh)

该命令设置显示起始行寄存器,通过选择 0~63 值来确定GDDRAM的起始地址。

当值为0时,将RAM第0行映射到COM0;当值为1时,将RAM第0行映射到COM1;类推。(40h~0~COM0、50h~16~COM16、...)

设置对比度控制(81h)

该命令设置显示屏的对比度设置(有效范围:01h~ffh)。分段输出电流随着对比阶跃值的增加而增加。

正反显示(A6h / A7h)

正常显示:1表示开像素。

反向显示:0表示开像素。

设置显示开关(AEh / AFh)

AEh:显示关闭。

AFh:显示打开。

设置COM输出扫描方向(C0h / C8h)

该命令设置COM输出的扫描方向,允许oled模块设计的布局灵活性。此外,一旦发出此命令,显示将显示。例如,如果在正常显示期间发送此命令,则图像显示将立即垂直翻转。

NOP(E3h)

无操作命令。

电荷泵设置(8Dh)

此命令控制电荷泵的开关。

电荷泵必须通过以下命令顺序启动:

8Dh:电荷泵设置

14h / 94h / 95h:使能不同输出模式下的电荷泵

AFh:显示打开

水平滚动设置(26h / 27h)

该命令由7个连续字节组成,用于设置水平滚动参数,并确定滚动的起始页、结束页和滚动速度。

在发出此命令之前,必须禁用水平滚动(2Eh),否则RAM内容可能会损坏。

连续垂直和水平滚动设置(29h / 2Ah)

该命令由8个连续字节组成,用于设置连续垂直滚动参数,并确定滚动的起始页、结束页、起始列、结束列、滚动速度、水平和垂直滚动偏移量。

在发出此命令之前,必须禁用水平滚动(2Eh),否则RAM内容可能会损坏。

如果命令29h / 2Ah的垂直滚动偏移字节E[3:0]被设置为0,则只执行水平滚动(如命令26h / 27h);

如果将列滚动偏移字节A[0]被设置为0,则只执行垂直滚动;

如果E[3:0]和A[0]都设置为0,则可以启用(水平+垂直)滚动;

建议设置F[6:0]=00h和G[6:0]=7Fh,则可以启用全列对角线滚动模式。

取消滚动(2Eh)

此命令停止滚动。发送2Eh命令去停止滚动后,RAM数据需要重写。

激活滚动(2Fh)

该命令启动滚动,只有在滚动设置命令26h / 27h / 29h / 2Ah定义了滚动设置参数后才应该发出。最后一个滚动设置命令中的设置将覆盖前一个滚动设置命令中的设置。

激活滚动后,禁止以下操作:

RAM访问(数据读写)

更改水平滚动设置参数

设置垂直滚动区域(A3h)

该命令由3个连续字节组成,用于设置垂直滚动区域。对于连续垂直滚动功能(29h / 2Ah命令),可以设置垂直滚动的行数小于或等于MUX比率。

内容滚动设置(2Ch / 2Dh)

该命令由7个连续字节组成,用于设置水平滚动参数,并确定滚动的起始页、结束页、开始列和结束列。

发送一次命令2Ch / 2Dh,将水平滚动一列。

设置淡出和闪烁(23h)

该命令设置淡出模式并调整每个淡出步骤的时间间隔。

设置放大(D6h)

在“放大”模式下,显示屏的一行显示内容将扩展为两行,即第0~31行内容填充整个64行的显示面板。

注意:面板必须在可选的COM引脚配置放大功能(DAh命令 A[4]=1)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pom.xml配置文件失效,显示已忽略的pom.xml --- 解决方案

现象: 在 Maven 创建模块Moudle时,由于开始没有正确创建好,所以把它删掉了,然后接着又创建了与一个与之前被删除的Moudle同名的Moudle时,出现了 Ignore pom.xml,并且新创建的 Module 的 pom.xml配置文件失效&#xf…

OpenGL-入门-BMP像素图glReadPixels(1)实现读取屏幕中间的颜色和获取屏幕上鼠标点击位置的颜色

glReadPixels函数用于从帧缓冲区中读取像素数据。它可以用来获取屏幕上特定位置的像素颜色值或者获取一块区域内的像素数据。下面是该函数的基本语法: void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *da…

质谱技术对蛋白质进行鉴定

参考B站教学视频: 质谱如何鉴定蛋白质_哔哩哔哩_bilibili 针对该视频,别人的 笔记 质谱是一台体重秤,称的不是人,而是分子、原子的体重 不同分子有不同分子量是质谱仪工作的底层逻辑 图片来自:【蛋白组】蛋白质组定量技术的原理和…

C++的单例模式

忘记之前有没有写过单例模式了。 再记录一下: 我使用的代码: #ifndef SINGLETON_MACRO_HPP #define SINGLETON_MACRO_HPP#define SINGLETON_DECL(class_name) \ public: \static class_name& instance() { \static class_name s_instance; \return …

【UE 材质】实现方形渐变、中心渐变材质

步骤 一、实现方形渐变 1. 新建一个材质,材质域选择“后期处理” 2. 通过“Mask”节点单独获取R、G通道,可以看到R通道是从左到右0~1之间的变化,对应U平铺 可以看到G通道是从上到下0~1之间的变化,对应V平铺 3. 完善如下节点 二、…

vim 使用/进行关键字搜索,跳转到下一个搜索结果的快捷键

在命令行中使用 / 或 ? 向下或向上搜索指定的字符,字符可手动输入 或 粘贴指定寄存器里的字符输入。通过 n 或 N 继续原方向或反向跳转到下一个匹配到的位置。 此外还可以同时进行多个匹配(关键字)的搜索,不同匹配项之间使用\|隔开即可。只要找到满足这…

里氏替换原则在继承关系中子类对父类方法的重写(覆盖)或重载时应遵循的规则

什么是里氏替换原则:只要父类能出现的地方子类就可以出现,而且 替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。…

非关系型数据库Redis的安装

一、关系型数据库与非关系型数据库的区别:---------面试高频率问题 1、首先了解一下 什么是关系型数据库? 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。 优点: 易于维护:都是使用…

2023年高教社杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 最短时…

数据分析作业2

中国在 2020 年开展第七次全国人口普查,截止 2021 年 5 月 11 日普查结果公布,全国人口共1411778724人。单从数据表格看相关数据不够直观,需要进行数据可视化展示,方便查看数据结果。 任务一:链接 MySQL 数据库&#x…

【C++设计模式】依赖倒转原则

2023年8月30日,周三上午 目录 概述含义举个简单的例子传统做法使用依赖倒转原则代码说明再举一个具体的例子以生活为例 概述 依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个基本原则。 含义 高层模块不应该依赖低层模块,两者都应该依…

npm报错sass

1.删除node模块 2.删除node-sass: npm uninstall node-sass 3.重新下载对应版本node-sass: npm i node-sass7.0.3(指定版本 控制台报错什么版本就写什么版本) 4.再运行项目 或者

jdk-8u371-linux-x64.tar.gz jdk-8u371-windows-x64.exe 【jdk-8u371】 全平台下载

jdk-8u371 全平台下载 jdk-8u371-windows-x64.exejdk-8u371-linux-x64.rpmjdk-8u371-linux-x64.tar.gzjdk-8u371-macosx-x64.dmgjdk-8u371-linux-aarch64.tar.gz 下载地址 迅雷云盘 链接:https://pan.xunlei.com/s/VNdLL3FtCnh45nIBHulh_MDjA1?pwdw4s6 百度…

C语言:截断+整型提升练习

详情关于整型提升与截断见文章:《C语言:整型提升》 一、代码一 int main() { char a -1; signed char b -1; unsigned char c -1; printf("%d %d %d", a, b, c); return 0; } 求输出结果 解析如下代码: int mai…

基于Matlab实现生活中的图像信号分类(附上源码+数据集)

在我们的日常生活中,我们经常会遇到各种各样的图像信号,例如照片、视频、图标等等。对这些图像信号进行分类和识别对于我们来说是非常有用的。在本文中,我将介绍如何使用Matlab来实现生活中的图像信号分类。 文章目录 介绍源码数据集下载 介…

738.单调递增的数字 ,968.监控二叉树 +贪心总结

738.单调递增的数字 示例&#xff1a;如将322变成成单调递增的最大数字即299,如3442变成3399 首先要将n转换成字符数组&#xff0c; 其次遍历数组进行两次判断&#xff1a; 第一次是遍历数字时求当前最大的数字max。然后只在max<arr[i]的时候才更新max和对应的下标idx 第二…

Ajax与jQuery

目录 Ajax是一种异步无刷新的技术 Ajax的优点&#xff1a; 可以无需刷新页面与服务器端进行通信允许根据用户事件来更新部分页面内容 Ajax的缺点&#xff1a; 没有浏览历史&#xff0c;不能回退存在跨域问题&#xff08;同源&#xff09;SEO&#xff08;搜索引擎优化&#x…

Lambda表达式第一版

1、匿名内部类 package com.lambda;import java.util.Arrays; import java.util.Comparator;public class LambdaDemo1 {public static void main(String[] args) {Integer[] arr {2, 3, 1, 5, 6, 7, 8, 4, 9};Arrays.sort(arr, new Comparator<Integer>() {Overridepub…

什么是伪类链(Pseudo-class Chaining)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Pseudo-class Chaining⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚…

(十九)大数据实战——Flume数据采集框架安装部署

前言 本节内容我们主要介绍一下大数据数据采集框架flume的安装部署&#xff0c;Flume 是一款流行的开源分布式系统&#xff0c;用于高效地采集、汇总和传输大规模数据。它主要用于处理大量产生的日志数据和事件流。Flume 支持从各种数据源&#xff08;如日志文件、消息队列、数…