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
moin moin sind die anderen datenleitungen am display mit gnd verbunden? manche displays mögen das, anderen isses z.t. egal. mfg
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
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
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
lass mal den AVR mit 4 Mhz rennen, oder verlängere die pausen, da die lcd-routines.asm im Tutorial für 4 Mhz ausgelegt ist. Mfg Jochen.
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
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
Also ich hab des Board mal auf 37,6 khz runtergefahren dann hatte das Display mehr als genug zeit sich drauf einzustellen aber er macht nix. Also irgendwas scheint an der Routine falsch zu sein aber ich sehe darin keine Fehler.. MFG Marc Gauger
Ich hab jetzt den Verkäufer auf die Software angesprochen mit der er das Display zum laufen bekommen hat, damit ich die Routine daraus lesen kann. Mal sehen ob er mir was schickt. Gruß Marc
moin ich könnte wetten, dass das displays von pollin sind. http://www.pollin.de/service/LCD/120142.zip da gibts anschlusspläne und auch n testprogramm für den parallelport. mfg
besser waers asm zu verstehen, als mit dem yuppie zu streiten .-D hab dir doch gezeigt wo das problem ist good luck
Ich hab den Quellcode doch angepasst auch des powerupwait. Versteh nicht ganz was ich daran noch ändern soll. MFG Marc Gauger
Also, die Zeiten sind es wohl nicht. Bleiben nur noch die Steuercodes. Ohne passendes Datenblatt kann man nur raten welche Sequenz und welche Befehle nötig sind. Gralf
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
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
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
@ 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
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
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
An welchen Pin des Mega8 hast Du welche LCD-Leitung angesteuert? Sind DB0 bis DB4 and GND? Wie sieht es mit der Kontrastspannung aus? MfG Andi
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
Was ist nun mit DB4 bis DB7, RS und Enable? Wo ist was am AVR angeschlossen? Wie sieht Deine modifizierte Software aus? MfG Andi
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
@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.
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
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
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
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
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?
Ü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
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.
.INC mag er wohl nicht, probieren wir es mal mit .TXT Hinterher in LCD.inc umbenennen und ins Includeverzeichnis werfen. Gruss Jadeclaw.
Ich hab DB0 bis DB3 jetzt offen gelassen aber auch ohne Erflog (mit dem Code ausm Tutorial). Werde mir später mal die inc genauers anschaun. Gruß Marc Gauger
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
Vielen Dank Genau sowas hab ich mir auch überlegt einfach ein Schieberegister zu verwenden. :-) Werd mir den Code mal anschaun :-) Gruß Marc Gauger
@ Thorsten Fritzke (Thorsten) Dein Code hat bei mir wunderbar funktioniert, hab die Schaltung nun mit einem Schieberegister aufgebaut, werde jetzt testen ob ich nicht doch den 4-bit-Modus zum laufen bekomme. @All Nochmals vielen Dank für alles :-) Gruß Marc
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.