sunsili 发表于 2023-12-8 23:42:02

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

适合在单片机上练手的小型图形库Tiny Graphics Library
这个小型图形库提供点、线和字符绘图命令,用于 ATtiny85 上的 I2C 128x64 OLED 显示器。
它通过避免显示缓冲器来支持RAM有限的处理器,并且可以与基于SH1106驱动芯片的I2C OLED显示器配合使用。   
我用 Banggood 提供的 Geekcreit 1.3 英寸 I2C OLED 显示器测试了这个库:
由于 I2C 只需要两条 I/O 线,因此图形显示可在 ATtiny85 上留出三行空闲线路供您自己的应用程序使用:
请注意,此库仅适用于具有四个引脚的 I2C 显示器。它不适用于SPI显示器或基于SSD1306或SSD1309驱动程序芯片的显示器,因为这些都不支持读回显示器内存。
显示器分为 8 个 8 像素高带(称为页面),一个字节对应于 8 个像素的垂直列,位的排序如下图所示:

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

此库允许您使用可选比例因子绘制点、绘制线条、绘制填充矩形和打印文本。项目中包括了一个演示直方图绘图程序,该程序可以调整自身以适应支持的每个显示器。
与大多数其他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
; i<=
24
; i=i+
4
) {
int
mark = x1+i*
4
;
    MoveTo(mark, y1); DrawTo(mark, y1
-2
);
int
tens = i/
10
;
if
(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
; i<=
25
; i=i+
5
) {
int
mark = y1+i*yscale
-10
;
    MoveTo(x1, mark); DrawTo(x1
-2
, mark);
int
tens = i/
10
;
if
(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
页: [1]
查看完整版本: 适合在单片机上练手的小型图形库Tiny Graphics Library