OLED屏幕应用实验

本文介绍了关于OLED屏幕的实验,包括OLED的特性、驱动器SSD1306、OLED与STM32通过SPI通信的配置,以及实验步骤,如显示文字的取模和设置。实验中,使用STM32f103系列开发板,通过配置O_MOSI、O_CLK、O_RST和O_DC引脚来控制OLED显示。
摘要由CSDN通过智能技术生成

一、介绍
OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(OrganicElectroluminesence Display, OELD)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。
二、实验材料

OLED显示屏:
驱动器型号:使用MCU控制OLED本质上是MCU与屏的驱动控制器进行通信,本项目中OLED的驱动器是SSD1306。
物理尺寸:0.96寸
分辨率:在图像方面,分辨率表示图像上的像素点的个数和分布情况。物理尺寸相同时,分辨率越大,则图片更清晰。
像素点:构成图像的最小单元,每个像素点仅有一种颜色。
与OLED通信:通信方式、通信速度、接口…
开发板: 采用STM32f103系列
原理图:
在这里插入图片描述
确定使用SPI通信,分析以上引脚的配置方法:
O_MOSI – 数据传输引脚(主发从收) PB15 推挽复用输出
(这里没有O_MISO引脚原因是驱动OLED时,不需要接收来自OLED的数据)
O_CLK – 时钟引脚 PB13 推挽复用输出
O_RST – 复位引脚(低电平有效) PB14 推挽输出
O_DC – 数据/命令选择引脚 PB12 推挽输出
使用OLED屏时,会传输各类数据,至少包含 字模数据 和 坐标数据,但这些数据都是通过O_MOSI数据线传输的,为了区分各类数据的类型,所以OLED上有O_DC引脚:
当O_DC表示数据选择时,接下来流过O_MOSI的一个字节将视为参数。
当O_DC表示命令选择时,接下来流过O_MOSI的一个字节将视为命令。

三、实验步骤

OLED显示文字
在单色屏下,一般文字的大小为16 x 16 、 24 x 24 或 32 x 32。

  1. 运行取模软件PCtoLCD 2002
  2. 选择“模式”->“字符模式”,点击“选项”,按如下要求

在这里插入图片描述

0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,
0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,/“你”,0/

0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00,
0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/“好”,1/

  1. 设置字宽、字高、字体
  2. 输入文字
  3. 取模,并保存到工程中
    在这里插入图片描述
/***********************************
函数名:spi2_init
参数:无
返回值:无
功能:SPI2初始化
备注:SPI2_SCK 	PB13
			SPI2_MOSI	PB15
			连接到OLED
***********************************/
static void spi2_init(void)
{
   
	GPIO_InitTypeDef gpio_InitStruct;
	SPI_InitTypeDef 	spi_InitStruct;
	/*1.将SPI2相关引脚配置为复用*/
		//激活相应的GPIOx
	RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB, ENABLE);
		//引脚的推挽复用输出(变为SPI2引脚)
	gpio_InitStruct.GPIO_Mode 	=	GPIO_Mode_AF_PP ; 
	gpio_InitStruct.GPIO_Pin 		= GPIO_Pin_13 | GPIO_Pin_15 ;
	gpio_InitStruct.GPIO_Speed	= GPIO_Speed_2MHz ;
		//导入清单,进行配置
	GPIO_Init (GPIOB, &gpio_InitStruct);

	/*2.激活SPI2,SPI2库函数初始化*/
	RCC_APB1PeriphClockCmd (RCC_APB1Periph_SPI2, ENABLE);//36MHz
		//需要根据模块的不同调整配置
	spi_InitStruct.SPI_BaudRatePrescaler 	= SPI_BaudRatePrescaler_4 ;//36 / 4 == 9M Hz
	spi_InitStruct.SPI_CPHA 							= SPI_CPHA_1Edge ;
	spi_InitStruct.SPI_CPOL 							= SPI_CPOL_Low ;
	spi_InitStruct.SPI_DataSize 					= SPI_DataSize_8b ;	//一帧数据8位
	spi_InitStruct.SPI_FirstBit 					= SPI_FirstBit_MSB ;//先发送数据高位
		//几乎是固定的配置
	spi_InitStruct.SPI_Direction 					= SPI_Direction_2Lines_FullDuplex ;//全双工
	sp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值