適合在單片機(jī)上練手的小型圖形庫(kù)
時(shí)間:2025-11-16 22:35:06
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
這個(gè)小型圖形庫(kù)提供點(diǎn)、線和字符繪圖命令,用于 ATtiny85 上的 I2C 128x64 OLED 顯示器。
它通過(guò)避免顯示緩沖器來(lái)支持RAM有限的處理器,并且可以與基于SH1106驅(qū)動(dòng)芯片的I2C OLED顯示器配合使用。
我用 Banggood [3] 提供的 Geekcreit 1.3 英寸 I2C OLED 顯示器測(cè)試了這個(gè)庫(kù):
由于 I2C 只需要兩條 I/O 線,因此圖形顯示可在 ATtiny85 上留出三行空閑線路供您自己的應(yīng)用程序使用:

請(qǐng)注意,此庫(kù)僅適用于具有四個(gè)引腳的 I2C 顯示器。它不適用于SPI顯示器或基于SSD1306或SSD1309驅(qū)動(dòng)程序芯片的顯示器,因?yàn)檫@些都不支持讀回顯示器內(nèi)存。
顯示器分為 8 個(gè) 8 像素高帶(稱為頁(yè)面),一個(gè)字節(jié)對(duì)應(yīng)于 8 個(gè)像素的垂直列,位的排序如下圖所示:
這是一個(gè)基于ST7735和ST7789驅(qū)動(dòng)芯片的小型彩色TFT顯示器系列的圖形庫(kù)。

此庫(kù)允許您使用可選比例因子繪制點(diǎn)、繪制線條、繪制填充矩形和打印文本。項(xiàng)目中包括了一個(gè)演示直方圖繪圖程序,該程序可以調(diào)整自身以適應(yīng)支持的每個(gè)顯示器。
與大多數(shù)其他TFT顯示庫(kù)不同,該庫(kù)不需要內(nèi)存緩沖區(qū),允許它在任何處理器上運(yùn)行,直到ATtiny85。
這些顯示器是SPI的,需要四個(gè)引腳來(lái)驅(qū)動(dòng)顯示器,在ATtiny85上留出一個(gè)引腳以連接到另一個(gè)器件,例如溫度傳感器。如果需要更多引腳,請(qǐng)選擇更大的芯片,例如ATtiny84;
測(cè)試源碼:
const int Now = 1547; // To set the time; eg 15:47unsigned 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); }}
項(xiàng)目源碼都可以在以下兩個(gè)鏈接中找到,這里就不過(guò)多介紹了,感興趣的可以直接看看。
Tiny Graphics Library:http://www.technoblogy.com/show?23OS
Tiny TFT Graphics Library:http://www.technoblogy.com/show?L6I





