ndfweb.cn

Arduino - 使用u8glib庫操作OLED屏


2021-09-18 15:53:57 (3927)



需要的庫文件:u8glib

github地址:https://github.com/olikraus/u8glib


一、基本運行框架:

繪圖過程,必須依照下麵的框架執行,將繪圖顯示的代碼,放在firstPage和nextPage組成的循環內執行。


  u8g.firstPage();  

  do {

// 此處放置顯示代碼

  } while( u8g.nextPage() );

1

2

3

4

二、常用函數:


setRot90 or 180 or 270


1)方法定義

void U8GLIB::setRot90()

void U8GLIB::setRot180()

void U8GLIB::setRot270()

2)功能

    將顯示的結果旋轉90°或180°或270°

1

2

3

4

5

6

setFont


1)方法定義

U8GLIB::setFont(const u8g_fntpgm_uint8_t *font)

2)功能

     設置要顯示字符的字體。

3)參數

     *font:字體樣式。

1

2

3

4

5

6

setFontPosTop


1)方法定義

void U8GLIB::setFontPosTop(void)

2)功能

     使用drawStr顯示字符串時,默認標準為顯示字符的左下角坐標。

     本函數的功能可理解為將坐標位置改為顯示字符串的左上角為坐標標準。

1

2

3

4

5

setColorIndex


1)方法定義

void U8GLIB::setColorIndex(uint8_t color_index)

2)功能

     可以理解為畫筆顏色是透明色還是不透明。

3)參數

     color_index:1:表示顯示,不透明 色,效果為畫出內容。

                  0:表示不顯示,透明色,效果為刪除內容。

4)例子

U8GLIB u8g(...)

...

u8g.setColorIndex(1);

u8g.drawBox(10, 12, 20, 30);  

u8g.setColorIndex(0);

u8g.drawPixel(28, 14);          // clear pixel at (28, 14)

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190319130433428.png)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

drawLine


1)方法定義

void U8GLIB::drawLine(u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2

2)功能

     畫一條線段

3)參數

     x1: 線段起點 橫坐標

     y1: 線段起點 縱坐標

     x2: 線段終點 橫坐標

     y2: 線段終點 縱坐標

1

2

3

4

5

6

7

8

9

drawHLine


1)方法定義

void U8GLIB::drawHLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w)

2)功能

     畫一條向右的水平線段

3)參數

     x:線段起點 橫坐標

     y:線段起點 縱坐標

     w:水平寬度(w個像素點)

1

2

3

4

5

6

7

8

drawVLine


1)方法定義

void U8GLIB::drawVLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t h)

2)功能

     畫一條向下的垂直線段

3)參數

     x:線段起點 橫坐標

     y:線段起點 縱坐標

     h:垂直高度(h個像素點)


drawStr


1)方法定義

    u8g_uint_t U8GLIB::drawStr(u8g_uint_t x, u8g_uint_t y, const char *s)

2)功能

    顯示字符,使用前要使用setFont函數設置要顯示字符的字體(詳見七樓 設置)

    另外還有 drawStr90(); drawStr180(); drawStr270(); 使字符順時針旋轉響應的角度。

3)參數

     x:字符左下角的橫坐標

     y:字符左下角的縱坐標

     *s:要顯示的字符

4)例子

     u8g.drawStr(0, 20, "ABC");

     u8g.drawStr90(0,20, "ABC"); //字符旋轉90度


drawXBMP


1)方法定義

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)

2)功能

     此函數是一個顯示一個位圖的方法。

3)參數

     x:位圖左上角的橫坐標

     y:位圖左上角的縱坐標

     w:位圖的寬

     h:位圖的高

     *bitmap:位圖對象


getHeight


1)方法定義

u8g_uint_t U8GLIB::getHeight(void)

2)功能

     獲得屏幕的高度,本函數放置在picture loop裏麵或外部皆可

3)返回值

     屏幕高度


getWidth


1)方法定義

u8g_uint_t U8GLIB::getWidth(void)

2)功能

     獲得屏幕寬度,本函數放置在picture loop裏麵或外部皆可

3)返回值

     屏幕寬度


getStrWidth


1)方法定義

u8g_uint_t U8GLIB::getStrWidth(const char *s)

2)功能

     獲得所顯示字符串的寬度,即按照不同字體顯示的字符串共占了多少像素。

3)返回值

     字符串的寬度

4)例子

...

int w;  

...

u8g.setFont(u8g_font_osb18); //設置字體

u8g.drawStr(0,20, "ABC");

w = u8g.getStrWidth("ABC"); //獲得顯示的字符串寬度

u8g.drawFrame(0,10, w,11); //畫一個以獲得的字符串寬度為寬度的方框。


三、息屏方法:


u8g.drawStr(0,0, "");

1

四、位圖數據製作方法:


  可以使用【字模提取V2.2】工具生成。

  打開軟件,設置好參數,打開BMP圖片文件,生成C51格式的點陣字符就可以了。

注意:

1、圖片設置為單色即可,黑色為內容,白色為背景。

2、圖片寬度為8的倍數,高度不限。



五、數字顯示方法:


函數itoa()原型

char *itoa(int value,  char *string, int radix);

原型說明:

value:欲轉換的數據。

string:目標字符串的地址。

radix:轉換後的進製數,可以是10進製、16進製等。

功能:把一個整數轉換為字符串。


  char buffer[20];


  //  將int轉為char顯示出來

  itoa(gongzuo,buffer,10);//10:10進製顯示

  u8g.drawStr(30,36,buffer);


  //  將long轉為char顯示出來

  ltoa(gongzuo,buffer,10);//10:10進製顯示

  u8g.drawStr(30,36,buffer);


  //  將float或double轉為char顯示出來

  dtostrf(wendu,3,2,buffer);  // 3:小數點前保留3位;2:小數點後保留2位。

  u8g.drawStr(14,22, buffer);


  


本文版权:http://www.ndfweb.cn/news-906.html
  NDF俱乐部
  国际域名注册
  建站咨询
简体中文 NDF网站建设淘宝店 | ICO图标在线生成 | 外贸网站建设 | 联系我们
©2007-2024 NDF Corporation 鲁ICP备08005967号 Sitemap - RSSRSS订阅