Forum: Mikrocontroller und Digitale Elektronik Problem mit EA-DOGM204 Display


von Nico (Gast)


Lesenswert?

Hallo Community,

ich habe hier ein DOGM204 (4 Zeilen à 20 Zeichen) Display von Electronic 
Assembly von Reichelt.

Ich habe es momentan im 8-Bit Modus an einem ATxMega64A3U. Der µC rennt 
auf 32 MHz (16 Mhz Quarz, 2-fach PLL)

Ich kriege das Display scheinbar einfach nicht initialisiert. Habe es 
bereits mit der Routine aus dem Datenblatt von EA sowie das Beispiel aus 
dem Datenblatt von dem Controller (SSD1803A) probiert.

Der Booster scheint zu starten, ich habe bei VOUT ca. 12,2 V anliegen. 
Außerdem habe ich die Routine leicht abgeändert, ich habe das Blinken 
aktiviert.
Eigentlich habe ich angenommen, das Display würde nun einen blinkenden 
Cursor anzeigen. Leider sehe ich aber rein gar nichts.

Hat jemand schon einmal das Display erfolgreich angesteuert und einen 
funktionierenden Code für mich ? Von mir aus auch gerne über SPI.
Ich finde auch, dass das Anzeigen von Zeichen in den Datenblättern 
schlecht / gar nicht dokumentiert ist. Aber da komme ich eventuell noch 
selbst drauf, sobald ich das Display richtig aktiviert bekommen habe.

LG
Nico

von spess53 (Gast)


Lesenswert?

Hi

>Ich finde auch, dass das Anzeigen von Zeichen in den Datenblättern
>schlecht / gar nicht dokumentiert ist. Aber da komme ich eventuell noch
>selbst drauf, sobald ich das Display richtig aktiviert bekommen habe.

Was soll in Punkt

  9.20 Write Data to RAM

vom Datenblatt noch drin stehen? Poste mal den Code von deiner 
Initialisierung.

MfG Spess

von Nico (Gast)


Lesenswert?

Hallo Spess und danke für die schnelle Antwort.

Wie gesagt, mit dem CGRAM/DDRAM/SEGRAM habe ich mich noch nicht befasst. 
Falls dazu noch Fragen sind, kommen die später. Aber danke für den 
Hinweis.

Mein Code sieht so aus:
1
DATA_PORT.OUTCLR = 0xFF;
2
  DATA_PORT.DIRSET = 0xFF;
3
  
4
  REG_PORT.DIRSET = RESET | RS_PIN | RW_PIN | E_PIN;
5
  
6
  _delay_ms(10);
7
  SPI_PORT.OUTCLR = RESET;
8
  _delay_ms(50);
9
  SPI_PORT.OUTSET = RESET;
10
  _delay_ms(20);
11
12
LCD_Write_IS(0x3A); // Function Set (4-Line, Normal Height, RE = 1, IS = 0)
13
LCD_Write_IS(0x09); // Extended Function Set (4-Line, no inverting, B/W invert)
14
LCD_Write_IS(0x06); // Bottom View
15
LCD_Write_IS(0x3C); // Function Set (RE = 0, IS = 1)
16
LCD_Write_IS(0x39); // Function Set
17
LCD_Write_IS(0x6C); // Follower Control
18
LCD_Write_IS(0x57); // Booster on, Set Value
19
LCD_Write_IS(0x7B); // Set Contrast
20
LCD_Write_IS(0x38); // Function Set (RE = 0, IS = 0)
21
LCD_Write_IS(0x0F); // Display On
22
LCD_Write_IS(0x01); // Clear Display

die Schreib-Routine:
1
void LCD_Write_IS(uint8_t instruction)
2
{
3
  REG_PORT.DIRSET = 0xFF;
4
  
5
  REG_PORT.OUTCLR = RW_PIN;    //Write Enable
6
  REG_PORT.OUTCLR = RS_PIN;    //RS-Pin Low: Instruction
7
  
8
  //_delay_us(1);
9
  
10
        REG_PORT.OUTSET = E_PIN;    //Enable Instruction
11
  DATA_PORT.OUT = instruction;  //Write Data
12
  //_delay_us(1);
13
  
14
  REG_PORT.OUTCLR = E_PIN;    //Disable for new Instruction/Data
15
  
16
  while(LCD_Read_ST() & 0x80);
17
  _delay_us(10);
18
}

REG_PORT ist PORTE, wobei Reset Pin0, RS_PIN, RW_PIN und E_PIN die Pins 
5-7 sind.
Der DATA_PORT ist PORTC.

LCD_Read_ST() ist so aufgebaut wie LCD_Write_IS(), nur RW_PIN wird 
gesetzt und der DATA_PORT wird am Anfang auf Eingang gesetzt und 
zwischen Enable ausgelesen. Soll an der Stelle nur prüfen, ob das 
Busy-Bit gesetzt ist.

Wie gesagt, das ist zum Großteil die Routine aus dem EA Datenblatt, nur 
habe ich beim Function-Set den Blink-Cursor aktiviert (denke ich) und am 
Ende das Display aktiviert.

LG
Nico

von Nico (Gast)


Lesenswert?

Hat keiner eine Idee ?

von Nico (Gast)


Lesenswert?

Bin nun von selbst drauf gekommen.

Man musste etwas die Einstellungen für Follower und Kontrast justieren 
und dann klappt die Ansteuerung endlich!

Die Bytereihenfolge zur richtigen Ansteuerung (FSTN Display):

0x3A, 0x0B, 0x06, 0x3D, 0x6E, 0x54, 0x7C, 0x38, 0x0F, 0x01

Die Ansteuerung geht nun über SPI und funktioniert einwandfrei.

Danke trotzdem ;)

LG
Nico

von Pawel (Gast)


Lesenswert?

Hi! Seh ich das richtig, dass das DOGM204 kein SS (slave select) für das 
SPI hat?

von Thorsten (Gast)


Lesenswert?

Hallo Nico,

bisher hab ich mit dem DOGM163 gearbeitet, das wurde mir aber zu klein 
und ich hab mir das 204er gegönnt.
jetzt hänge ich etwas an der SPI Schreibroutine...

Könntest du hier mal deine Schreibroutine posten?

Grüße Thorsten

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.