u8g2库常用函数

本文详细介绍了U8g2 OLED显示库的基本指令、设置方法、绘图功能和高级API操作,包括清除显示、设置亮度、绘制文本、线条、形状等,以及如何进行按键功能处理和屏幕刷新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:https://www.cnblogs.com/loadbxh/articles/12074549.html
如有侵权,请联系我删除。

1.指令

u8g2.clearDisplay();    // 清除显示数据及屏幕
u8g2.clearBuffer();    // 清Buffer缓冲区的数据
u8g2.sendBuffer();    // 将Buffer帧缓冲区的内容发送到显示器,发送刷新消息
u8g2.sendF("c", 0x0a7);    // 向显示控制器发送特殊命令
u8g2.setPowerSave(0)    // 开关省电模式

2.设置

u8g2.enableUTF8Print();    //设置启用UTF-8支持
u8g2.disableUTF8Print();    //设置停用UTF-8支持
u8g2.setContrast();    //设置显示屏亮度/对比度(0-255)
u8g2.setBusClock();    //设置连接速度(IIC:200000-400000/SPI:1000000-8000000),在begin()之前调用

2.1设置字体:

u8g2.setFontMode(0);    //定义字体背景模式,仅u8g2_xxx_tX字体支持,默认0,禁用透明
u8g2.setFontDirection(0); //旋转当前显示 参数:0123
u8g2.setFont(u8g2_font_unifont_t_chinese1);    //设置字体
u8g2.setFontPosCenter();    //设置字体基线Center/Baseline/Bottom/Top

2.2设置颜色:

u8g2.setDrawColor(1); //设置颜色,0透显,1实显,2XOR (drawCircle,drawDisc,drawEllipse和drawFilledEllipse不支持XOR模式) 

2.3设置光标位置:

u8g2.home();    //设置光标回初始位置
u8g2.setCursor(x, y); //设置打印功能的光标位置
u8g2.setBitmapMode(0);    //设置是否开启位图函数背景色

3.简单绘制

u8g2.drawStr(x, y, "文本"); // 绘制文本字符,不能绘制编码大于或等于256,绘制文本前需定义字体.y轴向上绘制
u8g2.drawUTF8(x, y,"字符");    // 绘制一个编码为UTF-8的字符串.注意1.编译器支持2.代码编辑器支持
u8g2.drawGlyph(x, y, HEX);    // 绘制特殊文本图标(需联合特殊字体)
u8g2.print();    // 打印文本字符(需要联合光标位置setCursor,setFont)支持变量和F()

4.高级绘制

4.0.绘制点

 u8g2.drawPixel(x, y); // 在xy位置绘制一个像素. 

4.1.绘制线条

u8g2.drawHLine(x, y, w); // 绘制水平线 w长度
u8g2.drawVLine(x, y, h);    // 绘制垂直线 h高度
u8g2.drawLine(x1, y1, x2, y2);    // 画自由线 x1y1点1 x2y2点2

4.2.绘制矩形

u8g2.drawBox(x, y, w, h); // 画填充矩形w,h,宽度,高度 2 u8g2.drawFrame(x, y, w, h); // 画空心矩形w,h,宽度,高度 

4.2.1.绘制圆角矩形

u8g2.drawRFrame(x,y,w,h,r); //要求w >= 2*(r+1);h >= 2*(r+1);否则未定义2*(r+1) 

4.3. 绘制圆形

4.3.1.画正/椭圆

u8g2.drawCircle(圆心x, 圆心y, 半径rad, 部分位置U8G2_DRAW_ALL);    // 画空心圆 rad半径 直径为 2rad+1
u8g2.drawEllipse(圆心x, 圆心y, 椭圆长度x, 椭圆宽度y, 部分位置U8G2_DRAW_ALL)    //画空心椭圆 长度和宽度均为整个圆的1/2
U8G2_DRAW_ALL    /*替换参数: 
U8G2_DRAW_ALL 全部
U8G2_DRAW_UPPER_RIGHT 上右
U8G2_DRAW_UPPER_LEFT 上左
U8G2_DRAW_LOWER_RIGHT 下右
U8G2_DRAW_LOWER_LEFT 下左*/

