STM32 的OLED的使用

7脚OLED依次有引脚:GND、VCC、D0、D1、RES、DC、CS七个脚
模块接口定义:
1. GND 电源地
2. VCC 电源正(3~5.5V)
3. D0 OLED 的 D0 脚,在 SPI 和 IIC 通信中为时钟管脚
4. D1 OLED 的 D1 脚,在 SPI 和 IIC 通信中为数据管脚
5. RES OLED 的 RES#脚,用来复位(低电平复位)
6. DC OLED 的 D/C#E 脚,数据和命令控制管脚
7. CS OLED 的 CS#脚,也就是片选管脚

D0,D1,RES,DC都不需要接在有SPI功能的管脚,直接接编程芯片任意管脚(只要你不需要用这些被接的管脚及其上面有限个数的功能),配置I/O功能就可以了,OLED端口宏定义如下(D0、D1、RES、DC分别接PB12、PB13、PB14、PB15):

#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_12)//CLK
#define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_12)

#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_13)//DIN
#define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pin_13)

#define OLED_RST_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_14)//RES
#define OLED_RST_Set() GPIO_SetBits(GPIOB,GPIO_Pin_14)

#define OLED_DC_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_15)//DC
#define OLED_DC_Set() GPIO_SetBits(GPIOB,GPIO_Pin_15)

#define OLED_CS_Clr()  GPIO_ResetBits(GPIOB,GPIO_Pin_10)//CS
#define OLED_CS_Set()  GPIO_SetBits(GPIOB,GPIO_Pin_10)

管脚初始化如下:

//初始化SSD1306(驱动IC)                      
void OLED_Init(void)
{   
    GPIO_InitTypeDef  GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);   //使能PA、PB端口时钟

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    OLED_RST_Set();
    delay_ms(100);
    OLED_RST_Clr();
    delay_ms(100);
    OLED_RST_Set(); 

    OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
    OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
    OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
    OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
    OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
    OLED_WR_Byte(0xCF,OLED_CMD); // Set SEG Output Current Brightness
    OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping     0xa0×óÓÒ·´ÖÃ 0xa1Õý³£
    OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction   0xc0ÉÏÏ·´Öà 0xc8Õý³£
    OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
    OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
    OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
    OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset   Shift Mapping RAM Counter (0x00~0x3F)
    OLED_WR_Byte(0x00,OLED_CMD);//-not offset
    OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency
    OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
    OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
    OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
    OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
    OLED_WR_Byte(0x12,OLED_CMD);
    OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
    OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM Deselect Level
    OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
    OLED_WR_Byte(0x02,OLED_CMD);//
    OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
    OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
    OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
    OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7) 
    OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel

    OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/ 
    OLED_Clear();
    OLED_Set_Pos(0,0);  
}
  • 20
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32是意法半导体公司生产的一系列32位微控制器,而OLED则是一种有机发光二极管技术,可用于显示器件。STM32OLED驱动即是指用于控制STM32微控制器与OLED显示器之间通信和显示的软件或硬件模块。 STM32OLED驱动通常由两部分组成,一部分是硬件部分,另一部分是软件部分。在硬件部分中,通常需要连接STM32微控制器和OLED显示器之间的引脚,以确保它们能够进行通信。这些引脚通常包括时钟线、数据线、控制线等。 在软件部分中,需要编写相应的代码来实现与OLED显示器的通信和显示。这些代码通常包括初始化OLED显示器的参数、发送指令和数据OLED显示器、控制像素点的亮度等。此外,还可以根据需要添加其他功能,如显示图像、文字、动画等。 需要注意的是,STM32OLED驱动的具体实现可能因不同的硬件平台和OLED显示器型号而有所差异。因此,在选择和使用STM32OLED驱动时,需要根据具体的硬件配置和需求来确定适合的驱动方案。 总之,STM32OLED驱动是用于连接STM32微控制器和OLED显示器的软硬件模块,通过实现通信和显示功能,可以在STM32平台上实现各种各样的OLED显示应用。 ### 回答2: STM32是意法半导体公司推出的一系列32位ARM Cortex-M微控制器,而OLED是一种有机发光二极管(Organic Light-Emitting Diode)显示技术。STM32OLED驱动即指的是STM32微控制器如何控制并驱动OLED显示屏。 STM32OLED驱动的实现一般分为以下几个步骤。首先,需要了解OLED显示屏的通信方式。OLED显示屏一般通过I2C/SPI总线与STM32微控制器进行通信,因此需要配置相应的I2C/SPI引脚和寄存器,建立通信连接。 接下来,需要编写驱动程序来控制OLED显示屏的初始化。驱动程序一般包括对OLED的初始化设置,例如设置显示模式、字符大小、亮度等。同时,还需要配置STM32的时钟和引脚,以便正确地向OLED发送指令和数据。 然后,编写绘制函数来在OLED上绘制图形和文字。这些函数需要通过向OLED发送指令和数据来实现点、线段、矩形、圆形等基本图形的绘制,以及字体和字符串的显示。 最后,将绘制好的图形和文字显示到OLED上。这一步需要将绘制的图像数据通过驱动程序发送给OLED,并将其显示到屏幕上。在显示过程中,可以通过刷新频率的控制来实现动画效果。 总结来说,STM32OLED驱动就是通过STM32微控制器控制OLED显示屏的初始化、绘制和显示过程的一系列操作。这样可以实现在OLED上显示各种图形和文字,从而满足不同应用场景下的需求。 ### 回答3: STM32OLED驱动是一种用于驱动OLED显示屏的软件驱动程序。OLED是有机发光二极管(Organic Light-Emitting Diode)的缩写,它采用无源矩阵式显示技术,具有高亮度、高对比度、快速响应、广视角、低功耗等特点。 STM32OLED驱动适用于基于STMicroelectronics的STM32系列微控制器。它可以直接控制OLED显示屏的亮度、对比度、画面刷新等功能,并且具备较高的兼容性和可扩展性。 STM32OLED驱动常用于嵌入式系统开发和物联网应用中。通过该驱动,开发者可以轻松地在STM32微控制器上实现各种图形、文本、动画等内容的显示。它提供了多个API函数,可以方便地实现在OLED上绘制矩形、线条、圆形、字符等图形,也可以显示各种ASCII字符和中文字符。 此外,STM32OLED驱动还支持图形界面库,可以更加快速和便捷地开发用户界面。开发者可以使用该驱动进行界面的设计、事件处理等,实现用户与设备的交互。 总之,STM32OLED驱动是一种功能强大、易于使用的软件驱动程序,可以方便地驱动、控制和显示内容在OLED显示屏上。它大大简化了嵌入式系统中的开发过程,并提供了丰富的功能和灵活的扩展性,满足了不同应用场景的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值