🍌
🍌🍌
作者简介:大家好啊,我叫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