良许Linux教程网 干货合集 适合在单片机上练手的小型图形库

适合在单片机上练手的小型图形库

这个小型图形库支持点、线和字符的绘制命令,并可运行于ATtiny85处理器上的I2C 128×64 OLED显示器上。

相较于传统的显示缓冲区,该图形库采用一种巧妙的方法避免了缓存区,以支持内存资源受限的处理器。同时,该图形库还可兼容基于SH1106驱动芯片的I2C OLED显示器。

image-20240103201400362
image-20240103201400362

我用 Banggood [3] 提供的 Geekcreit 1.3 英寸 I2C OLED 显示器测试了这个库:

image-20240103201405425
image-20240103201405425

由于 I2C 只需要两条 I/O 线,因此图形显示可在 ATtiny85 上留出三行空闲线路供您自己的应用程序使用:

image-20240103201409076
image-20240103201409076

请注意,此库仅适用于具有四个引脚的 I2C 显示器。它不适用于SPI显示器或基于SSD1306或SSD1309驱动程序芯片的显示器,因为这些都不支持读回显示器内存。

显示器分为 8 个 8 像素高带(称为页面),一个字节对应于 8 个像素的垂直列,位的排序如下图所示:

image-20240103201411843
image-20240103201411843

这是一个基于ST7735和ST7789驱动芯片的小型彩色TFT显示器系列的图形库

![image-2024010320141476387457&wxfrom=5&wx_lazy=1&wx_co=1)

image-20240103201417287
image-20240103201417287

此库允许您使用可选比例因子绘制点、绘制线条、绘制填充矩形和打印文本。项目中包括了一个演示直方图绘图程序,该程序可以调整自身以适应支持的每个显示器。

与大多数其他TFT显示库不同,该库不需要内存缓冲区,允许它在任何处理器上运行,直到ATtiny85。

这些显示器是SPI的,需要四个引脚来驱动显示器,在ATtiny85上留出一个引脚以连接到另一个器件,例如温度传感器。如果需要更多引脚,请选择更大的芯片,例如ATtiny84;

测试源码:

const int Now = 1547;                   // To set the time; eg 15:47
unsigned long StartMins = (unsigned long)((Now/100)*60 + (Now%100));

void loop () {
  unsigned int SampleNo = StartMins/15;
  // Plot temperature graph
  int x1 = 16, y1 = 11;
  int yscale = 2;                         // Points per degree
  MoveTo(26, 56); PlotText(PSTR("Temperature ~C"));
  // Horizontal axis
  MoveTo(x1, y1); DrawTo(x1+96, y1);
  for (int i=0; iif (tens != 0) {
      PlotChar(tens+'0', mark-6, y1-12);
      PlotChar(i%10+'0', mark, y1-12);
    } else PlotChar(i%10+'0', mark-3, y1-12);
  }
  // Vertical axis
  MoveTo(x1, y1); DrawTo(x1, y1+50);
  for (int i=5; iif (tens != 0) PlotChar(tens+'0', x1-15, mark-3);
    PlotChar(i%10+'0', x1-9, mark-3);
  }
  for (;;) {
    // Now start plotting the temperature every 15 mins
    while ((unsigned long) ((StartMins + millis()/60000)/15)%96 == SampleNo);
    // Time to take a new reading
    SampleNo = (SampleNo+1)%96;
    int Temperature = (analogRead(A2)*25)/233;  // In half degrees 
    PlotPoint(SampleNo+x1, Temperature-10+y1);
  }
}

项目源码都可以在以下两个链接中找到,这里就不过多介绍了,感兴趣的可以直接看看。

Tiny Graphics Library:

http://www.technoblogy.com/show?23OS

Tiny TFT Graphics Library:

http://www.technoblogy.com/show?L6I

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部