Forum: Mikrocontroller und Digitale Elektronik LCD über 74HC595 ansteuern


von Frank L. (franklink)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich benötige mal wieder ein wenig Hilfe.

Mit den Routinen im Anhang versuche ich über ein 74HC595 ein LCD
anzusteuern.
Ich habe zu diesem Zweck die LCD Routinen aus dem Tutorial umgebaut.

Grundsätzlich scheinen die Routinen zu funktionieren. Jedoch benötige
ich mehrere Resets bevor das LCD den Text korrekt anzeigt.

Ich vermute deshalb ein Problem im Timing. Leider habe ich keine Idee
mehr wo ich noch ansetzen könnte.

Es wäre sehr nett, wenn ihr mit dem ein oder anderen Tipp aushelfen
könntet.

Danke und Gruß
Frank

von Jochen M. (taschenbuch)


Lesenswert?

Frank,

1) Prüfen ob alle Flanken (CE/WR...) die richtige Richtung haben.
2) Einfach mal das Timing EXTREM verlangsamen und sehen ob es dann 
klappt.
3) Falls ja: an das richtige Timing herantasten, mir Sicherheitsreserve.

Jochen Müller

von Frank L. (franklink)


Lesenswert?

Hallo Jochen,
habe ich schon alles gemacht, hat keine Veränderung ergeben.

Entweder, ist die Handhabung von RS und E falsch, was meine Vermutung 
ist, oder ich übergebe die Daten schlicht weg falsch.

Beides ist möglich, aber ich sitze schon den ganzen Tag an den Routinen 
und irgendwann wird man Betriebsblind.

Gruß
Frank

von Ekschperde (Gast)


Lesenswert?

Der 595 ist beim Timing in der Ansteuerung völlig unkritisch.
So fixe Controller gibts gar nicht.

Die üblichen Verdächtigen wäre also:

_delay_us();
_delay_ms();


Schon mal mit einem Oszi getestet das die richtig gehen?

von Frank L. (franklink)


Lesenswert?

Hallo Ekschperde,
ich habe an E und RS Dioden parallel laufen, ich kann also sehen, dass 
die Ports schalten, ich habe eben nochmals das Timing extrem verlängert, 
leider bekomme ich in 90% aller Neustarts des Controllers wirres Zeug 
auf dem Display zusehen.

Gruß
Frank

von Peter D. (peda)


Lesenswert?

Frank Link wrote:
> leider bekomme ich in 90% aller Neustarts des Controllers wirres Zeug
> auf dem Display zusehen.

Ja, Deine Initialisierung ist für die Katz.

Schau Dir mal diesen Code an:

http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip

In der Initialisierung darfst Du noch keine Kommandos senden, sondern 
nur je ein Nibble.
Du bist ja noch nicht im 4-Bit Modus.


Das mit der echten Division ist sehr code- und zeitfressend.
Machs besser mit byte_nr = x>>3; und bit_nr = x&7;


Peter

von Frank L. (franklink)


Lesenswert?

Hallo zusammen,
vielen Dank für die ganzen Tipps, letztlich war es Dein Tipp Peter 
(vielen Dank) und mein Steckboard dessen Alter wohl vor Methusalem 
liegt.

Durch Kontaktprobleme beim senkrechten Stellen kam es wohl zu unsauberen 
Signalen.

Jetzt klappts.

@Peter
Ich habe Die Routinen aus dem Attachment so übernommen und angepasst.
Das Attachment stammt das von Dir? Da ich die Routine auch in die 
Codesammlung stellen möchte, möchte ich natürlich auch den korrekten 
Ursprungsautor benennen.

Dabei habe ich wiedermal feststellen müssen, dass ich viel zu sehr in 
Delphi verhaftet bin und für C und Mikrokontroller anscheinend viel zu 
kompliziert denke.

Gruß
Frank

von Peter D. (peda)


Lesenswert?

Frank Link wrote:

> Das Attachment stammt das von Dir?

Ja.


> Dabei habe ich wiedermal feststellen müssen, dass ich viel zu sehr in
> Delphi verhaftet bin und für C und Mikrokontroller anscheinend viel zu
> kompliziert denke.

Bei mir isses umgekehrt, ich habe keine Ahnung von PC-Programmierung 
(außer kleine DOS-Sachen <50kB)). Ich rätsele da immer wieder wie man 
hunderte Megabytes verbraten kann. Aktuelle Programme werden nur noch 
auf DVD geliefert (CD mit 800MB reicht nicht mehr).
Ich hab auch den Verdacht, PC-Programmierer denken viel zu kompliziert 
oder geben sich keine Mühe.

Aufm MC reichen wenige kB Flash und 128 Byte SRAM dicke aus.


Peter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Peter: Du vergleichst hier Äpfel mit Birnen. Abgesehen von eventuell 
tatsächlich vermurkstem Code stecken im PC-Programm noch viele, viele 
Bytes, die für die grafischen Oberfläche und die Bedienung durch den 
Anwender bestimmt sind. Außerdem mußt Du viele Treiberinterfaces 
mitliefern. Das hast Du im µC nicht.

von Björn C. (bjoernc) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo, ich habe zur Zeit das selbe Problem mit meinem Display, die 
ebenfalls über zwei 595er angesteuert werden, daher hole ich einfach mal 
den Beitrag aus der Versenkung, da ich zZt. nicht weiter komme.
Das Display soll im 8 Bit Modus laufen. Das große Problem das ich zur 
Zeit habe ist ebenfalls, dass das Display erst nach mehreren Anläufen 
erst funktioniert ansonsten sehe ich auf Zeile 0 und 2 einfach nur 
schwarze Balken... Ab und zu funktioniert dieses aber halt nich 
zuverlässig.
Daher ist meine Frage ob jemand vielleicht weiß an was das liegen 
könnte.

mfG Björn

PS: auch wenn man es nicht sieht mit dem delay, die F_CPU sowie die 
dazugehörige lib ist vorhanden und included.

von Björn C. (bjoernc) Benutzerseite


Lesenswert?

So problem meiner Seits gelöst, sofern jemand ähnliche Probleme hat:
ich habe an RS, RW, EN jeweils 10k Ohm pull down Widerstände angelötet.
Das problem war nicht der Algorithmus sondern einfach, das die 74595 zu 
Anfang also beim start des uC auf Z lagen daher kam es dann zu den nicht 
reproduzierbaren Fehlern.

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.