LCD einfach nur ansteuern.

Gast #212968
Lesenswert?

Hallo,
Ich hab den Code vom Tutorial genommen und ihn etwas abgeändert. Ich
habe die LCD-Leitungen PB4 bis PB7 beim AT90S2313 an PB4 bis PB7
angeschlossen. RS ist bei PD5 und E bei PD6. Nur leider bekomm ich des
nicht hin, das Display zeigt lediglich die Blöcke in der Ersten zeilen,
aber das tut es ja auch wenn nur der Strom und der Kontrast am Display
ist. der AVR läuft mit 8 Mhz hab aber eigentlich alles angepasst, aber
es tut trotzdem nicht. Könnt ihr mir vielleicht helfen den Fehler zu
finden? Ich bin shcon voll am Verzweifeln.

Gruß Marc
Angehängte Dateien:
#212971
Lesenswert?

Ja alle anderen liegen auf GND und an der Verkabelung finde ich auch
keinen Fehler, mein Verdacht ist, dass das Display vielleicht kein
4-Bit-Modus unterstützt.. des am Display regt sich gaar nix :-( Ach
hier noch ein Paar Infos zum Display: 24*2 Ks0063 und Ks0066f00 hab
leider dazu noch keine datenblätter hab irgendwo gelesen dass es
HD44780 Kompatibel sein soll.. Aber am besten besorg ich mir mal die
Datenblätter, aber vielleicht hab ich ja nur einen fehler im Programm
hab leider noch keinen gefunden.

Gruß Marc Gauger
#212972
Lesenswert?

sind displays von pollin oder?
davon hab ich auch grad 5 hier liegen. wenn vllt. am samstag die
reichelt sachen kommen, kann ich ja mal gucken ob sie bei mir auf 4bit
laufen.

probier doch sonst einfach mal den 8bit modus.

standartblatt von pollin zu dem display. sagt zwar nicht viel aus aber
evtl. hilfts.

mfg
Angehängte Dateien:
Gast #212973
Lesenswert?

hallo!
hatte auch mal eben vor die ports zu aendern, was dann aber zu einem
laengeren pro wurde.-D
das "problem lag/liegt in der "powerupwait", da du den rs nicht
richtig
angepasst hast
du kannst das anpassen ist aber nicht so einfach weil du schieben und
so musst

zb die zeile
ldi temp1, 0b00101000         ;zeigt das hier mit rs ""gespielt wird

rcall lcd_command

is aber ne tolle uebung

viel spass!!!!!
vieleicht finde ich meine abaenderung ja wieder so zum vergleichen

hoffe ich erzaehle keinen mist

gruss juergen
#212975
Lesenswert?

Ich hab den ASM-Code ja schon angepasst siehe erste zwei Posts. Hab die
Pausen überall verdoppelt aber das Display scheint nicht auf die
initalisierung zu reagieren. Ich habe die Displays bei Ebay ersteigert.
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=5788490927 Und hab mir
ne kleine Adapterplatte gelötet damit ich das Display ans STK500
anschließen kann und die Platte ist halt auf den 4-Bit-Modus ausgelegt.
Naja mal sehen vielleicht löte ich später noch eine Version mit dem
8-bit-modus.

MFG Marc Gauger
Gast #212976
Lesenswert?

Hi!

soweit ich weiß, sind HD44780 komp. Display immer in den
Zeilenkombinationen zu 1x8, 1x16, 2x16, 4x8, was effektiv 1 bis 4
Zeilen a 8 Zeichen gleich kommt. Andere Zeilenzahl würde demnach für
mich bedeuten, nicht HD44780 komp., zumindest nicht 100%. Vielleicht
braucht es nur eine andere Init-Routine, wenn es nicht an den Zeiten
liegt, wie ich zuerst vermutete (4 oder 8MHz Quarz)

Gralf
#212983
Lesenswert?

Ihr hattet recht also das Display ist ein L2432 und vermutlich von
Pollin und mit der Oben Stehenden Software hat das Display auch
einwandfrei funktioniert. Nun hab ich leider kein Programm gefunden
dass den LPT-Port überwacht deshalb werde ich mich mal an den Quellcode
des Programm ran machen. Hab zwar noch nie mit Delphi programmiert aber
mal sehen ob ich dennoch was daraus lesen kann, eventuell werde ich
versuchen die nächten Tage einen neuanfang mit der LCD-Routine
versuchen werde einfach nochmal den Code vom Tutorial umschreiben.

Vielen Dank an alle.
Gruß Marc
Gast #212984
Lesenswert?

Ich habe mir das Ganze mal angesehen,
grundsätzlich sollte es so funktionieren.
Der KS0066 ist komplett kompatibel zum HD44780 und
ich bekomme beide Typen mit denselben Werten ans laufen.
Ich initialisiere mit folgenden Werten:
Warte 20ms
0x03
Warte 10ms
0x03
warte 64us
0x03
warte 2ms
0x02    ;4-Bit mode
warte 64us
0x20    ;0x20 für einzeilige Displays, 0x28 für mehrzeilige Displays.
warte 64us
0x08    ;Display off
warte 64us
0x0c    ;Display on
warte 64us
0x06    ;Set Entrymode
warte 64us
0x14    ;Cursor/Display Shift
warte 64us
Und raus...
Das Ergebnis ist Cursor aus, Cursor wird bewegt, Schreibposition wird
automatisch erhöht.

Ich habe mal das Datasheet vom KS0066 mal mit angehängt.

Gruss
Jadeclaw
Angehängte Dateien:
Gast #212985
Lesenswert?

Wobei man ein KS0066 wesentlich kürzer, wie im Datenblatt beschrieben,
initialisieren kann:

200mS warten
0x22 mit der ganz normalen Ausgabe. Dabei wird 2x 0x02 augegeben für
den 4 Bit-Mode.
50µS warten
0x28 für nochmal 4 Bit-Mode und 2 Line-Mode oder
0x20 4 Bit-Mode und 1 Line-Mode
50µS warten
0x0E Display on, Corsur on und Blink off
50µS warten
0x06 increment mode und entire shift off
50µS warten

Das wars.

Möchte echt mal wissen, was das mit den 3x 0x03 soll. Vielleicht haben
das nur die original HD44780 nötig welches ich noch nicht hatte.

MfG
Andi
#212986
Lesenswert?

@ Andi K.
würde am Anfang nicht ein 0x02 reichen anstatt eines 0x22?,also laut
datenplatt, denn so wie du es beschrieben hast, bekommt das Display ja
dreimal hintereinander ein 0010. Braucht aber doch laut Datenblatt nur
2 oder? Oder würde die 0000 dann am anfang stören? Aber ich werde das
einfach mal heute Mittag ausprobieren :-)

