Hallo, ich betreibe an einem Atmega16 ein DIP204-4 (4x20 von Reichelt) Display mit mit dieser lcd_init. Das DIP204-4 funktioniert auch hiermit. Nun will ich aber das EA T204B-BNLW (4x20 von reichelt) beide sind HD44780 kompatibel. Aber das EA T204B-BNLW bekomme ich nicht zum laufen. Was ist hier an der Initialisierung falsch? void lcd_init(void) { LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN); // Port auf Ausgang schalten // muss 3mal hintereinander gesendet werden zur Initialisierung _delay_ms(15); LCD_PORT &= 0xF0; LCD_PORT |= 0x03; LCD_PORT &= ~(1<<LCD_RS); // RS auf 0 lcd_enable(); _delay_ms(5); lcd_enable(); _delay_ms(1); lcd_enable(); _delay_ms(1); // 4 Bit Modus aktivieren LCD_PORT &= 0xF0; LCD_PORT |= 0x02; lcd_enable(); _delay_ms(1); lcd_command(0x24); lcd_command(0x09); lcd_command(0x20); lcd_command(0x0C); lcd_command(0x01); lcd_command(0x06); lcd_clear(); }
>Aber das EA T204B-BNLW bekomme ich nicht zum laufen.
Was geht denn nicht? Siehst du überhaupt irgendwas?
hallo, vielleicht solltest Du nach dem LCD-Löschen "lcd_command(0x01);" einfach ein bischen Wartezeit spendieren. Ansonsten ist es bis auf 8/4-Bit mode wie im Beispiel von EA: http://www.lcd-module.de/deu/disk/development%20service/DIP204%20KS0073/Init_DIP204_SPI.txt http://www.lcd-module.de/download.html
Könnte es sein das das Teil eine negative Kontrastspannung braucht? Ich hatte da gerade was gelesen zu den Typen mit einem W im Namen. W = Wide Temperature.
Also im Moment sehe ich nur die Zeile 2 und 4. Ich sende einen Text an das LCD. Es erscheinen aber nur wahrlos zeichen und der couser blinkt.
>Es erscheinen aber nur wahrlos zeichen >und der couser blinkt. Dann würde ich an deiner Stelle die Verdrahtung noch so 10-20 mal kontrollieren.
Frage: wie ist denn der Port-Pin an die ENABLE-Leitung des LCD initialisiert. (vor dem ersten Init-Kommando???)
Hier der Quelltext. Den teil habe ich schon für das andere LCD angepasst. // setzt den Cursor in Zeile y (1..4) Spalte x (0..15) void set_cursor(uint8_t x, uint8_t y) { uint8_t tmp; switch (y) { case 1: tmp=0x80+0x00+x; break; // 1. Zeile case 2: tmp=0x80+0x40+x; break; // 2. Zeile case 3: tmp=0x80+0x14+x; break; // 3. Zeile case 4: tmp=0x80+0x54+x; break; // 4. Zeile default: return; // für den Fall einer falschen Zeile } lcd_command(tmp); }
>Hier der Quelltext. Den teil habe ich schon für das andere LCD >angepasst. Wen interessiert das? Bekommst du irgendwo auf dem Display irgendwie zusammenhängende Texte oder nur Schrott? Komm endlich mal zur Sache.
Habe ich doch schon oben geschrieben! "Also im Moment sehe ich nur die Zeile 2 und 4. Ich sende einen Text an das LCD. Es erscheinen aber nur wahrlos zeichen und der couser blinkt."
>Habe ich doch schon oben geschrieben! >"Also im Moment sehe ich nur die Zeile 2 und 4. >Ich sende einen Text an das LCD. Es erscheinen aber nur wahrlos zeichen >und der couser blinkt." Und warum denkst du das das an der Routine zur Positionierung des Cursors liegt? DA liegt das Problem mit Sicherheit nicht. Gute Nacht.
Das ist mir auch klar. Aber das LCD was vorher dran war (DIP204-4), hatte halt andere Adressen.
>Das ist mir auch klar. Aber das LCD was vorher dran war (DIP204-4), >hatte halt andere Adressen. Oh Mann! Gib drei Buchstaben auf dem Display aus: ABC Was siehst du?
>Ich mache nichts anderes und ich sehe nur schrott!!!!!
Tja, und wir alle hier sehen nicht was du siehst.
Könntest du vieleicht die Güte haben zu erzählen
was du siehst? Ist es dir irgendwie möglich
eine Beschreibung des Inhaltes des Displays zu
liefern? Falls nicht, frage doch mal dir bekannte
Personen ob sie für dich vieleicht mal eine
Beschreibung der Dinge die sich da auf dem
Display tun machen könnten.
1,2,3,4 ich dreh gleich durch!
wenn es denn hilfreich ist..... Zeile 1: steht nix Zeile 2: L=Ö?/%§///)))===%TGB Zeile 3: steht nix Zeile 4: '*_:;;)YSEV?`*===R_- ...ich glaube nicht... wie ich schon sagte nur schrott.
Du sagtest Du siehst nur was auf Zeile 2 und 4. Das sieht irgendwie nach Initialisierung aus. Als 2 zeilges inititalisieren. Ist das Diplay als 2 zeiliges initialisiert ? Schau ins Datenblatt wo die Adressen der Zeilen sind. Die unterscheiden sich !! Kann auch ein Problem mit der Zeilenumschaltung sein !! Wenn das alles stimmt kommt nur noch eine Datenleitung in Frage. www.sprut.de hilft ungemein beim Verständnis von LCD Displays.
>wenn es denn hilfreich ist..... >Zeile 1: steht nix >Zeile 2: L=Ö?/%§///)))===%TGB >Zeile 3: steht nix >Zeile 4: '*_:;;)YSEV?`*===R_- Das siehst du wenn du nur ABC ausgiebst? Ich denke wir reden hier nicht von derselben Sache. Mach was du willst und nerv hier nicht weiter rum.
holger schrieb: >>wenn es denn hilfreich ist..... > >>Zeile 1: steht nix >>Zeile 2: L=Ö?/%§///)))===%TGB >>Zeile 3: steht nix >>Zeile 4: '*_:;;)YSEV?`*===R_- > > Das siehst du wenn du nur ABC ausgiebst? > Ich denke wir reden hier nicht von derselben Sache. > Mach was du willst und nerv hier nicht weiter rum. @holger wenn es dich nervt, dann antworte hier doch nicht. Bei deinen Antworten kommt eh nix bei rum. Falls du es nicht wissen solltes, dies hier ist ein Forum, wo Meinungen untereinander ausgetauscht werden können, Fragen gestellt und beantwortet werden können. Deine schon fast beleidigenden Antworten sind hier wohl nicht angebracht.
Pascal, die Idee ist du gibst ABC aus und es steht z.B. %&$ dort, daraus läßt sich unter Umständen etwas ableiten. Hier will man dir helfen, wo ist das Problem mal ABC auszugeben und zu posten was du siehst ?
Wenn du den gesamten Beitrag gelesen hättes, wäre es die bestimmt aufgefallen, das es dem LCD egal ist was ich schicke. ABC habe ich auch gemacht. Es sieht immer so aus, oder ähnlich. Selbst wenn ich die Spannung wegnehme, wieder einschalte und auch erneut ABC sende steht wieder was anderes im LCD. Das Durcheinader aus Zeichen und Buchstaben ist also eher zufällig. >>Zeile 1: steht nix >>Zeile 2: L=Ö?/%§///)))===%TGB >>Zeile 3: steht nix >>Zeile 4: '*_:;;)YSEV?`*===R_-
>Wenn du den gesamten Beitrag gelesen hättes, wäre es die bestimmt >aufgefallen, das es dem LCD egal ist was ich schicke. ABC habe ich auch >gemacht. Es sieht immer so aus, oder ähnlich. Selbst wenn ich die >Spannung wegnehme, wieder einschalte und auch erneut ABC sende steht >wieder was anderes im LCD. Das Durcheinader aus Zeichen und Buchstaben >ist also eher zufällig. Das wäre doch z.B. mal eine wichtige Information gewesen. Warum hast du das nicht gleich gesagt? Irgendwas stimmt da doch mit deinem Anschluss nicht. Floatet der Enable Pin vieleicht? Oder das Teil ist bereits defekt.
Möglicherweise habe ich noch mehr überlesen, ich habe den Beispielcode gesehen und ein wenig von dir aber nicht das Ganze originale Program. Wenn du nur ABC ausgibst dann kann nicht mehr erscheinen... nicht mehr als 3 Zeichen. Was kommt nach deiner Ausgabe ? ich hoffe nen endless loop, poste mal was du hast.
#include <avr/io.h> #include "lcd-routines.h" int main(void) { lcd_init(); set_cursor(0,2); lcd_string("Test"); while(1) { } return 0; } Mehr mache ich nicht. Ob das LCD defekt ist, schließe ich mal aus, da es neu ist. Hat ja auch alles mit dem DIP204-4 (KS0073) funktioniert. Habe ja nur das LCD getauscht (KS0076 laut Reichelt Katalog). Im Datenblatt steht was von HD44780. Und beide LCDs sind ja HD44780 kompatibel.
Und wenn du nir ein LCD_clear machst ?
1 | int main(void) |
2 | {
|
3 | lcd_init(); |
4 | lcd_clear (); |
5 | |
6 | while (1); |
7 | |
8 | set_cursor(0,2); |
9 | |
10 | lcd_string("Test"); |
11 | |
12 | while(1) |
13 | {
|
14 | }
|
15 | |
16 | return 0; |
17 | }
|
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.