[STM32U3] 【STM32U385RG 测评】05+动手IIC试验,驱动OLED屏幕

[复制链接]
169|0
 楼主| 聪聪哥哥 发表于 2025-9-1 15:11 | 显示全部楼层 |阅读模式
, , , , ST,
本帖最后由 聪聪哥哥 于 2025-9-1 15:11 编辑

由于之前操作做硬件的IIC屏幕,本款开发板也是没有找到屏幕的,今天移植一下OLED屏幕的驱动代码。

一:OLED知识分享
OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。因为具备轻薄、省电等特性,因此从 2003 年开始,这种显示设备在 MP3 播放器上得到了广泛应用,而对于同属数码类产品的 DC 与手机,此前只是在一些展会上展示过采用 OLED 屏幕的工程样品。自 2007 年后,寿命得 到很大提高,具备了许多 LCD 不可比拟的优势。
GND:电源地 VCC:2.2V~5.5V SCL(D0):CLK 时钟 (高电平 2.2V~5.5V) SDA(D1):MOSI 数据(高电平 2.2V~5.5V) RST:复位(高电平 2.2V~5.5V) D/C:数据/命令(高电平 2.2V~5.5V) 兼容 3.3V 和 5V 控制芯片的 I/O 电平(无需任何设置,直接兼容)。
二:STM32 cube MX软件配置如下所示:
05-1.png
三:软件代码编写:
底层驱动代码如下所示:
  1. /***********************************************************************************************
  2.   * [url=/u/brief]@brief[/url]   static unsigned char OLED_send_byteS(unsigned char *data, unsigned char length)
  3.   * @param    data:输入的数据  length:长度值,使用硬件IIC底层驱动函数
  4.   * @retval  无
  5.   * [url=/u/author]@author[/url]  聪聪哥哥
  6.   * @version V1.1.0
  7.   * [url=/u/date]@date[/url]     25-5-2025
  8. *************************************************************************************************/
  9. static unsigned char OLED_send_byteS(unsigned char *data, unsigned char length)
  10. {
  11.         if (HAL_I2C_Master_Transmit(&hi2c1, 0x78, data, length, 2) != HAL_OK)
  12.         {
  13.                 return 0;
  14.         }
  15.         return 1;
  16. }

  17. /***********************************************************************************************
  18.   * @brief   static void I2C_WriteByte(uint8_t addr, uint8_t value)
  19.   * @param    addr:IIC模块的地址,value :写入的数据
  20.   * @retval  无
  21.   * @author  聪聪哥哥
  22.   * @version V1.1.0
  23.   * @date     25-5-2025
  24. *************************************************************************************************/
  25. static void I2C_WriteByte(uint8_t addr, uint8_t value)
  26. {
  27.         unsigned char dta[2] = {0};
  28.         dta[0] = addr;
  29.         dta[1] = value;
  30.         OLED_send_byteS(dta, 2);
  31. }

  32. /***********************************************************************************************
  33.   * @brief   void WriteCmd(unsigned char I2C_Command)
  34.   * @param    I2C_Command : IIC的命令
  35.   * @retval  无
  36.   * @author  聪聪哥哥
  37.   * @version V1.1.0
  38.   * @date     25-5-2025
  39. *************************************************************************************************/
  40. void WriteCmd(unsigned char I2C_Command)
  41. {
  42.         I2C_WriteByte(0x00, I2C_Command);
  43. }
显示代码如下:
  1.   OLED_Init();
  2.         OLED_ColorTurn(0);//0?????????1 ??????
  3.   OLED_DisplayTurn(0);//0??????? 1 ?????????
  4.         OLED_Refresh();
  5.         OLED_Clear();

  6.         OLED_ShowCN(16, 0, 0);
  7.         OLED_ShowCN(32, 0, 1);
  8.         OLED_ShowCN(48, 0, 2);
  9.         OLED_ShowCN(64, 0, 3);

  10.         OLED_ShowCN(16, 2, 4);
  11.         OLED_ShowCN(32, 2, 4);

  12.         OLED_ShowCN(48, 2, 5);
  13.         OLED_ShowCN(64, 2, 5);


  14.         OLED_ShowStr(40, 4, (uint8_t *)test_str, 2);
  15.         OLED_ShowStr(40, 6, (uint8_t *)test_str1, 2);

实物图片如下所示:
05-2.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

252

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部