Sorry für meine Fragerei, aber das Verwirrt mich doch etwas.

Gruß Marc Guager
Gast #212987
Lesenswert?

Ich habe das Anfangs exakt nach Datenblatt ausprobiert, also dierekt nur
die ersten 3 Nibbles ausgegeben was nicht geklappt hat.
Bis ich darauf gekommen bin, das die Nibbles doch eigentlich immer
paarweise ausgegeben werden sollten wegen high- und low-Nibble bzw.
immer ein vollständiges Byte.
Und 3 Nibbles sind 1,5 Bytes was ja dann ein Durcheinander hervorruft.
Also einfach die ersten 2 Nibbles mit 0x2 in 1 Byte zusammengefast und
mit der normalen Ausgabefunktion (z. B. lcd_command) 0x22 ausgeben was
dann das selbe macht und als 2. Byte dann nochmal 4 Bit-Mode mit dem 2
Line-Mode zusammen ausgeben (0x28).
Entweder, es ist ein Fehler im Datenblatt das man im ersten Block 1
Nibble vergessen hat, oder ich bin auf was neues gekommen.
Zumindest klappt es prima.

MfG
Andi
Gast #212988
Lesenswert?

Vielen Dank nochmal für eure Hilfe aber das Display will trotzdem nicht
funktionieren, ich habe jetzt alles so angeschlossen wie im Tutorial,
und habe auch einen ATMEGA 8 verwendet und den Code unverändert
draufgespielt und die Freq angepasst. Jedoch ohne erfolg, habe dann
auch beide init-Routinen die hier vorgestellt wurden ausprobiert,
jedoch auch ihne Erfolg. Ich habe das Display bisher nur über den
LPT-Prt zum laufen bekommen und ich denke mal der steuert das Display
im 8-bit-Modus an. Jetzt die Frage, kann es sein, dass das Display nur
im 8-bit-Modus funktioniert? Oder, dass es einen Defekt hat, dass es
nur im 8-bit-Modus funktioniert?

