江协科技STM32学习笔记(第03章 OLED)

第03章 OLED

3.1 OLED调试工具

3.1.1 调试方式

(1)串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息.。

相当于把电脑的屏幕挂载到单片机上,方便单片机显示调试信息。

(2)显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上

(3)Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能。

3.1.2 OLED简介

OLED(Organic Light Emitting Diode):有机发光二极管

OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点

0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块

供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64

3.1.3 OLED硬件电路

SCL和SDA是I2C的通信引脚,需要接在单片机I2C通信引脚上,本教程提供的函数模块是用GPIO口模拟的I2C通信,所以这两个端口可以接在任意的GPIO口上。

除VCC和GND外,剩下的引脚是SPI通信的引脚, 如果是GPIO口模拟的通信协议,那也是接在任意的GPIO口上就行了。

3.1.4 本教程OLED驱动函数

函数

作用

OLED_Init();

初始化

OLED_Clear();

清屏

OLED_ShowChar(1, 1, 'A');

显示一个字符

OLED_ShowString(1, 3, "HelloWorld!");

显示字符串

OLED_ShowNum(2, 1, 12345, 5);

显示十进制数字

OLED_ShowSignedNum(2, 7, -66, 2);

显示有符号十进制数字

OLED_ShowHexNum(3, 1, 0xAA55, 4);

显示十六进制数字

OLED_ShowBinNum(4, 1, 0xAA55, 16);

显示二进制数字

3.2 OLED显示屏驱动模块使用 

3.2.1 硬件电路

VCC和GND需要接电源的正极和 负极,所以在屏幕背面接了两根线为OLED提供电源,当然也接上了STM32的PB6和PB7引脚,不过没关系,不初始化这两个引脚就可以了。STM32的引脚上电后,如果不初始化,默认是浮空输入的模式,在这个模式下,引脚不会输出电平,所以不会有什么影响。当然也可以不接这两根条线,直接用程序给PB6输出低电平,PB7输出高电平,用GPIO口直接给OLED供电也没问题,因为这个OLED功率很小,所以也是可以驱动的,不过用GPIO口供电不是很规范,做实际项目最好还是用电源供电。

3.2.2 软件部分

复制《按键控制LED》工程文件夹,改名为《OLED显示屏》。

(1)将OLED显示屏驱动函数添加到工程中。

(2)main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"                      // 调用延时头文件
#include "OLED.h"


uint8_t KeyNum;

int main(void)
{
	OLED_Init();                                 // 初始化OLED屏幕
	OLED_ShowChar(1,1,'A');                      // 在1行1列显示字符A
	OLED_ShowString(1,3,"HelloWOrld!");          // 在1行3列显示字符串
	OLED_ShowNum(2,1,12345,5);                   // 在2行1列显示12345这个数字,长度为5,如果最后一个参数比数字长度长,会在前面补0,比数字长度小,会把高位数字切掉
	OLED_ShowSignedNum(2,7,12345,5);             // 显示有符号十进制数字
//	OLED_ShowSignedNum(2,7,-66,2);               // 显示有符号十进制数字
	OLED_ShowHexNum(3,1,0xAA55,4);               // 显示16进制数 
	OLED_ShowBinNum(4,1,0xAA55,16);              // 显示二进制数,C语言不支持直接写二进制数
	Delay_s(2);
	OLED_Clear();                                // 清屏
	while(1)
	{	
                     
	}
}

 3.3 Keil的调试模式

以《LED闪烁》为例。

默认使用右边这一项,在硬件上在线仿真, 需要把STLINK和STM32都连接好。如果不想连接硬件,也可以选择左边的使用仿真器这个选项,这样就是电脑模拟STM32的运行了。使用在硬件上在线仿真测试。

首先编译一下确保代码没有问题。

如果想看结构体值得变化: 

查看外设寄存器

如果要修改程序,是不能直接在调试模式下修改的,需要先退出调试模式,重新编译,再进入调试模式。

### 关于江协科技 STM32 OLED 开发板 教程 示例代码 #### 使用STM32开发板与OLED显示屏的集成方法 为了实现STM32开发板与OLED显示屏的有效集成,需遵循一系列具体操作流程。首先,将STM32开发板通过USB线缆连接至个人计算机设备[^1]。随后,在PC端完成STM32CubeIDE或其他适用IDE工具包的安装工作;此过程确保所选环境支持目标硬件平台以及所需外设库文件。 对于特定型号如STM32F103系列微控制器而言,其与基于SSD1306驱动芯片构建而成的小尺寸图形液晶显示器之间存在广泛兼容性,并可通过IIC/SPI接口轻松建立通信链路[^3]。在此基础上编写应用程序时,则应考虑调用官方提供的HAL层函数集或第三方开源框架简化底层交互逻辑设计。 #### 编写并验证程序代码 当准备就绪之后,可以着手创建新工程项目并将预先获取到的OLED驱动源码片段嵌入其中。该部分通常涉及初始化SPI/I2C总线参数配置、定义字符映射表结构体变量等内容。编译完成后生成的目标镜像文件经由调试器烧录进MCU内部Flash存储空间内执行运行效果评估环节——即观察实际物理屏幕上能否正常呈现预期图案文字输出结果。 针对中文字符显示需求场景来说,由于单字占用较多像素资源故而推荐采用位图字体方案配合专用编码转换算法处理输入字符串序列后再送显卡渲染引擎解析绘制最终画面。 ```c // 初始化 I2C 接口用于通讯 void MX_I2C1_Init(void){ hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 100000; HAL_I2C_MspInit(&hi2c1); } // 配置 SSD1306 显示屏 void ssd1306_init(){ uint8_t cmd[]={ 0xAE, //关闭显示 ... 0xAF //打开显示 }; for(int i=0;i<sizeof(cmd);i++) ssd1306_write_command(cmd[i]); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值