82-OLED_SSD1331-Library (STM32F4)

diese Library dient zum ansteuern eines Grafik OLed-Displays mit einem SSD1331-Chip.
(96 x 64 Pixel und 16bit Farbe)

Das Display hat nur eine Diagonale von 0,96 Zoll und gibts z.B.
bei “Watterott” für ca. 28 EUR zu kaufen.

das Display wird per SPI angesteuert (aus dem Grund wird auch noch die SPI-Library benötigt)

weil das ganze nur über SPI angesteuert wird, ist es nicht gerade sehr schnell aber dafür braucht man nur 4 Leitungen.

MISO wird nicht benötigt, Reset habe ich in meinem Beispiel benutzt, kann man aber
wahrscheinlich auch an Vcc hängen.

in der Library ist das löschen vom Bildschirm und das setzen von Punkten, zeichnen von Linien und Kreisen dabei. Die Unterstützung für 16bit Fonts ist auch vorhanden.

Hinweis zur Benutzung der Textausgabe :
Es können die Zeichensätze der Font-Library benutzt werden, allerdings muss der Include Pfad in den Font.c Files angepasst werden.

Weil das Display so klein ist, habe ich einen extra Font (6×8) dazugepackt damit passen
16 Zeichen x 8 Zeilen auf das Display.

Bild vom Display :

ssd1331_b

Benutzte Pins :

1
2
3
4
5
6
PB8  : R (Reset)
PB11 : CS   (ChipSelect)
PB12 : D/C  (DATA/CMD)
PB13 : SPI_CLK
PB14 : SPI_MISO (MISO / SDO) [nicht notwendig]
PB15 : SPI_MOSI (MOSI / SDI)

Funktionen :

1
2
3
4
5
6
7
8
9
void UB_LCD_Init(void);                                                                             // zum init vom Display
void UB_LCD_SetCursor2Draw(uint8_t xpos, uint8_t ypos);                                             // zum setzen vom Cursor
void UB_LCD_SetPixel(uint16_t color);                                                               // zum setzen eines Pixels
void UB_LCD_DrawPixel(uint8_t xpos, uint8_t ypos, uint16_t color);                                  // zum zeichnen eines Pixels
void UB_LCD_FillScreen(uint16_t color);                                                             // zum loeschen vom Screen
void UB_LCD_DrawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint16_t color);               // zum zeichnen einer Linie
void UB_LCD_DrawCircle(uint8_t x0, uint8_t y0, uint8_t radius, uint16_t color);                     // zum zeichnen eines Kreises
void UB_LCD_DrawChar(uint8_t x, uint8_t y, uint8_t ascii, UB_Font *font, uint16_t vg, uint16_t bg); // zum schreiben eines Zeichens
void UB_LCD_DrawString(uint8_t x, uint8_t y,char *ptr, UB_Font *font, uint16_t vg, uint16_t bg);    // zum schreiben eines Strings

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//--------------------------------------------------------------
// File     : main.c
// Datum    : 10.05.2014
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der SSD1331-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_lcd_ssd1331.h"
 
int main(void)
{
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init vom Display
  UB_LCD_Init();
 
  // Screen mit gruen füllen
  UB_LCD_FillScreen(RGB_COL_GREEN);
 
  // rote Linie zeichnen
  UB_LCD_DrawLine(10,20,50,60,RGB_COL_RED);
 
  // blauen Kreis zeichnen
  UB_LCD_DrawCircle(50,30,25,RGB_COL_BLUE);
 
  while(1)
  {
 
  }
}

Hier die Library zum Download :

ub_stm32f4_lcd_ssd1331_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_82_LCD_SSD1331


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.