HarmonyOS技术社区 · 2020年10月09日

支持鸿蒙OS的产品级SSD1306 OLED屏驱动库(MIT许可证开源)

移植后的代码仓链接:https://github.com/xusiwei/ha...

功能简介:

• 使用Harmony OS的IoT硬件接口

• 提供字符绘制相关接口,内置四种字体大小的ASCII字符;

• 提供图形绘制相关接口,如绘制直线、矩形、圆形等;

• 内置一个128x64bit内存缓冲区,支持全屏刷新(可以用来实现动画、视频播放);

• 针对SSD1306连续数据发送进行了优化,目前全屏刷新速率能够达到10帧每秒;

• MIT许可证,可使用到产品级代码中;

API接口如下:

void ssd1306_Init(void); // 初始化

void ssd1306_Fill(SSD1306_COLOR color); // 全屏填充
void ssd1306_SetCursor(uint8_t x, uint8_t y); // 设置光标位置
void ssd1306_UpdateScreen(void); // 更新屏幕,库中有一个内存缓冲区,绘制接口会将图像输出到内存缓冲区中,此接口会将缓冲区内容发送给SSD1306芯片

// 字符绘制相关接口
char ssd1306_WriteChar(char ch, FontDef Font, SSD1306_COLOR color);
char ssd1306_WriteString(char* str, FontDef Font, SSD1306_COLOR color);

// 图形绘制相关接口
void ssd1306_DrawPixel(uint8_t x, uint8_t y, SSD1306_COLOR color);
void ssd1306_Line(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color);
void ssd1306_DrawArc(uint8_t x, uint8_t y, uint8_t radius, uint16_t start_angle, uint16_t sweep, SSD1306_COLOR color);
void ssd1306_DrawCircle(uint8_t par_x, uint8_t par_y, uint8_t par_r, SSD1306_COLOR color);
void ssd1306_Polyline(const SSD1306_VERTEX *par_vertex, uint16_t par_size, SSD1306_COLOR color);
void ssd1306_DrawRectangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color);

// 控制相关接口
void ssd1306_SetContrast(const uint8_t value); // 设置对比度
void ssd1306_SetDisplayOn(const uint8_t on); // 开关

uint8_t ssd1306_GetDisplayOn(void); // 获取开关状态

如何编译:

1、在openharmony源码目录下克隆本项目:git clone https://github.com/xusiwei/ha...

2、修改openharmony源码的build/lite/product/wifiiot.json文件:

  将//applications/sample/wifi-iot/app替换为//harmonyos-ssd1306:app保存;

3、在openharmony源码目录下执行:python build.py wifiiot

项目代码中的 ssd1306_demo.c 和 ssd1306_tests.c 为测试代码


效果演示视频请点击下方链接,跳转至原网站观看
转自https://harmonyos.51cto.com/p...

推荐阅读
关注数
3013
内容数
446
华为鸿蒙相关技术,活动及资讯,欢迎关注及加入创作
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息