Für die Displaymodule XV-GDM128X64 und XV-GDM128X64-RGB (mit RGB LED-Backlight)
habe ich eine C-Library für Atmel Studio 6 geschrieben.
Diese möchte ich euch nun zur Verfügung stellen.
Beide Displays habe ich euch bereits im Forum Mikrocontroller-Praxis.de Onlineshop vorgestellt.
Links zu den Themen im Forum:
XV-GDM128X64 (ohne Backlight)
XV-GDM128X64-RGB (mit Backlight)
Features der Library:
Interface der Displaymodule (SPI):
Insgesamt werden 5 Signale benötigt. Ist SoftwareSPI gewählt, können diese an beliebige freie IO-Pins gelegt werden. Ist HardwareSPI gewählt, liegt MOSI und SCK an den IO-Pins des SPI-Moduls, die anderen bleiben frei.
Durch die Routine Display_Update() wird der gesamte Grafikspeicher des Displaymoduls aktualisiert. Die Framerate ist natürlich direkt von der SPI-Übertragungsrate abhängig.
Gemessen mit System ATmega32A @ 16MHz
SoftwareSPI
110Hz (9ms Aktualisierungszeit)
HardwareSPI
fsck = 8MHz* (Prescaler 2)
258Hz (3,5ms Aktualisierungszeit)
* testweise habe ich hier die Übertragungsrate sehr hoch gewählt. Die Übertragungsrate sollte 5MHz nicht überschreiten, also bei HardwareSPI den Prescaler entsprechend auswählen (siehe Config.h).
Dateien
Prototypen der Funktionen
System
CodeBox C
Display graphic
CodeBox C
Display text
CodeBox C
Decimal numbers
CodeBox C
Backlight
CodeBox C
Datenblatt:
XV-GDM128X64 Datasheet.pdf
XV-GDM128X64-RGB Datasheet.pdf
Links in den Onlineshop:
XV-GDM128X64
XV-GDM128X64-RGB
Mein Bilderalbum im Forum
Die Bilder im Album zeigen das Displaymodul am Nano Board mit ATmega32A (16MHz, VCC5V).
(Leider stimmt die Reihenfolge der Bilder nicht mit der Abfolge des Demoprogramms überein.)
Nutzen könnt ihr die Lib unter
BSD Licence
Das folgende Video zeigt den Ablauf des Demoprogramms
habe ich eine C-Library für Atmel Studio 6 geschrieben.
Diese möchte ich euch nun zur Verfügung stellen.
Beide Displays habe ich euch bereits im Forum Mikrocontroller-Praxis.de Onlineshop vorgestellt.
Links zu den Themen im Forum:
XV-GDM128X64 (ohne Backlight)
XV-GDM128X64-RGB (mit Backlight)
Features der Library:
- einfach in Atmel Studio Projekt einbinden
- für AVR und AVR Xmega Mikrocontroller (einfach in Config.h die Architektur auswählen)
- unterstützt SoftwareSPI und HardwareSPI
- Display-Modi:
- Landscape (Breite 128px, Höhe 64px) und
- Portrait (Breite 64px, Höhe 128px)
- Signale der Schnittstelle (A0, RESET\, CS\, MOSI und SCK):
- bei SoftwareSPI beliebigen IO-Pins zuzuordnen,
- bei HarwareSPI steht MOSI und SCK fest
- sind mehrere SPI-Module vorhanden (Xmega), kann ein beliebiges SPI-Modul ausgewählt werden (HardwareSPI)
- aktuell sind zwei Fonts (FONT_1 und FONT_2) integriert. Der größere FONT_2 kann "abgeschaltet" werden, so dass man Flash-Momory einspart
- des Display-Memory befindet sich im Applikations-Mikrocontroller. Die Funktionen der Lib haben somit schnellen Zugriff auf den Speicher (belegt wird 1.024Byte SRAM), dadurch...
- jeder Pixel kann adressiert werden (Adressierungsmodi sind: Pixel setzen, Pixel löschen, Pixel mit EXOR-Funktion)
- grafische Grundfunktionen sind implementiert: Draw_Pixel, Draw_Line, Draw_Rect, Draw_Circle.
- Textausgabe: Display_Text und Display_Text_F (Text im Flash Memory)
- Zahlen: 8bit und 16bit dezimal ausgeben (weiteres werde ich vielleicht noch einbauen oder kann auch von der eigenen Software über die Display_Text Funktionen ausgegeben werden).
- Text-Modi: normal/invers, Hintergrund vorhanden oder "durchsichtig"
- Funtion zur Kontrasteinstellung: SetContrast
- Grafiken ausgeben, die sich im Flash Memory befinden (Display_Image)
- RGB-LED-Backlight kann von der Library gesteuert werden. Signale können invertiert werden (alles einstellbar in Config.h, PWM habe ich nicht realisiert)
Interface der Displaymodule (SPI):
Insgesamt werden 5 Signale benötigt. Ist SoftwareSPI gewählt, können diese an beliebige freie IO-Pins gelegt werden. Ist HardwareSPI gewählt, liegt MOSI und SCK an den IO-Pins des SPI-Moduls, die anderen bleiben frei.
- MOSI (DATA)
- SCK
- CS\
- A0
- RESET\
Durch die Routine Display_Update() wird der gesamte Grafikspeicher des Displaymoduls aktualisiert. Die Framerate ist natürlich direkt von der SPI-Übertragungsrate abhängig.
Gemessen mit System ATmega32A @ 16MHz
SoftwareSPI
110Hz (9ms Aktualisierungszeit)
HardwareSPI
fsck = 8MHz* (Prescaler 2)
258Hz (3,5ms Aktualisierungszeit)
* testweise habe ich hier die Übertragungsrate sehr hoch gewählt. Die Übertragungsrate sollte 5MHz nicht überschreiten, also bei HardwareSPI den Prescaler entsprechend auswählen (siehe Config.h).
Dateien
- GraphicDisplayModule128X64.c
- Config.h
- Display.c
- Display.h
- Display_Interface_AVR8.h
- Display_Interface_XMEGA.h
- Font.h
- Image.h
Prototypen der Funktionen
System
CodeBox C
void Display_Init(void); void Display_Update(void); void Display_SetContrast(uint8_t i); Parameter: i = 0..40, center is 20
Display graphic
CodeBox C
void Display_Clear(void); void Display_Fill(void); void Display_DrawPixel(int16_t x, int16_t y); void Display_DrawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1); void Display_DrawRect(int16_t x, int16_t y, int16_t w, int16_t h); void Display_DrawRect_Fill(int16_t x, int16_t y, int16_t w, int16_t h); void Display_DrawCircle(int16_t x0, int16_t y0, int16_t radius); SetPenMode(mode) Parameter: mode = pmSET, pmCLEAR, pmEXOR pmSet : set pixel pmCLEAR : clear pixel pmEXOR : exor pixel void Display_DrawImage(int16_t x1, int16_t y1, const uint8_t *image)
Display text
CodeBox C
void Display_Text(uint8_t x, uint8_t y, char *string); void Display_Text_F(uint8_t x, uint8_t y, const char *string); SetFont(index) Parameter: index = FONT_1 or FONT_2 Font 1: width: 6px, height: 8px Font 2: width:10px, height 16px, memory usage about 5326 Byte (Font 2 available if EMBED_FONT2 = true, see Config.h) SetTextMode(mode) Parameter: mode = (tmNormal or tmInverse) and (tmBrushSolid or tmBrushClear) tmNormal : display text normal tmInverse : display text inverse tmBrushSolid: backround of text is solid (inversed to pen color) tmBrushClear: background of text is not visible tmInit : normal and solid brush
Decimal numbers
CodeBox C
void Display_Decimal8(int16_t x, int16_t y, uint8_t d); void Display_Decimal16(int16_t x, int16_t y, uint16_t d);
Backlight
CodeBox C
void Display_SetBacklight_By_Color(uint8_t color); Parameter color: blOFF, blRED, blGREEN, blYELLOW, blBLUE, blPURPLE, blCYAN, blWHITE Available if backlight controlled by lib (DISPLAY_BACKLIGHT_CONTROL = true), see Config.h.
Datenblatt:
XV-GDM128X64 Datasheet.pdf
XV-GDM128X64-RGB Datasheet.pdf
Links in den Onlineshop:
XV-GDM128X64
XV-GDM128X64-RGB
Mein Bilderalbum im Forum
Die Bilder im Album zeigen das Displaymodul am Nano Board mit ATmega32A (16MHz, VCC5V).
(Leider stimmt die Reihenfolge der Bilder nicht mit der Abfolge des Demoprogramms überein.)
Nutzen könnt ihr die Lib unter
BSD Licence
Das folgende Video zeigt den Ablauf des Demoprogramms