hi3861基于鸿蒙Next系统如何使用oled屏幕
在hi3861开发板上基于鸿蒙Next系统开发时,如何驱动OLED屏幕显示内容?需要哪些硬件连接和软件配置?是否有现成的驱动库或示例代码可以参考?具体应该如何初始化屏幕并实现基本显示功能?
2 回复
鸿蒙Next上玩OLED?简单三步走:
- 装驱动(I2C/SPI看屏幕型号);
- 调用鸿蒙的显示接口,画点、画线、写字;
- 记得在代码里加个“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.c和oled.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屏幕的基础显示功能。建议参考鸿蒙官方驱动示例进一步优化。

