当前位置:网站首页>STM32 - OLED display experiment
STM32 - OLED display experiment
2022-07-30 00:33:00 【three sloths】
一、关于OLED
1、OLED(有机发光二极管)Also called organic laser display.OLEDAt the same time have the self-luminous,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲面板、使用温度范围广、Simple structure and manufacture process features such as.
2、OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,Organic material will shine,而且OLED显示屏幕可视角度大,并且能够节省电能,从2003年开始这种显示设备在MP3Players get application.
3、LCD需要背光,OLED不需要.OLED是自发光,相比之下,OLED效果更好.目前OLEDSize is not large,But it can be very high resolution.
二、ALINETEK0.96寸OLED模块
1、模块有单色和双色两种可选,单色为纯蓝色,双色为黄蓝双色(1/4Part of a display of yellow,3/4Part of a display of blue)单色模块每个像素点只有亮与不亮两种情况,没有颜色区分.
2、尺寸小,显示尺寸为0.96寸,而模块的尺寸仅为27mm*26mm大小.
3、高分辨率,该模块的分辨率为128*64.
4、More interface way,该模块提供了总共4种接口包括:6800、8080两种并行接口方式、4线的穿行SPI接口方式、IIC接口方式.
5、不需要高压,3.3V就可以工作了.(该模块不和5.0V接口兼容,接5.0V会烧坏模块)
6、OLED模块工作模式选择:4种模式通过模块的BS1/BS2设置,BS1/BS2的设置与模块接口模式的关系如表:
7、OLED 8080Parallel interface signal lines that
CS:OLED片选信号;WR:向OLED写入数据;RD:从OLED读取数据;
D【7:0】:8位双向数据线;RST(RES):硬复位OLED;
DC:命令/数据标志(0,读写命令;1,读写数据);OLED控制器位SSD1306
三、OLED 8080Parallel port to read and write process
模块的8080并读/写过程为:
先根据要写入/读取的数据类型,设置DC为高(数据)/低(命令),然后拉低片选,选中SSD1306,接着我们根据是读数据,还是要写数据置RD/WR为低,然后:
1、读数据:在RD的上升沿,使数据锁存到数据线(D【7:0】)上;
2、写数据:在WR的上升沿,使数据写入到SSD1306里面;
3、OLED模块显存
SSD1306的显存总共为128*64bit大小,SSD1306These memory can be divided into8页,每页包含了128个字节,共8页,即128*64的点阵大小.
4、Application shows that principle:在STM32Internal build a cache(共128*8个字节),在每次修改的时候,只是修改STM32上的缓存(实际就是SRAM),在修改完之后,一次性把STM32上的缓存数据写入到OLED的GRAM.
四、SSD1306的命令:
1、命令0X81:设置对比度.包含两个字节,第一个0X81为命令,随后发送的一个字节为要设置的对比度的值.This value is larger and the brighter the screen.
2、命令0XAE/0XAF:0XAE为关闭显示命令;0XAF为开启显示命令.
3、命令0X8D:包含2个字节,第一个为命令字,第二个为设置值,第二个字节的BIT2表示电荷泵的开关状态,该位为1开启电荷泵,为0关闭.在模块初始化的时候,这个必须要开启,否则看不到屏幕显示.
4、命令0XB0~B7:用于设置页地址,其低三位的值对应着GRAM的页地址.
5、命令0X00~0X0F:用于设置显示时的起始列地址低四位.
6、命令0X10~0X1F:用于设置显示时的起始列地址高四位.
五、OLED初始化过程:
复位SSD1306 ——>RST=0,延时10ms,RST=1——>驱动IC初始化代码——>The construction of reset all register——>开启显示——>清0显存——>Began to memory
1、OLED初始化
void OLED_Init(void)
{
OLED_WR_Byte(0xAE,OLED_CMD);//关闭显示
OLED_WR_Byte(0xD5,OLED_CMD);//设置时钟分频因子、震荡频率
OLED_WR_Byte(80,OLED_CMD);//【3:0】,分频因子;【7:4】震荡频率
OLED_WR_Byte(0xA8,OLED_CMD);//设置驱动路数
OLED_WR_Byte(0x3F,OLED_CMD);//默认0X3F(1/64)
OLED_WR_Byte(0xD3,OLED_CMD);//设置显示偏移
OLED_WR_Byte(0x00,OLED_CMD);//默认为0
OLED_Clear();//清除
}
2、OLED写一个字节
//向SSD1306写入一个字节
//dat:要写入的数据/命令
//cmd:数据/命令标志 0表示命令 1表示数据
void OLED_WR_Byte(u8 dat,u8 cmd)
{
DATAOUT(dat);//Data on the mouth
if(cmd) OLED_RS_Set();//写数据,置高
else OLED_RS_Clr();//写命令,置低
OLED_CS_Clr();
OLED_WR_Clr();//WRPull up again to create a low rise along
OLED_WR_Set();
OLED_CS_Set();//数据写完,将CS拉高
OLED_RS_Set();//拉高
}
3、OLED更新缓存,显示内容
u8 OLED_GRAM[128][8];
void OLED_Refresh_Gram(void)
{
u8 i,n;
for(i=0;i<8;i++)
{
OLED_WR_Byte(0xb0+i,OLED_CMD);//设置页地址(0~7)
OLED_WR_Byte(0x00,OLED_CMD);//设置显示位置——列低地址
OLED_WR_Byte(0x10,OLED_CMD);//设置显示位置——列高地址
for(n=0;n<128;n++)
{
OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA);
}
}
}
4、OLED画点函数
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
u8 pos,bx,temp=0;
if(x>127||y>63) return;//超出范围
pos=7-y/8;
bx=y%8;
temp=1<<(7-bx);
if(t) OLED_GRAM[x][pos]=temp;
else OLED_GRAM[x][pos]&=~temp;
}
5、OLED字符显示函数
//在指定位置显示一个字符,包括部分字符
//x:0~127 y:0~63
//mode:0,反白显示1; size:选择字体 12/16/24
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{
u8 temp,t,t1;
u8 y0=y;
u8 csize=(size/8+(size%8)?1:0))*(size/2);//Get the font of a corresponding lattice character set the number of bytes
chr=chr-'';//得到偏移后的值
for(t=0;t<csize;t++)
{
if(size==12) temp=asc2_1206[chr][t];//调用1206字体
else if(size==16) temp=asc2_1608[chr][t];//调用1608字体
else if(size==24) temp=asc2_2412[chr][t];//调用2412字体
else return;//没有的字库
for(t1=0;t1<8;t1++)
{
if(temp&0x80) OLED_DrawPoint(x,y,mode);
else OLED_DrawPoint(x,y,!mode);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
边栏推荐
猜你喜欢
高德地图jsapi不生效 INVALID_USER_SCODE
Vmtouch - under Linux file cache management artifact
First Normal Form, Second Normal Form, Third Normal Form
@RequestParam注解的详细介绍
i.MX6U-driver development-3-new character driver
【集训DAY18】Welcome J and Z 【动态规划】
每周推荐短视频:研发效能是什么?它可以实现反“内卷”?
月薪15k的阿里测试岗,面试原来这么简单
【分层强化学习】survey
从尾到头打印链表
随机推荐
微信开发者工具设置制表符大小为2
7.27
He cell separation technology 丨 basic primary cell separation methods and materials
go语言解决自定义header的跨域问题
【集训DAY16】KC ‘ s Stars【dfs】
【分层强化学习】survey
Decision tree principle and code implementation
557. 反转字符串中的单词 III
二叉排序树(C语言)
Navicat如何连接MySQL
The range of motion of the robot
【集训DAY18】Welcome J and Z 【动态规划】
谷歌浏览器(google)设置翻译中文,翻译选项不生效或没有弹出翻译选项
opencv基本图像的滤波
【Flutter】Flutter inspector 工具使用详解,查看Flutter布局,widget树,调试界面等
绘制几何图形
Worthington用于细胞收获的胰蛋白酶&细胞释放程序
Worthington's tried and tested cell isolation system protocols
2022杭电多校第三场 Two Permutations (dp, 哈希)
Graph Theory: Bipartite Graphs