9.[STM32]0.96寸OLED难理解?不妨来看看这个

🍌
🍌🍌
作者简介:大家好啊,我叫DW,每天分享一些我新学到的知识,期待和大家一起进步
🍋
🍋🍋
系列专栏:STM32
🍎
🍎🍎
🍎🍎🍎
🌞小实验目标:在OLED上显示四句古诗🌞
🍊如有写得不好的地方欢迎大家指正🍊
创作时间:🍊🍊🍊2022年4月25日🍊🍊🍊
🍊🍊相关文章:

在这里插入图片描述

1 OLED简介

OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。

在这里插入图片描述
型号:OLED
点阵:128*64
外型尺寸:0.96寸
驱动芯片:SSD1306
工作电压:3.3V~5.0V
产品规格:PM-OLED
接口类型:SPI(🍌此处只有发送功能,没有接收功能🍌)
产品类别:图形点阵
产品颜色:黄绿膜,蓝屏,灰膜

SPI的定义
SPI(Serial Peripheral Interface)就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。上升沿发送、下降沿接收、高位先发送。

🍌4 线 SPI 电路连接🍌
GND:电源地
VCC:3.3V
SCL(D0):CLK 时钟
SDA(D1):MOSI 数据端口
RES:RST复位
D/C:数据/命令引脚
CS:片选引脚

在这里插入图片描述
OLED液晶显示规则
128*64点阵:64行,128列
8行128列为一页,既行:0-7,列:0-127为第一页,以此类推共8页
之后利用取模软件可以显示相关汉字。取模软件,取模标准如下:

在这里插入图片描述
在这里插入图片描述

2 SSD1306芯片

OLED用到的是SSD1306芯片,它包含着许多参数,下面容我一一道来。

2.1 基本指令

SSD1306芯片的指令挺多的,如果大家想进一步了解的话,请查看数据手册,下面我就简单介绍几种指令。

1.设置低列开始地址作为页地址模式(00h~0Fh)
2.设置高列开始地址作为页地址模式(10h~1Fh)
3.设置内存地址模式(20h)
SSD1306 中有三种不同的内存地址模式:页地址模式,水平地址模式,垂直地址模式。这个命令将内存地址模式设置成这三种中的一种。在这里 COL 的意思是图形显示数据 RAM 列。

🎵🎵三种模式的指令:
水平地址模式:0x00
垂直地址模式:0x01;
页寻址地址模式:0x02(默认);

本例程用到的是页地址模式,我就简单介绍一下这个模式吧
在页地址模式下,在显示 RAM 读写之后,列地址指针自动加一。如果列地址指针达到了列的结束地址,列地址指针重置为列开始地址并且列地址指针不会改变。用户需要设置新的页和列地址来访问下一页 RAM 内从。也就是说,从第一页第一列开始取地址,一直取到第一页最后一列,之后需要用户自行设置下一页和列地址。取到页地址模式下 PAGE 和列地址指针的移动模式参考下图:

在这里插入图片描述

在正常显示数据 RAM 读或写和页地址模式,要求使用下面的步骤来定义开始 RAM 访问的位置:
(1)页寻址:通过命令 B0h 到 B7h 来设置目标显示位置的页开始地址
(2)列寻址:通过 00h~ 0Fh 来设置开始列地址的指针 ;通过命令 10h~1Fh 来设置开始列地址

本次用到的指令如下:

	OLED_Write_Cmd_Data(CMD,0X20); //设置内存地址模式
	OLED_Write_Cmd_Data(CMD,0X02); //水平:0x00;垂直:0x01;页寻址:0x02(默认);
	OLED_Write_Cmd_Data(CMD,0XB0); //为页寻址模式设置页面开启地址0-7    
	OLED_Write_Cmd_Data(CMD,0X00); //设置低列地址												
	OLED_Write_Cmd_Data(CMD,0X10); //设置高列地址			
	
	

比如说,如果页地址设置为 B2h,低列地址是 03h,高列地址为 00h,这句指令的意思是:设置的位置为第二页的低三列的高一列。那么就意味着开始列是PAGE2 的 SEG3.RAM 访问指针的位置如下图所示。输出数据字节将写到 RAM 列 3 的位置
在这里插入图片描述
4.设置显示开始行(40h~7Fh)
这个命令设置显示开始行寄存器来决定显示 RAM 的开始地址,通过选择 0 到 63 的值。当值为 0 时,RAM 行 0 映射到 COM0,当值为 1 时,RAM 行 1 映射到 COM0,以此类推。

OLED_Write_Cmd_Data(CMD,0X40); //设置显示开始行 0-63	 0100 0000--0x40(0)  0111 1111--0x7f(63)

5.为 BANK0 设置对比度控制(81h)
这个命令用来设置显示的对比度,该芯片有 256 级对比度,从 00h 到 FFh。屏显输出电流随着对比度增大而增大。

OLED_Write_Cmd_Data(CMD,0XFF); //设置亮度调节,数值越大亮度越大

6.设置显示开、关(Aeh、AFh)
这个单字节命令用来打开或关闭 OLED 面板的显示。当显示是 ON,通过设置主机配置命令选择的电路会打开;

OLED_Write_Cmd_Data(CMD,(0XAF));//开起显示
OLED_Write_Cmd_Data(CMD,(0XAE));//关闭显示 全黑

好了,就说这么多指令吧,下面是这次用到的指令集

	OLED_Write_Cmd_Data(CMD
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依点_DW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值