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 针对该视频,别人的 笔记 质谱是一台体重秤,称的不是人,而是分子、原子的体重 不同分子有不同分子量是质谱仪工作的底层逻辑 图片来自:【蛋白组】蛋白质组定量技术的原理和…

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

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

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…

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 百度…

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

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

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

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

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

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

【计算机硬件CPU】

【计算机硬件CPU】 1、计算机硬件的五大单元2、一切设计的起点: CPU 的架构3、精简指令集 (Reduced Instruction Set Computer, RISC)4、复杂指令集(Complex Instruction Set Computer, CISC)5、例题:最新的…

Vue框架--Vue中el和data的两种写法

data与el的2种写法 1.el有2种写法 (1).new Vue时候配置el属性。 (2).先创建Vue实例,随后再通过vm.$mount(#root)指定el的值。 2.data有2种写法 (1).对象式 (2).函数式 如何选择:目前哪种写法都可以,以后学习到组件时&#xff…

一些测试知识

希望能起到帮助,博主主页: https://blog.csdn.net/qq_57785602/category_12023254.html?spm1001.2014.3001.5482 软件测试理论 测试的依据: 需求,规格说明,模型,用户需求等 什么是软件测试 描述一种来…

Python Opencv实践 - 矩形轮廓绘制(直边矩形,最小外接矩形)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) #通过cv.threshold转换为二值图 ret,thresh cv.threshold(img_gray,…

手写Mybatis:第5章-数据源的解析、创建和使用

文章目录 一、目标:数据源的解析、创建和使用二、设计:数据源的解析、创建和使用三、实现:数据源的解析、创建和使用3.1 引入依赖3.2 工程结构3.3 数据源解析、创建和使用关系图3.4 事务管理接口和事务工厂3.4.1 事务的隔离级别3.4.2 定义事务…

配置环境变量的作用

配置环境变量的作用 一般运行过程:寻找QQ.exe所在的目录,输入QQ.exe配置环境变量:把QQ所在的路径配给操作系统Path, 在任何路径下都能运行QQ.exe 举例: 定义变量:SCALA_HOME SCALA_HOME、JAVA_HOME 等这…

【论文精读】Learning Transferable Visual Models From Natural Language Supervision

Learning Transferable Visual Models From Natural Language Supervision 前言Abstract1. Introduction and Motivating Work2. Approach2.1. Creating a Sufficiently Large Dataset2.2. Selecting an Efficient Pre-Training Method2.3. Choosing and Scaling a Model2.4. P…

基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)

前言:本文为手把手教学ADC采样及各式滤波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学,通过各式常见滤波的实验结果进行分析对比,搭配VOFA工具直观的展示滤波效果。ADC与滤波算法都是嵌入式较为…

【FreeRTOS】信号量的相关函数使用及示例解释

FreeRTOS中的信号量是一种用于任务间同步的机制。它可以用来实现任务之间的互斥访问共享资源或者等待某个事件发生。 文章目录 信号量类型1. 二进制信号量(Binary Semaphore):2. 计数信号量(Counting Semaphore)&…