U8glib是一个在ARM,C51,Arduino等常用MCU上都可以得到支持的图形绘制库,用途广泛,兼容性优秀,功能也十分强大,
   
  
 
   
  
 
   
  
 
   
  
 
  我所使用的是12864蓝底白字的款式,通过SPI的方式进行连接
  
 
   
  
 
  实例化语句 U8GLIB_ST7920_128x64_1X u8g(3,9,8)
   
   其中3接12864得 E,9接RW,8接RS
   
  
 
   
  
 
  硬件连接:
  
 
  12864接口名称  
   UNO接口
  
 
   
    
    
  E 
  3
  
 
   
    
    
  RS 
  8
  
 
   
    
    
  RW 
  9
  
 
   
    
    
  PSD 
  GND
    
   
   
   
  BLK VCC
   
  
 
   
  
 
   
  
 
  u8glib的执行部分
  
 
   
  
 
   
  
 
  void loop()
  
 
  {
  
 
  //之前可以键入其他函数,只运行一次
  
 
  u8g.firstPage();//这里开始执行u8glib的函数
  
 
  do{
  
 
  //这里do循环内的函数循环执行
  
 
  }while(u8g.nextPage)
  
 
  }
  
 
   
  
 
  例如
  
 
   
  
 
  void setup()
  
 
  {
  
 
   
   Serial.begin(9600);
  
 
  }
  
 
  void loop()
  
 
  //之前可以键入其他函数,只运行一次
  
 
  u8g.firstPage();//这里开始执行u8glib的函数
  
 
  do{
  
 
  //这里do循环内的函数循环执行
  
 
  u8g.drawLine(20,10,20,10);//绘制一条线
  
 
  }while(u8g.nextPage)
  
 
  }
  
 
   
  
 
  ==============================================================================================
  
 
  U8glib中的文字:
  
 
   
  
 
  先设置文字字体,具体字体列表在wiki上可以查询:
  
https://github.com/olikraus/u8glib/wiki/fontgroup
  
 
   
  
 
  (以下函数都省略了u8g这一实例文字)
  
 
   
  
 
  setFont(u8g_font_4x6);
  
 
   
  
 
  以字符串的左下角坐标来绘制文字
  
 
   
  
 
  drawStr(1, 9, "xxx");
  
 
   
  
 
  其中1 为屏幕中的x,9为屏幕中的y坐标
  
 
   
   
  一些变量和常量则需要用print函数来绘制
   例:
   int Day =1;
   u8g.setPrintPos(3,16);
    
   u8g.print(Day);
   
   
  
 
   
  
 
  注:这里的屏幕坐标以0为起始,也就是左上角坐标为(0,0),左下角坐标为(0,63)以此类推
  
 
   
  
 
   
  --------------------------x
  
 
  |
  
 
  |
  
 
  |
  
 
  |
  
 
  |
  
 
  |
  
 
  |
  
 
  y
  
 
   
  
 
  ===================================
  
 
   
  
 
  绘制线条
  
 
   
  
 
  drawLine(x1,y1,x2,y2) 
  
  
 
   
  
 
  x1,y1为起始坐标,x2,y2为结束坐标
  
 
   
  
 
  绘制点
  
 
   
  
 
  drawPixel(x,y)
  
 
   
  
 
  绘制垂直线段
  
 
   
  
 
  drawVLine(x,y,h)
  
 
   
  
 
  其中 h 为这一线段的宽度
  
 
   
  
 
  绘制水平线段
  
 
   
  
 
  drawHLine(x,y,h)
  
 
   
  
 
   
  
 
  ===========================================
  
 
   
  
 
  
绘制图形:
  
 
   
  
 
  绘制实心三角形 drawTriangle(x1,y1,x2,y2,x3,y3)
  
 
   
  
 
  1 2 3为三角形各个点
  
 
   
  
 
   
  
 
  绘制长方形 drawFrame(x,y,w,h)
  
 
   
  
 
  x,y为方形左上角的点的坐标,w为宽度,h为高度,w<=127,h<=63
  
 
   
  
 
   
  
 
  绘制圆角矩形 drawRFrame(x,y,w,h,r)
  
 
   
  
 
  其中r为圆角的半径,r需要不超过矩形最小边长的一半
  
 
   
  
 
   
  
 
  绘制圆形 drawCircle(x,y,r,MODE)
  
 
  绘制实心圆形 drawDisc(x,y,r,MODE)
  
 
   
  
 
  
关于MODE:u8g支持只绘制一部分圆形,MODE可以为
  
 
   
  
 
  绘制上半圆 U8G_DRAW_UPPER
  
 
  绘制右上半圆 U8G_DRAW_UPPER_RIGHT
  
 
  绘制左上半圆  
  U8G_DRAW_UPPER_LEFT
  
 
  绘制下半圆  
  U8G_DRAW_LOWER
  
 
  绘制右下半圆  
  U8G_DRAW_LOWER_RIGHT
  
 
  绘制左下半圆  
  U8G_DRAW_LOWER_LEFT
  
 
   
  
 
   
  
 
  绘制椭圆 drawEllipse(x,y,rx,ry,MODE)
  
 
  绘制实心椭圆 drawFilledEllipse(x,y,rx,ry,MODE)
  
 
  MODE用法同上
  
 
   
  
 
   
  
 
   
  
 
   
  
 
   
  
 
   
  
 
  ================================
  
 
  将自制图形存入到FLASH中
  
 
   
  
 
  在数组的末尾加上 U8G_PROGMEM
  
 
   
  
 
  例如:
  
 
   
  
 
  string base[] U8G_PROGMEM ={}
  
                
        
    
                    转载请注明原文地址: https://ju.6miu.com/read-271.html