U8G2库使用(转载)

本文详细介绍了U8G2库的使用,包括清除屏幕、设置显示模式、调整字体和颜色、绘制文本、图形以及处理用户交互等功能。通过这些指令,开发者可以有效地控制LCD显示屏进行复杂图形绘制和文本显示。

U8G2库使用
1.指令
u8g2.clearDisplay(); // 清除显示数据及屏幕
u8g2.clearBuffer(); // 清Buffer缓冲区的数据
u8g2.sendBuffer(); // 将Buffer帧缓冲区的内容发送到显示器,发送刷新消息
u8g2.sendF(“c”, 0x0a7); // 向显示控制器发送特殊命令5 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.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,宽度,高度
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 //返回页面缓冲区的大小,等于8u8g2.getBufferTileHeightu8g2.getBufferTileWidthu8g2.setBufferPtr(buf); //指向内部页面缓冲区开始位的指针
在这里插入图片描述

在Arduino平台上使用U8G2进行显示操作,可以实现对单色显示屏(如OLED、LCD)的高效图形绘制与文本显示。以下是详细的使用指南: ### 安装U8G2 U8G2可以通过Arduino IDE的管理器直接安装,确保开发环境已连接互联网并打开管理器,搜索“U8g2”并安装[^2]。此外,也可以通过GitHub或Gitee等平台下载源码并手动安装到Arduino的libraries目录中[^2]。 ### 支持的显示器类型 U8G2支持多种单色显示屏,包括基于SSD1306、SH1106等控制器的OLED屏幕以及多种LCD屏幕[^2]。例如,128x64分辨率的SSD1306 OLED屏幕是常见的应用目标[^4]。 ### 初始化显示设备 根据所使用的显示设备接口类型(如I2C或SPI),选择合适的构造函数来初始化U8G2对象。以下是一个使用硬件I2C接口驱动SSD1306 OLED屏幕的示例代码: ```cpp #include <Arduino.h> #include <U8g2lib.h> #include <Wire.h> U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, /* clock=*/22, /* data=*/21); void setup() { u8g2.begin(); Serial.begin(115200); u8g2.drawBox(0, 0, 10, 10); u8g2.drawCircle(64, 32, 5); u8g2.sendBuffer(); } void loop() { printf("1234\n"); vTaskDelay(1000); } ``` ### 绘制图形与文本 U8G2提供了丰富的图形绘制功能,包括线条、矩形、圆形等基本形状的绘制,以及多种字体的支持,便于显示多行静态文本[^3]。例如,使用`u8g2.drawBox()`绘制矩形,`u8g2.drawCircle()`绘制圆形等。设置文本显示时,可通过`u8g2.setFont()`选择字体,`u8g2.drawStr()`在指定位置绘制字符串。 ### 设置颜色 U8G2支持基本的颜色设置,尽管大多数单色显示屏仅支持黑白两色。使用`u8g2.setDrawColor(1)`设置绘制颜色,其中参数1表示实显(黑色),0表示透显(不绘制),2表示XOR模式(某些图形操作不支持此模式)[^5]。 ### 内存管理与性能优化 U8G2经过优化,占用较少的内存资源,适合资源受限的Arduino平台[^3]。然而,在进行复杂图形绘制或大量文本显示时,仍需注意内存使用情况,避免超出设备的内存限制。 ### 示例:显示多行文本 为了展示U8G2在显示多行文本方面的强大功能,下面提供了一个简单的示例: ```cpp void setup() { u8g2.begin(); u8g2.setFont(u8g2_font_ncenB08_tr); // 选择字体 u8g2.clearBuffer(); // 清除缓冲区 u8g2.drawStr(0, 10, "Line 1"); // 第一行文本 u8g2.drawStr(0, 20, "Line 2"); // 第二行文本 u8g2.drawStr(0, 30, "Line 3"); // 第三行文本 u8g2.sendBuffer(); // 发送缓冲区到显示器 } ``` ### 结论 U8G2以其丰富的功能、低内存占用和易于使用的API,成为Arduino平台上进行单色显示屏开发的理想选择。无论是简单的图形绘制还是复杂的文本显示需求,U8G2都能提供强大的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值