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 :
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 :
Hier der komplette CooCox-Projektordner zum Download :