hi3861基于鸿蒙Next系统如何使用oled屏幕

在hi3861开发板上基于鸿蒙Next系统开发时,如何驱动OLED屏幕显示内容?需要哪些硬件连接和软件配置?是否有现成的驱动库或示例代码可以参考?具体应该如何初始化屏幕并实现基本显示功能?

2 回复

鸿蒙Next上玩OLED?简单三步走:

  1. 装驱动(I2C/SPI看屏幕型号);
  2. 调用鸿蒙的显示接口,画点、画线、写字;
  3. 记得在代码里加个“Hello, OLED!”彩蛋,点亮瞬间成就感拉满!
    (友情提示:注意引脚配置,别让屏幕“装睡”)

更多关于hi3861基于鸿蒙Next系统如何使用oled屏幕的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在Hi3861开发板上使用OLED屏幕(通常为SSD1306驱动),需基于鸿蒙Next系统进行驱动开发。以下是关键步骤及示例代码:

1. 硬件连接

确保OLED通过I2C接口与Hi3861连接:

  • SCL → GPIO 0(示例引脚,根据实际调整)
  • SDA → GPIO 1
  • VCC → 3.3V
  • GND → GND

2. 代码实现

(1)I2C初始化

//vendor/hisi/hi3861/hi3861/app/wifi-iot/app目录下创建OLED驱动文件(如oled.coled.h)。

示例代码(I2C写函数):

#include "hi_i2c.h"
#include "hi_io.h"
#include "hi_gpio.h"

#define OLED_I2C_IDX 0 // I2C通道
#define OLED_ADDR 0x3C // SSD1306地址

// 初始化I2C
void OLED_I2C_Init(void) {
    hi_io_set_func(HI_IO_NAME_GPIO_0, HI_IO_FUNC_GPIO_0_I2C1_SDA); // SDA
    hi_io_set_func(HI_IO_NAME_GPIO_1, HI_IO_FUNC_GPIO_1_I2C1_SCL); // SCL
    hi_i2c_init(OLED_I2C_IDX, 400000); // 400kHz速率
}

// 写命令/数据
void OLED_WriteByte(uint8_t type, uint8_t data) {
    uint8_t buf[2] = {type, data};
    hi_i2c_writedev(OLED_I2C_IDX, OLED_ADDR, buf, 2);
}

(2)OLED初始化序列

void OLED_Init(void) {
    OLED_WriteByte(0x00, 0xAE); // 关闭显示
    OLED_WriteByte(0x00, 0x20); // 内存地址模式
    OLED_WriteByte(0x00, 0x10); // 列地址模式
    OLED_WriteByte(0x00, 0xB0); // 页起始地址
    OLED_WriteByte(0x00, 0xC8); // 扫描方向
    OLED_WriteByte(0x00, 0x00); // 低列地址
    OLED_WriteByte(0x00, 0x10); // 高列地址
    OLED_WriteByte(0x00, 0x40); // 起始行
    OLED_WriteByte(0x00, 0xAF); // 开启显示
}

(3)显示数据

// 清屏
void OLED_Clear(void) {
    for (uint8_t i = 0; i < 8; i++) {
        OLED_WriteByte(0x00, 0xB0 + i); // 设置页地址
        OLED_WriteByte(0x00, 0x00);     // 列低地址
        OLED_WriteByte(0x00, 0x10);     // 列高地址
        for (uint8_t n = 0; n < 128; n++)
            OLED_WriteByte(0x40, 0x00); // 写空数据
    }
}

// 显示字符串(需配合字库)
void OLED_ShowString(uint8_t x, uint8_t y, char *str) {
    // 实现字符绘制逻辑(依赖字库数组)
}

3. 编译配置

BUILD.gn中添加:

executable("oled_demo") {
    sources = [ "oled.c", "main.c" ]
    include_dirs = [ "//utils/native/lite/include" ]
}

4. 注意事项

  • 引脚配置:根据实际硬件修改GPIO引脚编号。
  • 字库处理:需自行实现字符点阵数据(如8x6字体)。
  • 系统适配:鸿蒙Next的API可能更新,需参考最新文档调整。

通过以上步骤,可完成OLED屏幕的基础显示功能。建议参考鸿蒙官方驱动示例进一步优化。

回到顶部