【STM32】OLED

OLED显示原理

OLED使用的是I2C协议,使用ssd1306芯片对所有灯进行控制,如果一个灯需要一个引脚的话,屏幕分为8页,每页有128列,8行 .

共有128* 88个灯

这样引脚是算不过来的,所以我们使用了ssd1306芯片,在上个博客我们用到的每个从机都有自己的地址

同时要控制这么多的灯,也不能只给数据,比方说我们要对其显示进行重置,亮度改变,光标位置 ,如果是指令的话,就把对应指令数据写入寄存器0x00, ,如果是数据的话,就写入0x40寄存器。
现在我们要确定的是要选哪一页,如果选择第0页,地址就是0xb0。
选择第1页 ,0xb1, 0xb2,0xb3,0xb4,0xb5,0xb6,0xb7
选择好哪一页的话,8
128,继续选择哪一列,但是对应列的选择的话

比方说选择第67列,则分为列的高位和低位,算出67的16进制

设置低位:0x03 高位给0+3

设置高位: 0x14 高位给1+4

接着设置数据:让第一列全亮给0xff

上面操作都使用了一个函数

c 复制代码
HAL_I2C_Mem_Write();

根据上面解释 点亮第0页的第一列

1.选择页

c 复制代码
      uint8_t pData;
	 pData=0xb0;  //选择第0页
   HAL_I2C_Mem_Write(&hi2c1,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&pData,1,HAL_MAX_DELAY);

2.配置列 第0列 列低位:0x00

c 复制代码
	 pData=0x00;  //配置哪一列(低位)
   HAL_I2C_Mem_Write(&hi2c1,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&pData,1,HAL_MAX_DELAY);
    pData=0x10;  //配置哪一列(高位)
   HAL_I2C_Mem_Write(&hi2c1,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&pData,1,HAL_MAX_DELAY);

3.配置数据,使第一列全亮

c 复制代码
   pData=0xff;  //八个灯全亮
   HAL_I2C_Mem_Write(&hi2c1,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&pData,1,HAL_MAX_DELAY);

注意在所有操作之前需要对屏幕初始化,以及清屏

c 复制代码
     OLED_Init();//初始化
	 OLED_Clear();//清屏操作


对应指令操作在手册中都可以查到

展示

OLED显示字符数字

c 复制代码
OLED_ShowChar();



如何根据字模软件来设置字符,以及字符的大小

选择字符模式


生成字模

复制到oled.h中



OLED显示汉字


相关推荐
国产化创客1 小时前
Kindle 嵌入式交叉开发环境
嵌入式硬件·智能硬件
szxinmai主板定制专家3 小时前
RK3568+FPGA高速并行采集|半导体探针测试设备多通道同步数据采集系统设计
人工智能·嵌入式硬件·计算机视觉·fpga开发
Dlrb12115 小时前
ARM---I2C协议时序详解以及IMX6ULL使用I2C协议与AT24C02,LM75A芯片通信详解与示例代码
嵌入式硬件·arm·lm75a·i2c协议·at24c02·i2c时序
周洲08307 小时前
STM32独立/窗口看门狗完整配置|防止程序跑飞死机、异常复位
stm32·单片机·嵌入式硬件
论迹复利8 小时前
多平台移植 BTBLE Stack 的思路与踩坑实战——从 Ceva IP 到厂商适配层的迁移指南
嵌入式硬件·物联网·架构
SUNNYSPY0018 小时前
30N03DF-ASEMI扫地机器人主驱动30N03DF
单片机
CPETW8 小时前
企业版配套软件介绍 ---- USB TO SPI_ (Excel)-Microwire
网络·科技·单片机·嵌入式硬件·电子
一个嵌入式学徒9 小时前
LVGL图形库移植STM32
stm32·单片机·嵌入式硬件
Hello_Damon_Nikola9 小时前
伺服电机堵转检测算法详解
单片机·嵌入式硬件·算法
XTIOT66610 小时前
零部件 DPM 码扫码枪生产厂家:工业 DPM 设备多工位组网与 MES/ERP 数据集成方案
网络·单片机·嵌入式硬件·物联网·计算机视觉