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.rhkb.cn/news/118694.html

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

相关文章

2023年05月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:字符串插入 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的’\0’。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。 时间限制:1000 内存…

怎样来实现流量削峰方案

削峰从本质上来说就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。 1.消息队列解决削峰 要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直…

C语言每日一练--Day(15)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:珠玑妙算 两数之和 💓博主csdn个人主页:小小uni…

jmeter 固定定时器

固定定时器(Constant Timer)是一个定时器元件,可以在线程组中的每个线程之间添加固定的延迟时间。固定定时器会对每个线程的执行进行一定的暂停。 聊一下和线程组中的调度器对线程组执行时长的影响: 相同: 都会影响线…

前端学习之轮播图

前端学习之轮播图 该案例涉及到定时器的使用&#xff0c;元素的活获取&#xff0c;函数的调用等知识的运用 显示图如下&#xff1a;可以点击图标跳转图片&#xff0c;也可以自动轮播 源码如下 <!DOCTYPE html> <html><head><meta charset"UTF-8&q…

数学建模:Yalmip求解线性与非线性优化问题

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 线性优化 使用 Yalmip 求解线性规划最优值&#xff1a; m i n { − x 1 − 2 x 2 3 x 3 } x 1 x 2 ⩾ 3 x 2 x 3 ⩾ 3 x 1 x 3 4 0 ≤ x 1 , x 2 , x 3 ≤ 2 \begin{gathered}min\{-x_1-2x_23x_3\} \…

Python|小游戏之猫捉老鼠!!!

最近闲(mang)来(dao)无(fei)事(qi)&#xff0c;喜欢研究一些小游戏&#xff0c;本篇文章我主要介绍使用 turtle 写的一个很简单的猫捉老鼠的小游戏&#xff0c;主要是通过鼠标控制老鼠(Tom)的移动&#xff0c;躲避通过电脑控制的猫(Jerry)的追捕。 游戏主体思考逻辑&#xff1…

es5的实例__proto__(原型链) prototype(原型对象) {constructor:构造函数}

现在看这张图开始变得云里雾里&#xff0c;所以简单回顾一下 prototype 的基本内容&#xff0c;能够基本读懂这张图的脉络。 先介绍一个基本概念&#xff1a; function Person() {}Person.prototype.name KK;let person1 new Person();在上面的例子中&#xff0c; Person …

C++:日期类

学习目标&#xff1a; 加深对四个默认构造函数的理解&#xff1a; 1.构造函数 2.析构函数 3.拷贝构造 4.运算符重载 实现功能 1.比较日期的大小 2.日期-天数 3.前/后置&#xff0c;-- 这里基本会使用运算符重载 定义一个日期类 class Date { public://1.全缺省参数的构造函数Da…

简明易懂:Python中的分支与循环

文章目录 前言分支结构if 语句&#xff1a;单一条件判断else语句&#xff1a;提供备选方案elif 语句&#xff1a;多条件判断嵌套的分支结构&#xff1a;复杂条件逻辑 循环结构for循环&#xff1a;遍历序列range()函数与for循环while循环&#xff1a;条件重复循环控制&#xff1…

spring boot项目生成容器并运行

一个安静的周末&#xff0c;shigen又睡懒觉了&#xff0c;上次说的拖延症的惩罚来了&#xff1a;早晚各100个健腹轮练习&#xff0c;早上的已经完成了。今天的文章来的有点晚&#xff0c;但是依旧保持质量。 springboot项目生成容器并运行 背景 将springboot项目打包成jar包&…

植物根系基因组与数据分析

1.背景 这段内容主要是关于植物对干旱胁迫的反应&#xff0c;并介绍了生活在植物体内外以及根际的真菌和细菌的作用。然而&#xff0c;目前对这些真菌和细菌的稳定性了解甚少。作者通过调查微生物群落组成和微生物相关性的方法&#xff0c;对农业系统中真菌和细菌对干旱的抗性…

大屏开发,浏览器的可视区域和设备的分辨率

在线屏幕检测 - 显示器检测 - 显示器坏点检测工具

【高危】Apache Airflow Spark Provider 反序列化漏洞 (CVE-2023-40195)

zhi.oscs1024.com​​​​​ 漏洞类型反序列化发现时间2023-08-29漏洞等级高危MPS编号MPS-qkdx-17bcCVE编号CVE-2023-40195漏洞影响广度广 漏洞危害 OSCS 描述Apache Airflow Spark Provider是Apache Airflow项目的一个插件&#xff0c;用于在Airflow中管理和调度Apache Spar…

mac软件安装后打开软件显示损坏

#mac传输安装包后安装后打开软件显示损坏处理方式 以postman为例&#xff0c;输入前面的代码&#xff0c;打开访达&#xff0c;把有问题的软件拉到命令行窗口&#xff0c;确认即可 sudo xattr -r -d com.apple.quarantine /Applications/Postman.app sudo xattr -r -d com.ap…

docker 安装 MySQL5.7

1、拉取镜像 docker pull mysql:5.7 2、创建容器 docker run \ -d \ -p 3306:3306 \ --name mysql \ --privilegedtrue \ -v /var/docker/mysql/log:/var/log/mysql \ -v /var/docker/mysql/data:/var/lib/mysql \ -v /var/docker/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_…

外贸爬虫系统

全球智能搜索 全球智能搜索 支持全球所有国家搜索引擎&#xff0c;及社交平台&#xff0c;精准定位优质的外贸客户&#xff0c;免翻墙 全球任意国家地区实时采集 搜索引擎全网邮箱电话采集 社交平台一键查看采集&#xff08;Facebook,Twitter,Linkedin等&#xff09; 职位…

从零开始搭建AI网站(6):如何使用响应式编程

响应式编程&#xff08;Reactive Programming&#xff09;是一种编程范式&#xff0c;旨在处理异步数据流和事件流。它通过使用观察者模式和函数式编程的概念&#xff0c;将数据流和事件流抽象为可观察的序列&#xff0c;然后通过操作这些序列来实现各种功能。 在响应式编程中…

python+requests实现接口自动化测试

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

css 左右宽固定,中间自适应——双飞翼布局

最近面试的时候遇到一个提问说&#xff0c;如何做到一个左右宽度固定&#xff0c;中间自适应的布局&#xff0c;我的答案不重要&#xff0c;重要的是不是面试官想听到的答案&#xff0c;这样问大概率他想听到的答案一定是双飞翼布局&#xff0c;所以今天就手敲一个双飞翼布局让…