原贴连接:http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=22504&highlight=u8glibphp
第一部分,u8glib标准语法格式:函数
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
setup(){
}
void
loop(){
u8g.firstPage();
do
{
//display
}
while
(u8g.nextPage());
}
//u8g.firstPage() 表示图像循环的开始
//u8g.nextPage() 表示图像循环的结束
|
1
2
|
void
U8GLIB::drawPixel(unit8_t x, unit8_t y)
//参数为:(x:点的横坐标 y:点的纵坐标)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawPixel(14, 23);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
U8GLIB::drawLine(u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2)
//参数为: (x1:线段起始点横坐标 y1:线段起始点纵坐标 x2:线段结束点横坐标 y2:线段结束点纵坐标)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
//画一个V
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawLine(7, 10, 40, 55);
u8g.drawLine(40, 55, 73, 10);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
3
|
void
U8GLIB::drawHLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w)
//水平线段
void
U8GLIB::drawVLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t h)
//垂直线段
//参数为: (x:线段起始点 y:线段结束点 w:水平宽度 h:垂直高度)(高度单位为像素点)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//画一个方形
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawHLine(40,15, 30);
u8g.drawVLine(70,15, 30);
u8g.drawHLine(40,45, 30);
u8g.drawVLine(40,15, 30);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
U8GLIB::drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
//参数为:(x0:一个角的横坐标 y0:一个角的纵坐标 x1:另外一个角的横坐标 y1:另外一个角的纵坐标 x2:最后一个角的横坐标 y2:最后一个角的纵坐标)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//画一个实心三角形
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawTriangle(14,9, 45,32, 9,42);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
U8GLIB::drawFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
//参数是:(x:矩形左上角横坐标 y:矩形左上角纵坐标 w:矩形的宽 h:矩形的高)(高和宽的单位都是像素)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//画一个空心矩形
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawFrame(10, 12, 30, 20);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
U8GLIB::drawRFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)
//参数是: (x:圆角矩形左上角横坐标 y:圆角矩形左上角纵坐标 w:圆角矩形宽度 h:圆角矩形高度 r:圆角弧度的半径)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//画一个圆角空心矩形
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawRFrame(10,12, 30,20, 5);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
|
void
U8GLIB::drawBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
|
1
|
void
U8GLIB::drawRBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)
|
1
2
|
void
U8GLIB::drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL)
//参数是:(x0:圆心的横坐标 y0:圆心的纵坐标 rad:圆的半径 opt:见下表)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//画一个空心圆
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawCircle(20,20, 14);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
U8GLIB::drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL)
//参数是:(x0:圆心的横坐标 y0:圆心的纵坐标 rad:圆的半径 opt:见下表)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//画一个实心圆
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawDisc(20,20, 14);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
drawEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt)
//参数是:(x0:椭圆圆心的横坐标 y0:椭圆圆心的纵坐标 rx:水平方向半径 ry:垂直方向半径 rad:圆的半径 opt:见下表)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//画一个椭圆
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.drawEllipse(20,20, 14,17);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
drawFilledEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt)
//参数是:(x0:椭圆圆心的横坐标 y0:椭圆圆心的纵坐标 rx:水平方向半径 ry:垂直方向半径 rad:圆的半径 opt:见下表)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
u8g.drawPixel(14, 23);
//画点
u8g.drawLine(7, 10, 40, 55);
//画线
u8g.drawHLine(60,12, 30);
//画水平线段
u8g.drawVLine(10,20, 20);
//画垂直线段
u8g.drawTriangle(14,9, 45,32, 9,42);
//画实心三角形
u8g.drawFrame(10, 12, 30, 20);
//画空心矩形
u8g.drawRFrame(10 ,12 ,30 ,20 ,5);
//画空心圆角矩形
u8g.drawBox(10,12,20,30);
//画实心矩形
u8g.drawRBox(10 ,12 ,30 ,20 ,5);
//画实心圆角矩形
u8g.drawCircle(20,20, 14);
//整空心圆
u8g.drawCircle(20,20, 14, U8G_DRAW_UPPER_RIGHT);
//1/4空心圆
u8g.drawDisc(20,20, 14);
//整实心圆
u8g.drawDisc(20,20, 14, U8G_DRAW_UPPER_RIGHT);
//1/4扇形
u8g.drawEllipse(20,20, 14,17);
//空心椭圆
u8g.drawFilledEllipse(20,20, 14,17);
//实心椭圆
|
1
2
3
4
5
6
7
|
u8g_uint_t U8GLIB::drawStr(u8g_uint_t x, u8g_uint_t y,
const
char
*s)
//参数为:(x:字符左下角的横坐标 y:字符左下角的纵坐标 s:要画出的字符)
//注意:使用drawStr函数以前,须要使用setFont函数来设置一下要画出的字符的显示字体。
//同时drawStr函数还有三种变形:
drawStr90();
//字符顺时针旋转响应90°
drawStr180();
//字符顺时针旋转响应180°
drawStr270();
//字符顺时针旋转响应270°
|
1
2
|
u8g.setFont(u8g_font_osb18);
//设置字体
u8g.drawStr(0, 20,
"ABC"
);
//画出字符在(0,20)的位置
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.setFont(u8g_font_osb18);
u8g.drawStr(0, 20,
"ABC"
);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
U8GLIB::print(...)
//参数为要打印的内容
|
1
2
|
u8g.setPrintPos(0,15);
//设置位置
u8g.print(
"Error Code: "
);
//打印内容
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//调用u8glib库
#include "U8glib.h"
//建立一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void
draw(){
u8g.setPrintPos(0,15);
u8g.print(
"Error Code: "
);
}
void
setup() {
// put your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();
// rotate screen
}
void
loop() {
// put your main code here, to run repeatedly:
u8g.firstPage();
do
{
draw();
}
while
(u8g.nextPage());
}
|
1
2
|
void
U8GLIB::drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h,
const
u8g_pgm_uint8_t *bitmap)
//参数为:(x:位图左上角的横坐标 y:位图左上角的纵坐标 w:位图的宽 h:位图的高 *bitmap:位图对象)
|
01
02
03
04
05
06
07
08
09
10
11
|
static
unsigned
char
u8g_logo_bits[] U8G_PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xe0, 0xff, 0xff, 0x3f,
0xe3, 0xe1, 0xff, 0xff, 0x3f, 0xf3, 0xf1, 0xff, 0xff, 0x3f, 0xf3, 0xf1, 0xfe, 0xbf, 0x37,
0xf3, 0x11, 0x1c, 0x1f, 0x30, 0xf3, 0x01, 0x08, 0x8c, 0x20, 0xf3, 0x01, 0x00, 0xc0, 0x39,
0xf3, 0x81, 0xc7, 0xc1, 0x39, 0xf3, 0xc1, 0xc7, 0xc9, 0x38, 0xf3, 0xc1, 0xc3, 0x19, 0x3c,
0xe3, 0x89, 0x01, 0x98, 0x3f, 0xc7, 0x18, 0x00, 0x08, 0x3e, 0x0f, 0x3c, 0x70, 0x1c, 0x30,
0x3f, 0xff, 0xfc, 0x87, 0x31, 0xff, 0xff, 0xbf, 0xc7, 0x23, 0x01, 0x00, 0x00, 0xc6, 0x23,
0x03, 0x00, 0x00, 0x0e, 0x30, 0xff, 0xff, 0x3f, 0x1f, 0x3c, 0xff, 0xff, 0x3f, 0xff, 0x3f,
0xff, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f
};
u8g.drawXBMP( 0, 0, 38, 24, u8g_logo_bits);
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|