4.4.绘制多边形

 u8g2.drawTriangle(x1,y1,x2,y2,x3,y3); //三个点的坐标,实心 

4.5.绘制位图图像

u8g2.drawXBM( x, y, w, h, bits);    //bits是位图资源表,setBitmapMode(1)切换为旧模式

5.绘制处理

5.1.指定区域绘制

u8g2.setClipWindow(x1, y1, x2, y2);    //从1到2形成可视矩形,矩形内部可视,外部遮盖
u8g2.updateDisplay();    //刷新全部显示区域
u8g2.updateDisplayArea(x, y, w, h);    //刷新指定区域显示 推荐sendBuffer

6.按键功能处理

u8g2.userInterfaceInputValue("标题","提示文本",,最低值,最高值,值的位数,"文本")    //按键消息菜单
u8g2.userInterfaceMessage("Title1", "Title2", "Title3", " Ok \n Cancel ");    //按键确认菜单
u8g2.userInterfaceSelectionList("Title", 默认选择项, "Select1\Select2\Select3");    //按键选择菜单

7.高级API操作

u8g2.getBufferSize    //返回页面缓冲区的大小,等于8*u8g2.getBufferTileHeight*u8g2.getBufferTileWidth
u8g2.setBufferPtr(buf);    //指向内部页面缓冲区开始位的指针
### 设置U8G2于ESP32以支持显示屏 对于希望在ESP32平台上利用U8G2来驱动显示设备的情况,可以遵循如下指导来进行配置与编程工作。 #### 安装必要的软件包和工具链 确保已经安装了适用于ESP32开发环境的必要组件,比如Arduino IDE或者PlatformIO等集成开发环境,并且已正确设置了ESP32的支持[^1]。这些IDE提供了便捷的方式去管理外部文件,简化了项目构建流程。 #### 添加U8G2至项目中 通过所选IDE内置的功能轻松导入U8G2图形。例如,在Arduino IDE里可以通过`Sketch -> Include Library -> Manage Libraries...`菜单选项找到并下载最新版本的U8G2;而在PlatformIO环境下,则可以在项目的依赖描述文件(`platformio.ini`)中指定所需的名称及其版本号: ```ini lib_deps = olikraus/U8g2@^2.30.7 ``` 完成上述操作后,重启IDE使更改生效,以便能够正常使用该中的函数接口。 #### 初始化显示器对象实例化过程 依据具体使用的硬件型号(如SSD1306, SH1106),创建对应的U8G2类的对象变量。下面给出了一段针对I²C通信方式连接的小型OLED屏幕初始化代码片段作为示范: ```cpp #include <Wire.h> #include <U8g2lib.h> // 如果使用的是带有SDA/SCL引脚定义好的模块可以直接调用默认参数构造器 U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0); void setup(void) { // 开始初始化序列... u8g2.begin(); } ``` 这段程序展示了如何声明一个名为`u8g2`的对象代表实际物理存在的显示屏,并执行其成员方法`.begin()`启动内部设定逻辑[^2]。 #### 绘制简单图案测试效果 为了验证一切正常运作,可在主循环体内加入一些基础绘图命令绘制文字或几何形状到屏幕上查看最终呈现的结果是否符合预期: ```cpp void loop(void) { u8g2.clearBuffer(); // 清除缓冲区内容准备重绘新画面 u8g2.setFont(u8g2_font_ncenB08_tr); // 设定字体样式大小 u8g2.drawStr(0, 10, "Hello ESP32!"); // 输出字符串信息位于坐标(0,10) u8g2.sendBuffer(); // 将当前帧数据发送给LCD刷新显示 delay(1000); } ``` 此部分演示了怎样运用U8G2 API实现基本的文字渲染功能,同时保持每秒更新一次的速度让开发者直观感受到交互响应特性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值