mfg Marc Gauger
Gast #212990
Lesenswert?

Kontrastleitung ist an GND sowie DB0 bis DB3. Der Kontrast stimmt den
wenn ich dD am LPT anschließe funktionierts ja. Aber ich will es ja mit
einerm AVR betreiben und das im 4-bit Modus.

Kann mir vielleicht jemand der das L2432 mal zum laufen bekommen hat
den Code schicken?

Der Code vom Tutorial funktioniert nicht und ich weiß auch nicht weiter
hab das ganze jetzt schon drei Mal gelötet und an das STK500
angeschlossen und dennoch kein Erfolg gehabt.

Gruß Marc Gauger
#212992
Lesenswert?

Also meine erste Version ist bei den ersten beiden Post im Anhang und im
ersten Post steht wie ich es angeshclossen habe. mitlerweile bin ich
aber so verzweifelt, dass ich eine neue Schaltung mit dem ATMEGA 8
aufgebaut habe und den Orignalquellcode verwendet habe. Habe auch alles
so angeschlossen wie es im Tutorial beschrieben wurde nun hab ich aber
den verdacht dass das L2432 eine extra initroutine benötigt, ich wäre
also sehr froh über Code mit dem der L2432 funktioniert, wenn ich einen
funktionierenden Code habe kann ich ihn für meine Wünsche umschreiben.

Gruß Marc Gauger
Gast #212993
Lesenswert?

@Andi: Das mit den 0x03 stammt aus dem Hitachi-Datenblatt,
Optrex empfiehlt es für seine Module ebenfalls.
Und da ich damit bis jetzt jedes Display dieser Machart anbekommen
habe,
habe ich es einfach dringelassen.

Das ein 44780-kompatibles Display aber den 4-Bit Modus nicht kann,
verwundert mich dann doch, aber wer weiss, wo Pollin das Zeug herhat.
;)

Gruss
Jadeclaw.

PS: Ich habe mal mein LCD-Includefile hier mal drangehängt,
vielleicht hilft es weiter ( ebenfalls ATmega8 ).
Display muss allerdings umgelötet werden, da ich alle Pinne auf einen
Port gelegt habe - ist halt einfacher zu programmieren.
Belegung und Aufruf im Dateikopf.
Angehängte Dateien:
Gast #212995
Lesenswert?

Genau das ist es:

1 Vss GND
2 Vcc 5V
3 Vee GND oder Poti (siehe oben)
4 RS PD4 am AVR
5 RW GND
6 E PD5 am AVR
7 DB0 GND
8 DB1 GND
9 DB2 GND
10 DB3 GND
11 DB4 PD0 am AVR
12 DB5 PD1 am AVR
13 DB6 PD2 am AVR
14 DB7 PD3 am AVR

"Ich habe die LCD-Leitungen PB4 bis PB7 beim AT90S2313 an PB4 bis PB7
angeschlossen."

Die LCD-Leitungen heißen DB4 bis DB7 und gehören an PD0 bis PD3
angeschlossen.
RS gehört an PD4 und E an PD5!

Weis leider immer noch nicht, wie man hier FETT schreiben kann um es
Dir hervorzuheben.
Falls in Deinem ersten Post nur Tipp- oder Denkfehler beim schreiben
waren, vergiss den letzten Satz.

MfG
Andi
#212996
Lesenswert?

Sorry hatte mich wirklich verschriben die Datenleitungen vom LCD heißen
DB4 bis DB7. Aber sonst stimmt alles in meinem Posting. Also die
Pinbelegung ist Absicht: Ich verwende bereits PB0 bis PB3 und auch PD0
bis PB4 Daher hab ich ja nur noch PD5 und PD6 fürs LCD. Aber
mitlerweile will ich ja nur das LCD zum laufen bekommen und habe dazu
nen neuen ATMEGA8 verwendet und die Schaltung und Code ausm Tutorial
und hab bei meinem zweiten Test Projekt alles am PortB drangehängt wie
es ja auch im Tutorial gemacht wurde.

@Jadeclaw kannst du deinen Anhang nochmals posten?

Gruß Marc Gauger
Gast #212997
Lesenswert?

