Hallo! Ich habe einen Atmega8 und an diesen ein Displaytech 162 Display (16x2 Zeilen) angeschlossen (laut Datenblatt besitzt dieses einen KS0070B-kompatiblen Controller). Das ganze hängt an einem 9V-Netzgerät und kann mittels der parallelen Schnittstelle programmiert werden. Ich habe mich beim Programmieren an das Datenblatt von Samsung für den Controller gehalten, jedoch verhält sich das Display seltsam. Ich kann die zweite Zeile nur dann ansteuern, wenn der Schaltkreis einerseits am Netzgerät hängt, ich den parallelen Stecker einstecke und diesen dann wieder herausziehe. Sonst wird nur die erste Zeile verwendet. Den Code (für avr-gcc) habe ich angehängt. Ich bin sonst ratlos. Danke für Hilfe!
SUB-D 25 Es handelt sich um das MyAVR-Board, der Schaltplan befindet sich hier: http://www.myavr.net/download/bauanleitung_myavr-board_14.pdf
Hallo Benedikt, es kann durchaus sein das das normal ist, manche display können nach dem powerON zyklus nur einmal initialisiert werden umd es dann neu zu initialisieren muss die spannung vom display und das ganze einen neuen reset bekommen... das könnte ne ursache sein... zum anderen könnte es sein das die initialisierungssequenz des displays zu unzuverlässig... wenn du mit warteschleifen arbeitest fürs timing dann verlängere mal die wartezeit nach PowerON des displays gruß alex
Hallo, Alex Ich habe die Wartezeit auf 100ms erhöht (Datenblatt fordert 30ms), jedoch hat das nichts geholfen.
hallo, schiebe doch mal dein proramm mit lcd_init IN die schleife bei mir hat es so geklappt.
habe gerade im forum von myavr beispielcode gesehen... hast du den mal verglichen?
Du sendest für den 4 Bit-Mode nur 1 mal das Bit 5 (1 da Nibble). Versuche mal das in einem Byte mit 0x22 (0b00100010) 2 mal auszugeben. Z. B. mit #define LCD_4BIT (0x22) MfG Andi
Hallo, Mit dem Beispielcode habe ichs schon verglichen. Wenn ich mich nicht vollkommen täusche, macht es mein Code genauso. (Vergleichscode aus dem Forum: http://www.thomas-postler.de/Download/AVR/lcd.inc) Das 4-Bit-Modus-Bit zweimal zu senden hat leider auch nicht gefruchtet. Danke trotzdem für die Hilfe, Henrik
Seltsam ;-) Hatte Anfangs die Init-Routine hier aus dem TUT verwendet. Da diese mir zu unverständlich war, bin ich nach dem Datenblatt des KS0066U gegangen was nicht auf Anhieb funktioniert hatte (ähnlich wie bei Dir, ging nicht nach dem Flashen, erst nach aus-/einschalten). Bin am Ende darauf gekommen, den 4 Bit Mode über lcd_command in 2 Nibbles 2 mal zu senden. Hier ein Auszug der funktionierenden Init: ldi a,0b100010 ;4-Bit Mode (2 mal) rcall lcd_command ldi a,0b101000 ;4-Bit Mode, 2-line mode und Font 5x8 rcall lcd_command_W50uS MfG Andi
Hallo, Andi! Dein Tipp hat mich auf die richtige Spur gebracht! Den Code zwei mal zu senden hat zwar nicht geklappt, aber mit
1 | lcd_command(0x22); |
2 | lcd_command(0x22); |
3 | |
4 | lcd_command(LCD_FUNSET | LCD_FUNSET_2LINES); |
klappts nun endlich :D
In meinem Beispiel wird der 4 Bit Mode eigentlich 3 mal gesendet, 2 mal im ersten lcd_command und das dritte mal zusammengefasst mit dem 2 Line Mode und Font 5x8. Geht es bei Dir auch so?: lcd_command(0x22); lcd_command(LCD_FUNSET | 0x20 | LCD_FUNSET_2LINES); Das 0x20 ist quasi der dritte 2 Line Mode. MfG Andi
Nein, damit gehts nicht. Nur mittels dem viermaligen Senden über
1 | lcd_command(0x22); |
2 | lcd_command(0x22); |
gehts.
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.