Forum: Mikrocontroller und Digitale Elektronik LCD "AV1624" (2x16 Zeichen, KS0066 komp.) zeigt nur die ersten 8 Zeichen an


von Lennert W. (lvanderwall)


Angehängte Dateien:

Lesenswert?

Moin allerseits!

Bevor ich gelyncht werde, weil ich noch einen Beitrag zu diesem 
(leidigen) Thema schreibe: Die anderen Post waren zu meinem Problem 
leider keine Lösung.

Ich habe mir von Anag Vision das
 gekauft und über einen ATmega16 angesteuert. Nach Datenblatt des KS0066 
habe ich die Befehle selbst in C geschrieben, dabei auch nicht mit 
'delays' gegeizt :), das LCD 2-zeilig im 4Bit-Modus initialisiert und 
(leider nur fast) erfolgreich getestet:

Das LCD zeigt nämlich nur die ersten 8 Zeichen jeder Zeile an :(
Für Zeile1 werden nur die Zeichen an der Addresse 0x00 - 0x07 des DDRAM 
angezeigt, für Zeile2 die Zeichen an Addresse 0x40 - 0x47 (hier noch 
kein Shift!!).

Mit diesen Zeichen funktionieren die Befehle wie Schreiben ins DDRAM, 
Shift, Shift bei Eingabe, Inkrement&Dekrement bei Eingabe/, 
/Einstellen&Bewegen des Cursors/ etc. einwandfrei, auch die Addressen 
stimmen (habe ich mir über eine Hilfsplatine und den Read_busy-Befehl 
anzeigen lassen).

Die Initialisierung als 2-zeiliges LCD sollte funktioniert haben: Der 
Kontrast wird für beide Zeilen gleichzeitig geändert; im 1-zeiligen 
Modus wird der Kontrast zuerst für die erste, dann für die zweite Zeile 
eingestellt, übrigens für alle Zeichen beider Zeilen. Außerdem 
funktioniert (wie oben beschrieben) die zweite Zeile im Prinzip korrekt.

Nun zu meinem Lösungsansatz:

Ich habe im Datenblatt des KS0066 gefunden, dass er nur 2x8 Zeichen 
direkt verwalten kann?!? Also funktioniert wohl die Verbindung zum 
zweiten (vorhandenen) Kontroller nicht, leider steht nicht drauf wie er 
heißt.

Allerdings befinden sich auf der Rückseite der LCD-Platine noch einige 
nicht verbundene Kontakte, über die nix im Datenblatt stand; bei einigen 
habe ich die Funktionen mit trial/error finden können:

- Mit JF kann man das Gehäuse auf GND legen
- Mit J15/J16 kann man PIN 15,16 des LCD mit A, K der 
Hintergrundbeleuchtung verbinden, allerdings gibt es auch die 
Möglichkeit PIN 1,2 des LCD mit A, K zu verbinden
- (vielleicht kann mir das jemand bestätigen, der das gleiche LCD 
besitzt)
[/list]
Nun gibt es noch einige weitere Kontaktstellen, die noch frei sind und 
die vielleicht die Verbindung zum zweiten Kontroller herstellen. Also 
die Frage:

Weiß jemand, ob die Idee überhaupt richtig ist?

Wenn ja: Welche Kontakte muss ich schließen, um den zweiten Kontroller 
einzubinden?

Oder ist das ganze ein Indiz dafür, dass ich das LCD in der Testphase 
teilweise geschrotet habe?

Das war ein langer Post, aber in den bisherigen gab es immer viele 
Unklarheiten und Fehlerquellen, also habe ich lieber mehr Infos 
einfließen lassen als zu wenig :D

von Düsendieb (Gast)


Lesenswert?

Da Du mehrere Unbekannte im Spiel hast, eliminierte zuerst alle und dann 
Schritt für Schritt die Porobleme lösen.


1.) Anschluss gem LCD Libary hier im Forum
2.) LCD Software hier aus dem Forum nehmen
3.) Ausprobieren und sich freuen wenn es klappt.

eine Nacht schlafen.

4.) Eigene Software nehmen
5.) evtl eigene Anschlussbelegung testen
6.) Hintergrungbeleuchtung testen.


Axel

von spess53 (Gast)


Lesenswert?

Hi

>Das LCD zeigt nämlich nur die ersten 8 Zeichen jeder Zeile an :(
>Für Zeile1 werden nur die Zeichen an der Addresse 0x00 - 0x07 des DDRAM
>angezeigt, für Zeile2 die Zeichen an Addresse 0x40 - 0x47 (hier noch
>kein Shift!!).

Du schreibst zwar, das du das Display 2-zeilig initialisiert hast, aber 
dein Fehlerbild deutet auf eine einzeilige Initialisierung hin.

MfG Spess

von Lennert W. (lvanderwall)


Lesenswert?

@Düsendieb
Ich habs mal mit den lcd - routines. c aus dem Forum versucht,
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
in der Header-Datei PINs und PORTs und F_CPU angepasst... das Ergebnis 
ist dasselbe wie mit meinem Code :(

Alle Befehle funktionieren für beide Zeilen, aber eben nur in der linken 
Hälfte des LCD.

@spess52
Ich hab in der lcd - routines. c die
1
init_lcd()
 einmal versuchsweise für ein 1-zeiliges LCD geändert. Anschließend 
konnte man den Kontrast zuerst für die obere Zeile hochregeln und, 
nachdem der Kontrast maximal war, auch für die untere Zeile. Auf der 
ersten Hälfte der ersten Zeile konnte man ganz normal Zeichen ausgeben, 
die zweite Zeile ließ sich überhaupt nicht ansprechen.

Ist das LCD aber für 2 Zeilen initialisiert, kann man den Kontrast für 
beide Zeilen gleichzeitig regeln, und die zweite Zeile lässt sich 
(zumindest in der linken Hälfte) ebenfalls ansprechen. Das scheint mir 
ein sicherer Hinweis dafür zu sein, dass die Init nicht vollkommen 
schief gegangen sein kann...

Ich werde morgen mal ein baugleiches LCD von einem Bekannten anklemmen, 
vll. liegt es wirklich an meinem Display...

Danke für alle Hinweise, jetzt reichts mir erstmal (für heute ;D )

von Lennert W. (lvanderwall)


Lesenswert?

Ich hab heute das Display meines Bekannten angeklemmt: Es läuft 
einwandfrei mit meinem Code, mit beiden Zeilen und allen 16 Zeichen pro 
Zeile!!!

Nebenbei: Die offenen Kontakte zwischen PINs 15, 16 und A, K waren bei 
seinem Display schon mit SMD-0_Ohm-Bausteinen besetzt und mussten nicht 
erst selbst verbunden werden. Wer weiß, was bei meinem Display noch so 
fehlt :(

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.