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
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
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
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
Hi! Seh ich das richtig, dass das DOGM204 kein SS (slave select) für das SPI hat?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.