网站建设全程揭秘 光盘文件中国建设工程造价管理协会网站简称
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:44
当前位置: 首页 > news >正文
网站建设全程揭秘 光盘文件,中国建设工程造价管理协会网站简称,临淄信息港招聘,河北省建设工程信息网招标公告某些图片、表格在手机竖屏状态下会显示不全#xff0c;横屏显示即可。最好是用平板或电脑看。大部分内容摘自官网。
简介 U8g2 U8glib是用于单色显示屏的图形库#xff0c;它可以用于51、Arduino、ARM控制显示屏#xff0c;目前作者olikraus已经更新到version2了#xff0…某些图片、表格在手机竖屏状态下会显示不全横屏显示即可。最好是用平板或电脑看。大部分内容摘自官网。
简介 U8g2 U8glib是用于单色显示屏的图形库它可以用于51、Arduino、ARM控制显示屏目前作者olikraus已经更新到version2了也就是U8g2lib下面简称U8g2。U8g2这个库实际上包含两个库(api)U8g2和U8x8它们有如下特点
U8g2 可处理所有图形支持很多字体。几乎对字体大小没限制微控制器需要一定的存储空间来传递显示U8x8 只能输出文字只能输出固定像素的字体直接输出到显示屏微控制器无需缓冲区 这两个库还包含一个特殊的类也能看作一个子库U8log它能模拟一个输出终端功能如下
U8log Output of boot/startup information 输出初始化信息Error logging 载入错误Debugging logging 载入debugOutput of sensor values 输出传感器值我看上的是这一点 我在这里只给出Arduino相关的部分51和ARM大同小异。下面我们结合实际操作来学习。 安装U8g2 进入Arduino IDE点击上方“工具”-“管理库”搜索U8g2选择U8g2 by oliver那个点击安装即可。 Hello World! 按照惯例我们先输出一个Hello World!。点击上方“文件”-“示例”-“U8g2”-“full_buffer”-“HelloWorld”先不要急着上传到Arduino要先根据你的屏幕控制器、像素删掉其中一个注释的//。我的型号是淘宝上常见的0.96 OLED下图所以我用的是这句U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset/ U8X8_PIN_NONE);。 上传接好线上电就可以看到屏幕上出现”Hello World!“位置可能和上图不一样。 配置 虽然上面的”HelloWorld“看起来很长但实际上只有以下几句 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include U8g2lib.h
#include Wire.h
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, / reset/ U8X8_PIN_NONE);void setup(void) {u8g2.begin();
}void loop(void) {u8g2.clearBuffer(); // clear the internal memoryu8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable fontu8g2.drawStr(0,10,Hello World!); // write something to the internal memoryu8g2.sendBuffer(); // transfer internal memory to the displaydelay(1000);
}开头第一句是引用U8g2我们着重看第二句它就是配置”Setup“具体分成以下几部分
DescriptionExample前缀U8G2控制器驱动器SSD1306显示屏128x64_NONAME缓冲区大小1、2、或F(full)通信协议HW_I2C参数(U8G2_R0, U8x8_PIN_NONE)
控制器/显示屏名字 这个没什么好讲的一般淘宝上都会标出来实在不知道就问商家再不行就挨个试一下符合像素的那几句。
缓冲区大小 1表示RAM中只会储存一页画面的缓冲。你需要用一个firstPage()/nextPage()循环来显示。 2和1类似但会储存两页。官网还说2是1的两倍快但我实在不知道”快“指的是什么。 F表示“full frame buffer”储存所有页面用clearBuffer()来清除缓冲用sendBuffer()来把缓冲发送到显示屏。 这一部分还没完全弄懂貌似就是F相当于一本书你可以预先在书上画很多页然后要显示哪一页就翻到那里。1就相当于一块黑板你只能画一页东西要显示新的东西就要重新擦掉重画。2就是两块黑板。
通信协议 支持常见的SPI、I2C、6800和8080支持硬件HW和软件SW具体有下面几种
通信协议描述4W_SW_SPI4线clock, data, cs and dc软件模拟SPI4W_HW_SPI4线clock, data, cs and dc硬件SPI基于SPI库2ND_4W_HW_SPI如果板子支持第二个 4线硬件SPI3W_SW_SPI3线(clock, data and cs)软件模拟SPISW_I2C软件模拟 I2C/TWIHW_I2C硬件 I2C 基于Wire库2ND_HW_I2C如果板子支持第二个 硬件 I2C 基于Wire库68008-bit并行接口6800协议80808-bit并行接口8080协议 软件模拟 I2C 需要设置SCLSDA对应管脚…_SW_I2C(clock, data [, reset])。
旋转 这是配置语句的第一个参数有如下几种选择
旋转/镜像描述U8G2_R0不旋转U8G2_R1顺时针旋转90度U8G2_R2顺时针旋转180度U8G2_R3顺时针旋转270度U8G2_MIRROR不旋转镜像翻转
接线 官网上的表格
Pin ArgumentDescriptionDatasheet NamesclockSPI or I2C clock lineSCL, SCLK, …dataSPI or I2C data lineSDA, MOSI, SDIN, …d0 … d7Data lines of the parallel interfaceD0 … D7csChip select lineCSdcData/command selection line (register select)D/C, A0, RS, …enable“Write” for the 8080 interface, “enable” for the 6800 interface8080: WR, 6800: EresetReset line 如果你不需要用某个引脚但又需要一个参数可以用U8X8_PIN_NONE
16 Bit模式 U8g2默认是8 Bit Mode如果你的设备支持 256或以上的像素宽你可以在u8g2.h文件中取消注释//#define U8G2_16BIT。
SSD1306 128X64_NONAME 由于这个模块比较常用所以我把它的详细介绍搬了过来。其他模块请去官网。显示不全的话请横屏查看
Controller “ssd1306”, Display “128x64_noname”DescirptionU8G2_SSD1306_128X64_NONAME_1_SW_I2C(rotation, clock, data [, reset])page buffer, size 128 bytesU8G2_SSD1306_128X64_NONAME_2_SW_I2C(rotation, clock, data [, reset])page buffer, size 256 bytesU8G2_SSD1306_128X64_NONAME_F_SW_I2C(rotation, clock, data [, reset])full framebuffer, size 1024 bytesU8G2_SSD1306_128X64_NONAME_1_HW_I2C(rotation, [reset [, clock, data]])page buffer, size 128 bytesU8G2_SSD1306_128X64_NONAME_2_HW_I2C(rotation, [reset [, clock, data]])page buffer, size 256 bytesU8G2_SSD1306_128X64_NONAME_F_HW_I2C(rotation, [reset [, clock, data]])full framebuffer, size 1024 bytesU8G2_SSD1306_128X64_NONAME_1_2ND_HW_I2C(rotation, [reset])page buffer, size 128 bytesU8G2_SSD1306_128X64_NONAME_2_2ND_HW_I2C(rotation, [reset])page buffer, size 256 bytesU8G2_SSD1306_128X64_NONAME_F_2ND_HW_I2C(rotation, [reset])full framebuffer, size 1024 bytes 控制函数 下面一些控制函数能对全局进行操作。写得有点乱。
begin 函数原型 1
2 bool U8G2::begin(void)
bool U8G2::begin(uint8_t menu_select_pin, uint8_t menu_next_pin, uint8_t menu_prev_pin, uint8_t menu_up_pin U8X8_PIN_NONE, uint8_t menu_down_pin U8X8_PIN_NONE, uint8_t menu_home_pin U8X8_PIN_NONE)描述用上面的配置设置显示屏并且会清空显示屏退出显示屏的省电模式。还可以设置按键将按键的对应引脚传递到对应参数按键要求低有效用getMenuEvent来检查按键事件从而构建用户交互界面。 这个函数会调用 initDisplayclearDisplaysetPowerSave 返回值永远是1/true 相关initDisplay, setPowerSave, clearDisplay, U8X8::begin 例子这个函数一般放在void setup(void)里面 1
2
3 void setup(void) {u8g2.begin();
}initDisplay 函数原型 1 void U8G2::initDisplay(void) 描述重新设置显示屏。显示前一定要先调用这个函数。它会让屏幕处在省电模式。要让屏幕显示先取消省电模式setPowerSave相关setPowerSave, begin
setPowerSave 原型 1 1 void U8G2::setPowerSave(uint8_t is_enable)描述开启is_enable1或关闭is_enable0显示屏的省电模式。当省电模式开启时屏幕上的内容不可见屏幕RAM的内容未更改。这个函数在begin被调用。 参数 is_enable开启1或关闭0显示屏的省电模式。 相关begin
clear 函数原型 1 void U8G2::clear(void)描述清空屏幕display和缓冲区buffer的所有像素说实话我分不清这俩。将print的指针cursor归位到左上角。这个函数会调用 homeclearDisplayclearBuffer相关home, clearDisplay, clearBuffer
home 函数原型 1 void U8G2::home(void)描述将print函数的指针游标cursor重置到左上角。如果字体的参考点不在上方的话字体的一部分会看不见。 相关print, clear, setCursor
clearDisplay 函数原型 1 void U8G2::clearDisplay(void) 描述清空内部和显示屏的缓冲区的像素。这个函数在begin函数内被调用因此除了初始化时之外无需再调用这个函数。其他函数如 sendBuffer 和 nextPage) 也能覆盖/清空显示。 注 这个命令可以对F、1、_2_三种缓冲区大小都有效不要在单页的循环内使用这个命令在firstPage和nextPage 相关begin
clearBuffer 函数原型 1 void U8G2::clearBuffer(void)描述清空内部缓冲区的所有像素。清楚后用 sendBuffer 来将新的页面传递给显示屏。这个函数只对_F_储存所有页面的情况有效见上面的缓冲器大小。它还会发送一个刷新信号refreshDisplay给墨水屏。 相关sendBuffer 示例 1
2
3
4
5 void loop(void) {u8g2.clearBuffer();// … write something to the buffer u8g2.sendBuffer();delay(1000);sendBuffer 函数原型 1 void U8G2::sendBuffer(void) 描述将内存缓冲区中的内容发送给显示。用 clearBuffer清空缓冲区用绘画函数向缓冲区添加内容。这个函数只对_F_储存所有页面的情况有效见上面的缓冲器大小。它还会发送一个刷新信号refreshDisplay给墨水屏。 注有点复杂把英文抄下来 Actually this procedure will send the current page to the display. This means, the content of the internal pixel buffer will be placed in the tile row given by the current page position. This means, that this procedure could be used for partial updates on paged devices (constructor with buffer option “1” or “2”). However, this will only work for LCDs. It will not work with most e-Paper/e-Ink devices because of the buffer switch in the display controller. Conclusion: Use this command only together with full buffer constructors. It will then work with all LCDs and e-Paper/e-Ink devices. 相关clearBuffer, updateDisplay
firstPage 函数原型 1 void U8G2::firstPage(void)描述这个和nextPage一起构成图像循环将内容发送到显示屏。有一些限制不要在执行循环时更改显示内容。循环时总是重新绘制所有内容而非一部分。这样能节约ram参考sendBuffer。 相关nextPage 示例 1
2
3
4
5
6
7 1
2
3
4
5
6
7 u8g2.firstPage();do {/ all graphics commands have to appear within the loop body. / u8g2.setFont(u8g2_font_ncenB14_tr);u8g2.drawStr(0,20,Hello World!);} while ( u8g2.nextPage() );
nextPage 函数原型 1 uint8_t U8G2::nextPage(void)描述这个和firstPage一起构成图像循环将内容发送到显示屏。有一些限制不要在执行循环时更改显示内容。循环时总是重新绘制所有内容而非一部分。这样能节约ram参考sendBuffer。完成循环后这个函数会发送一个刷新命令refreshDisplay给墨水屏在返回0之前。 返回值0在循环完成后所有数据都传送给屏幕。 相关firstPage 示例 1
2
3
4
5
6
7 1
2
3
4
5
6
7 u8g2.firstPage();do {/ all graphics commands have to appear within the loop body. */ u8g2.setFont(u8g2_font_ncenB14_tr);u8g2.drawStr(0,20,Hello World!);} while ( u8g2.nextPage() );
disableUTF8Print 函数原型 1 void U8G2::disableUTF8Print(void)描述禁止print函数用UTF8。这是默认设置。 相关print, enableUTF8Print
enableUTF8Print 函数原型 1 void U8G2::enableUTF8Print(void)描述允许print函数用UTF8。当其有效时可以传递unicode符号的字符串给print函数。通常这个函数在begin后被调用 1
2
3
4 void setup(void) {u8g2.begin();u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print()
}相关print, disableUTF8Print 示例 1
2
3
4
5
6
7
8
9
10
11
12
13 void setup(void) {u8g2.begin();u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
}
void loop(void) {u8g2.setFont(u8g2_font_unifont_t_chinese2); // use chinese2 for all the glyphs of 你好世界u8g2.firstPage();do {u8g2.setCursor(0, 40);u8g2.print(你好世界); // Chinese Hello World } while ( u8g2.nextPage() );delay(1000);
}setI2CAddress 函数原型 1 void U8G2::setI2CAddress(uint8_t adr)描述默认情况U8g2假设显示屏为最不可能的地址原文为By default, U8g2 assumes the lowest possible I2C address of the display.。如果需要设置一个不同的地址请在begin()之前调用这个函数。 参数I2C地址乘以2我也不知道为什么我用I2C_scan程序扫描到的地址为0x3C但只有输入0x780x3C20x78才有效并且最低位必须为0才能写 相关begin 注U8g2 v2.6.x才可用。
绘图函数 这类函数有一个特点就是都以draw开头可以画各种点、线、形。需要注意的是下面的所有坐标都是以左上角为0, 0正方向为向右和向下。测试时可用如下代码 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include U8g2lib.h
#include Wire.h
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, / reset*/ U8X8_PIN_NONE);void setup(void) {u8g2.begin();
}void loop(void) {u8g2.firstPage();do {/graphics commands/} while ( u8g2.nextPage() );
}drawPixel 函数原型 1 void U8G2::drawPixel(u8g2_uint_t x, u8g2_uint_t y)描述在特定的x/y位置画一个点。(0, 0)为左上角。可能会超出屏幕边界。这个程序会用当前颜色setDrawColor来画颜色0会清除一个像素颜色1会设置一个像素。 参数 xx坐标yy坐标 相关setDrawColor
drawBitmap 函数原型 1 void U8G2::drawBitmap(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t cnt, u8g2_uint_t h, const uint8_t *bitmap)描述在特定的x/y处画一个位图x/y对应位图的左上角。位图的一部分可能会超出屏幕边界。位图由bitmap数组给定。 参数 xx坐标位图的左上角yy坐标位图的左上角cnt水平方向上位图的字数。位图的宽度cnt*8。h位图的高度 注不要再用这个函数用drawXBM代替。 相关drawXBM
drawXBM 函数原型 1
2 void U8G2::drawXBM(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
void U8G2::drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t bitmap)描述画一个X BitMap 一种单色点阵图x/y对应点阵图的左上角。颜色由setColorIndex给定。在U8g2 Version 2.15.x中引进了实/虚模式solid/transparent默认是实模式。这个函数的XBMP版本即drawXBMP要求点阵图储存在PROGMEM中ROM内。有很多工具可以将普通图片转换到XBM比如开源软件GIMP在线网站onlineconvertfree。实在不知道可以参考教程Interfacing displaying a custom graphic on an 0.96″ I2C OLED with Arduino 参数 x/y点阵图左上角的位置w/h点阵图的宽/高bitmap指向点阵图开头的指针 相关setBitmapMode 注XBMP版本要求点阵图数组按下面方式定义 1 static const unsigned char u8g_logo_bits[] U8X8_PROGMEM { …另外由于Arduino普遍内存小尽量 示例 1
2
3
4
5
6 #define u8g_logo_width 38
#define u8g_logo_height 24
static const unsigned char u8g_logo_bits[] PROGMEN {//使用PROGMEN储存不然可能会提示错误0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xe0,
…0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f };这个可以直接粘贴到你的代码里。 1 u8g2.drawXBM( 0, 0, u8g_logo_width, u8g_logo_height, u8g_logo_bits);drawLine 函数原型 1 void U8G2::drawLine(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t x1, u8g2_uint_t y1)描述在两点之间画一条直线这个函数会用当前颜色setDrawColor来画。 参数 x0、y0起始点的坐标x1、y1终点的坐标 相关drawPixel, setDrawColor 示例 1 u8g2.drawLine(20, 5, 5, 32);drawLine示例
drawHLine 函数原型 1 void U8G2::drawHLine(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w)描述以x/y为左边起点w为长度向右画水平线。线的一部分可能超出屏幕边界。这个函数会用当前颜色setDrawColor来画颜色0为清除像素颜色1为设置像素。 参数 x/y左边起点的x/y坐标w水平线的长度 相关setDrawColor, drawVLine
drawVLine 函数原型 1 void U8G2::drawVLine(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t h)描述以x/y为上面起点h为长度向下画竖直线。线的一部分可能超出屏幕边界。这个函数会用当前颜色setDrawColor来画颜色0为清除像素颜色1为设置像素。 参数 x/y上面起点的x/y坐标h竖直线的长度 相关setDrawColor, drawHLine
drawTriangle 函数原型 1 void U8G2::drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2)描述画一个实心的三角形。参数为16bit。图形会根据显示屏尺寸裁剪。后面一段看不懂…… Multiple polygons are drawn so that they exactly match without overlap:The left side of a polygon is drawn, the right side is not draw. The upper side is only draw if it is flat. 参数 x0/y0点0的位置x1/y1点1的位置x2/y2点2的位置 示例 1 u8g2.drawTriangle(20,5, 27,50, 5,32);drawBox 函数原型 1 void U8G2::drawBox(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h)描述画一个实心矩形左上角的位置对应x/y宽为w高为h。矩形的一部分可能会超出屏幕边界。这个函数会用当前颜色setDrawColor来画对于单色显示屏颜色0表示清除像素颜色1表示显示像素。 参数 xx坐标框的左上角yy坐标框的左上角w矩形的宽度h矩形的长度 相关drawFrame, setDrawColor 示例 1 u8g2.drawBox(3,7,25,15);drawBox示例
drawFrame 函数原型 1 void U8G2::drawFrame(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h)描述画一个空心框左上角的位置对应x/y宽为w高为h。矩形的一部分可能会超出屏幕边界。这个函数会用当前颜色setDrawColor来画对于单色显示屏颜色0表示清除像素颜色1表示显示像素。 参数 xx坐标框的左上角yy坐标框的左上角w框的宽度h框的长度 相关drawBox, setDrawColor 示例 1 u8g2.drawFrame(3,7,25,15);drawFrame示例
drawRBox
见drawRFrame
drawRFrame 函数原型 1
2 void U8G2::drawRBox(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, u8g2_uint_t r)
void U8G2::drawRFrame(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, u8g2_uint_t r)描述画一个有圆角的框/矩形以x/y为左上角的坐标以w/h为宽/长。部分可能会超出屏幕边界。圆角半径为r要求w 2(r1)且h 2(r1)函数不会检查是否满足这个关系如果w或h小于2(r1)会发生未定义的行为就是出错…这个函数会用当前颜色setDrawColor来画对于单色显示屏颜色0表示清除像素颜色1表示显示像素。 参数 x/y左上角的坐标 w框/矩形的宽度 h框/矩形的长度 r圆角的半径 相关[setDrawColor]{#setDrawColor}, [drawFrame]{#drawFrame}, [drawBox]{#drawBox} 示例 1 u8g2.drawRFrame(20,15,30,22,7);drawRFrame示例
drawCircle 函数原型 1 void U8G2::drawCircle(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t rad, uint8_t opt U8G_DRAW_ALL)描述以(x0, y0)为圆心rad为半径画空心圆。圆的直径为2*rad1。不同opt参数可以设置画圆的不同部分可选的参数有U8G2_DRAW_UPPER_RIGHT、U8G2_DRAW_UPPER_LEFT、U8G2_DRAW_LOWER_LEFT、U8G2_DRAW_LOWER_RIGHT、U8G2_DRAW_ALL并且这些参数可以用|结合。这个函数会用当前颜色setDrawColor来画。 参数 x0、y0圆心的位置rad圆的半径opt选择画圆的哪部分。 U8G2_DRAW_UPPER_RIGHTU8G2_DRAW_UPPER_LEFTU8G2_DRAW_LOWER_LEFTU8G2_DRAW_LOWER_RIGHTU8G2_DRAW_ALL 注不支持Draw color 2XOR Mode 相关drawDisc, setDrawColor 示例 1 u8g2.drawCircle(20, 25, 10, U8G2_DRAW_ALL);drawCircle示例
drawDisc 函数原型 1 void U8G2::drawDisc(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t rad, uint8_t opt U8G_DRAW_ALL)描述以(x0, y0)为圆心rad为半径画实心圆。圆的直径为2rad1。不同opt参数可以设置画圆的不同部分可选的参数有U8G2_DRAW_UPPER_RIGHT、U8G2_DRAW_UPPER_LEFT、U8G2_DRAW_LOWER_LEFT、U8G2_DRAW_LOWER_RIGHT、U8G2_DRAW_ALL并且这些参数可以用|结合。这个函数会用当前颜色setDrawColor来画。 参数 x0、y0圆心的位置rad圆的半径opt选择画圆的哪部分。 U8G2_DRAW_UPPER_RIGHTU8G2_DRAW_UPPER_LEFTU8G2_DRAW_LOWER_LEFTU8G2_DRAW_LOWER_RIGHTU8G2_DRAW_ALL 注不支持Draw color 2XOR Mode 相关drawDisc, setDrawColor 示例见drawCircle
drawGlyph 函数原型 1 void U8G2::drawGlyph(u8g2_uint_t x, u8g2_uint_t y, uint16_t encoding)描述画一个Unicode象形文字。文字放在x/y像素上方。U8g2只支持Unicode低16位编码的字符BMPencoding的值为0~65535。只有当字体中有对应编码时才能画出来。 参数 x/y字符在屏幕上的位置encoding字符的Unicode值 注这个绘画函数受setDrawColor和setFontMode控制 相关setFont 示例“雪人”是Unicode中的天气符号之一其Unicode编码为9731十进制/26032进制⛄。“雪人”也是U8g2字体u8g2_font_unifont_t_symbol中的一个字。 1
2 u8g2.setFont(u8g2_font_unifont_t_symbols);u8g2.drawGlyph(5, 20, 0x2603); / dec 9731/hex 2603 Snowman */drawGlyph示例
drawStr 函数原型 1 u8g2_uint_t U8g2::drawStr(u8g2_uint_t x, u8g2_uint_t y, const char *s)描述画一个字符串。第一个字符的位置为x/y。调用这个函数前用setFont来指定一种字体。要输入编码为127~255的字符的话用C/C/Arduino的转义字符 “\xab”16进制或“\xyz”8进制。这个函数不能画编码大于等于256的字符请用drawUTF8或drawGlyph来这种字符。 参数 x/y第一个字符的位置s文本 返回值字符串的长度 注 这个绘画函数受setDrawColor和setFontMode控制用print来显示出数值型变量 相关setFont, drawUTF8, drawGlyph, print 示例 1
2 u8g2.setFont(u8g2_font_ncenB14_tr);u8g2.drawStr(0,15,Hello World!);drawStr示例
drawUTF8 函数原型 1 u8g2_uint_t U8g2::drawUTF8(u8g2_uint_t x, u8g2_uint_t y, const char *s)描述画一个以UTF-8编码的字符串。使用该函数的前提条件有两个 C/C/Arduino编译器必须支持UTF-8这是GNU编译器的默认设置而大多数Arduino用的正是GNU代码编辑器必须支持UTF-8Arduino IDE支持如果满足上两条件你可以使用编码大于127的字符当然这个字符要在字体文件中存在见setFont。 好处代码的可读性更好可直接”复制“-”粘贴“象形文字到代码里。 坏处代码的移植性差strLen函数无法返回字符长度要用getUTF8Len来代替strLen 参数 x/y首字符的位置sUTF-8编码的文本 返回值字符串的长度 注 这个绘画函数受setDrawColor和setFontMode控制用print来显示出数值型变量 相关setFont, drawStr, print 示例 1
2 u8g2.setFont(u8g2_font_unifont_t_symbols);u8g2.drawUTF8(5, 20, Snowman: ☃); drawUTF8示例
print 函数原型 1 void U8G2::print(…)描述相当书Arduino的 print() 函数见Arduino官网上的LiquidCrystalPrint和Serial.print()。这个函数会在当前指针处setCursor用当前字体setFont打印文本或数字。要想支持UTF-8可以用enableUTF8Print 参数见上面的Arduino官网后俩链接 相关enableUTF8Print, setCursor, setFont 示例 1
2
3 u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(0, 15);
u8g2.print(Hello World!);print示例
设置函数
setAutoPageClear 函数原型 1 uint8_t U8G2::setAutoPageClear(uint8_t mode)描述开启mode1或关闭mode0自动清除像素缓冲通过
setFont 函数原型 1 void U8G2::setFont(const uint8_t font)描述设置u8g2字体。注意u8x8的字体无法使用。字体的最后两个字母决定字体的种类或字符集 字体名字体种类u8g2_xxx_tx字体透明宽度可变u8g2_xxx_mx等宽字体u8g2_xxx_hx宽度可变普通高度u8g2_xxx_8x等宽字体宽度限制在8x8的格子中 字体名字符集u8g2_xxx_xeExtendedunicode 32~701u8g2_xxx_xfFullunicode 32~255u8g2_xxx_xrRestrictedunicode 32~127u8g2_xxx_xuUppercase数字和大写字母u8g2_xxx_xn数字和与日期时间相关的字符u8g2_xxx_x_something特殊的字符集看具体的字体图列 参数 fontu8g2字体具体见这里 相关drawUTF8, drawStr, drawGlyph, u8g2字体集 示例字体u8g2_font_5x7_tr
setFontDirection 函数原型 1 void U8G2::setFontDirection(uint8_t dir)描述决定字体显示的方向 参数旋转描述00 度从左到右190 度从上到下2180 度从右到左3270 度从下到上 参数 dir方向 相关drawStr 示例 1
2
3
4
5 u8g2.setFont(u8g2_font_ncenB14_tf);
u8g2.setFontDirection(0);
u8g2.drawStr(15, 20, Abc);
u8g2.setFontDirection(1);
u8g2.drawStr(15, 20, Abc);setFontDirection示例
setFontMode 函数原型 1 void U8G2::setFontMode(uint8_t is_transparent)描述决定背景是否有颜色is_transparent 0无颜色is_transparent 1有颜色默认为0 参数 is_transparent开启1或关闭0透明模式 注要选择一个合适的字体 字体名字体种类适用于u8g2_xxx_tx透明字体宽度可变is_transparent 1, XOR Modeu8g2_xxx_mx等宽字体is_transparent 0u8g2_xxx_hx宽度可变普通高度is_transparent 0u8g2_xxx_8x等宽字体宽度限制在8x8的格子中is_transparent 0 示例展示字体与背景的四种组合setFontColor 1
2
3
4
5
6
7
8
9
10
11 / write background pattern, then: */
u8g2.setFontMode(0);
u8g2.setDrawColor(1);
u8g2.drawStr(3, 15, Color1, Mode 0);
u8g2.setDrawColor(0);
u8g2.drawStr(3, 30, Color0, Mode 0);
u8g2.setFontMode(1);
u8g2.setDrawColor(1);
u8g2.drawStr(3, 45, Color1, Mode 1);
u8g2.setDrawColor(0);
u8g2.drawStr(3, 60, Color0, Mode 1);setFontMode示例
setPowerSave 函数原型 1 1 void U8G2::setPowerSave(uint8_t is_enable)描述开启is_enable 1或关闭is_enable 0显示屏的省电模式。开启省电模式时显示屏上无显示但不改变RAM。这个函数被begin调用。 参数 is_enable开启1或关闭0省电模式
- 上一篇: 网站建设全包专业定制管理系统下载
- 下一篇: 网站建设全网营销客户资源做心理咨询可以在哪些网站发贴
相关文章
-
网站建设全包专业定制管理系统下载
网站建设全包专业定制管理系统下载
- 技术栈
- 2026年03月21日
-
网站建设去哪通过平台建网站
网站建设去哪通过平台建网站
- 技术栈
- 2026年03月21日
-
网站建设求职要求做网站好一点的公司
网站建设求职要求做网站好一点的公司
- 技术栈
- 2026年03月21日
-
网站建设全网营销客户资源做心理咨询可以在哪些网站发贴
网站建设全网营销客户资源做心理咨询可以在哪些网站发贴
- 技术栈
- 2026年03月21日
-
网站建设人工智能国内现货正规交易平台
网站建设人工智能国内现货正规交易平台
- 技术栈
- 2026年03月21日
-
网站建设人员的分工西南能矿建设工程公司网站
网站建设人员的分工西南能矿建设工程公司网站
- 技术栈
- 2026年03月21日