Oh man, dann erzähle jetzt konkret, wo Du alle LCD-Leitungen am AVR
angeschlossen hast und zeige Deinen geänderten Code (lcd_data,
lcd_command etc.).
Keine Ahnung, wie gut Du ASM kannst, aber für eine komplett andere
Pinbelegung mußt Du den Code komplett umschreiben, nicht nur ändern.
Vermute auch, das im Code ein Fehler ist.

MfG
Andi
#212998
Lesenswert?

Also habe 3. Sachen gebaut:

1.
AVR: AT90S1323 Pinbelegung:
AVr -> LCD
PB4 -> DB4
PB5 -> DB5
PB6 -> DB6
PB7 -> DB7

PD5 -> RS
PD6 -> E

Der Code ist im ersten und zweiten Posting.

2. Nach http://www.pollin.de/service/LCD/120142.zip aufgebaut und am
LPT-Port angeschlossen + Software funktioniert das LCD.
Jedoch wird das LCD im 8-bit-Modus angesprochen und nicht im
4-bit-Modus.

3.
AVR: ATMEGA8
Angeschlossen wie Im Tutorial
Code vom Tutorial

Ergebnis = NIX das Display wird nichtmal initalisiert.

Hat jemand das L2432 schonmal im 4-bit-Modus zum laufen bekommen? Ich
bekomms nut im 8-bit-Modus am LPT-Port zum laufen 8-Bit am AVr hab ich
noch nicht probiert (hab auch keinen Code dazu). Könnte mir jemand den
Code dann schicken?

Und zum Thema Assembler, nein ich kann nicht wirklich Assembler bin
noch Schüler und muss mir des irgendwie selber beibringen. Hab mir auch
schon was mit DMX geschrieben udn eine kleine Routine um zwei Taster zu
entprellen und das hat funktioniert. nur Das LCD bekomm ich nicht zum
laufen, hab schon ein anderes LCD des gleichen Typens ausprobiert geht
auch nicht.

Gruß Marc Gauger
Gast #212999
Lesenswert?

Hi,

hab' deinen Code jetzt nich angeguckt, aber guck mal, ob du das
[AVRASM]
swap
[AVRASM]
auch wirklich verschoben hast, sonst verden die Nibbles verdreht
übertragen.

Aber hast du mal probiert, DB0 - DB3 offenzulassen? Ich hatte sie bei
mir auch eine Weile an GND angeschlossen und nix ging. Dann hab' ich
sie mal offengelassen und es klappte. kA warum.

Und was ist mit der R/W-Leitung? Hast du die auch wirklich an GND und
nicht an Vcc?
Gast #213000
Lesenswert?

Überleg mal, ob Du wirklich DB4 bis DB7 an MOSI, SCK, XTAL1 und XTAL2
hängen willst, wenn Du das Dingens programmieren und mit einem externen
Takt betreiben willst.
In lcd_data setzt Du für jedes Nibble RS auf high und low, also jeweils
2 mal. 1 mal high vor dem ersten Nibble und ein mal low vor dem RET
reicht. Auch 50µS zu warten vor RS = low muss (darf?) nicht sein.

MfG
Andi
Gast #213001
Lesenswert?

Hmm, weiss nicht, warum die Forumsoft das nicht gefressen hat...

Zum Thema DB0-3 offenlassen: Der LCD-Chip hat serienmässig
pull-up-Widerstände drin, equivalent 70kOhm.
An Masse legen ist hier nicht nötig.
<Vermutung>
Denkbar wäre, dass der 4-Bit-Modus nicht angeht, wenn was an diesen
Datenleitungen dranhängt.
</Vermutung>

Gruss
Jadeclaw.
Angehängte Dateien:
#213004
Lesenswert?

Nabend

zwar nicht ganz was du erriechen willst, aber immerhin laufen die
displays bei mir im 8 bit modus. 4bit hab ich nicht ausprobiert, weil
ich mir die idee von peter dannegger mit dem hc164 schieberegister
geklaut hab :)

damit das ohne schieberegister läuft müsstest du nur die "rcall
shiftout" mit dem schreibbefehl zum port ersetzen..

is wie gesagt nur die hälfte von dem was du erreichen wolltest, aber
immerhin gehn die display mit 8bit auch am µC

mfg
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren