Bitte um Hilfe, wollte das einfache LCD Programm 1 in Proteus testen,
das auf Microcontroller.net sehr gut beschrieben ist. Ich arbeite mit
dem AVR Studio und mit dem Arduino Uno. Habe das LCD richtig
angeschlossen verstehe aber nicht wieso es nichts anzeigt.
Hier der Source Code:
1
//
2
// Anpassungen im makefile:
3
// ATMega8 => MCU=atmega8 im makefile einstellen
4
// lcd-routines.c in SRC = ... Zeile anhängen
5
//
6
#include<avr/io.h>
7
#include"lcd-routines.h"
8
9
intmain(void)
10
{
11
// Initialisierung des LCD
12
// Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken
13
// verschwunden sein
14
lcd_init();
15
16
// Text in einzelnen Zeichen ausgeben
17
lcd_data('T');
18
lcd_data('e');
19
lcd_data('s');
20
lcd_data('t');
21
22
// Die Ausgabemarke in die 2te Zeile setzen
23
lcd_setcursor(0,2);
24
25
// erneut Text ausgeben, aber diesmal komfortabler als String
Es gibt üblicherweise 2 Problemkreise
der eine (häufigere) ist ein Timingproblem. LCD können zwar beliebig
langsam angesteuert werden, aber nicht beliebig schnell.
der andere ist ein Fehler in der Verdrahtung.
Ist mir auch schon passiert, dass ich selbst nach der 3.ten Kontrolle
die Spiegelung der Datenleitungen nicht gesehen habe.
Martin Programmierer schrieb:> Bitte um kurze Hilfe, das Programm ist ja nicht schwer :)
und ist auch das einzige am ganzen Aufbau, welches definitiv nicht das
Problem verursacht :-)
Wenn du sagst, du siehst nichts. WIe ist das gemeint? Ist am LCD
überhaupt nichts zu sehen oder siehst du eine (oder zwei) Reihen
schwarzer Balken?
Karl H. schrieb:> Wenn du sagst, du siehst nichts. WIe ist das gemeint? Ist am LCD> überhaupt nichts zu sehen oder siehst du eine (oder zwei) Reihen> schwarzer Balken?
Ich habe das Bild oben angehängt, man sieht das man nichts sieht :))
Karl H. schrieb:> Von einer Simulation, auf der dein Programm kein Ergebnis aufs LCD> zaubert oder von realer Hardware.
Von der Simulation in Proteus !
Lg
Martin Programmierer schrieb:> Karl H. schrieb:>> Von einer Simulation, auf der dein Programm kein Ergebnis aufs LCD>> zaubert oder von realer Hardware.>> Von der Simulation in Proteus !
Gut zu wissen.
Da ich keine Ahnung habe, wie detailliert Proteus das Verhalten eines
LCD nachbildet, insbesondere was Timing-Sachen angeht, bin ich raus.
Kannst du denn dein Programm nicht in Einzelschritten durchsteppen. Es
ist ja bekannt, welche Bits an welchen Leitungen in welcher Abfolge
aufscheinen müssen. Das könnte man kontrollieren.
Das kann ich leider nicht, weil ich nicht weis welche Bits wo sein
müssen da ich noch nicht lang in der Branche tätig bin :S
Von dem her trotzdem danke!
Mfg
Martin Programmierer schrieb:> Das kann ich leider nicht, weil ich nicht weis welche Bits wo sein
Dann schau in das File "lcd-routines.c" hinein.
Dort sind alle Funktionen geschrieben.
Die erste Funktion die aufgerufen wird, ist die Funktion lcd_init.
Deren Source Code findet sich da drinn.
> müssen da ich noch nicht lang in der Branche tätig bin :S
Du hast aber schon kontrolliert, ob in lcd-routines.h die Pin und Port
Belegung richtig eingetragen ist?
Karl H. schrieb:> Du hast aber schon kontrolliert, ob in lcd-routines.h die Pin und Port> Belegung richtig eingetragen ist?
JA das hab ich schon gemacht, von dem her frag ich mich die ganze Zeit
was falsch ist ...
Martin Programmierer schrieb:> Karl H. schrieb:>> Du hast aber schon kontrolliert, ob in lcd-routines.h die Pin und Port>> Belegung richtig eingetragen ist?>> JA das hab ich schon gemacht, von dem her frag ich mich die ganze Zeit> was falsch ist ...
Steppe das Programm durch.
Wenn die Simulatoin gut ist, dann muss ein derartiges LCD nach dem
'Anlegen' der Versorgungsspannung erst mal eine Reihe schwarzer Balken
anzeigen. DIe Balken verschwinden (beim echten LCD), wenn das LCD
korrekt initiaisiert ist.
NB: die werden doch hoffentlich nicht auch noch den Kontrast simuliert
haben :-)
Martin Programmierer schrieb:> Ich versteh das nicht, was kann bei einem solchen Programm schon groß> schief gehen :(
Eine Menge.
90% der relevanten Teile sitzen ja nicht in dem Code, den du gepostest
hat.
Oder auf gut deutsch: du starrst momentan auf den falschen Baum.
Ich schätze mal so eine halbe Zillion Dinge können bei so einem
einfachen Programm schief gehen.
Aber viel wichtiger als diese Zahl, ist, dass Du eine äussert belastbare
Strategie zum Umgang mit Frustration entwickelst, wenn Du "neu in der
Branche" bist.
Klar, es gibt so Überflieger wie <zensiert>, aber die meisten von uns
haben mit 30 schon mehr geflucht als jeder Pfarrer am Ende seines
Lebens, mehr Kaffee getrunken, als in Brasilien je angepflanzt wurde und
mehr Pizzas genascht, während wir auf das Makefile warteten, als es
Atome im Universum gibt.
Nicht umsonst schrieb mal jemand, dass Genie, aus Glück, Talent und am
meisten aus Hartnäckigkeit besteht.
Also, hänge Dein Taschentuch zum trocknen auf und beiss Dich durch.
Hmm.
Eine Idee hab ich noch.
Du hast ja einen Arduino Uno.
Nimm mal ein Testprogramm aus der Arduino Szene her und lass das mal in
der Simulation laufen. (Gut wäre natürlich erst mal auf einer realen
Hardware zu kontrollieren, ob das Programm funktioniert). Wenn das
ebenfalls nicht funktioniert, dann wird es wohl irgendeine Einstellung
im Simulator sein.
Martin Programmierer schrieb:> Ich arbeite mit dem AVR Studio und mit dem Arduino Uno.
Dann spiel doch erstmal aus der Arduino LiquidCrystal Library das Hello
World programm auf deinen Arduino Uno, nachdem du das LCD wie im
Beispiel-Code angegeben verdrahtet hast.
Dann sehen wir weiter.
Martin Programmierer schrieb:> Das LCD in der Simulation funktioniert ja bei anderen Programmen auch :S
Der Punkt ist, herauszufinden, was zwischen diesen Programmen und dem
oben vergleichbar ist, und was nicht.
Es gibt z.B. nicht nur eine einzige LCD-Bibliothek. Die vom Arduino ist
anders als die oben, die Du vermutlich hier aus dem Forum hast.
Was mich dahin führt, Dich zu bitten, mehr Details zu beschreiben.
Zu Anfang: Welches Programm genau funktioniert mit der Simulation?
(Link)
Schön, das du mit Information so nach und nach rausrückst.
Von hier aus kann keiner auf deinen Monitor schauen und niemand weiss,
was du bisher gemacht hast.
Langsam hab ich keine Lust mehr zum Rätselraten.
Welchen Entwicklungsumgebung hast du benutzt?
Hast du ein Makefile? Wenn ja, dann poste es.
Poste die lcd-routines.h
Was macht die Simualation im Einzelschrittbetrieb? hast du kontrolliert,
ob zb die Init Sequenz damit anfängt, dass an den Datenpins eine 0x3
auftaucht und danach Enable getoggelt wird?
Karl H. schrieb:> Es gibt üblicherweise 2 Problemkreise..
ach, das wäre schön. Aber üblicherweise steckt das tatsächliche Problem
genau dort, wo man es nie und nimmer jemals vermutet hätte. In diesem
Falle vielleicht im Kontrastregler, der einfach auf zu flau eingestellt
ist.
W.S.
W.S. schrieb:> Karl H. schrieb:>> Es gibt üblicherweise 2 Problemkreise..>> ach, das wäre schön. Aber üblicherweise steckt das tatsächliche Problem> genau dort, wo man es nie und nimmer jemals vermutet hätte. In diesem> Falle vielleicht im Kontrastregler, der einfach auf zu flau eingestellt> ist.
Ja, hatte ich mir auch überlegt, bis ich rausgefunden habe, dass wir von
einer Simulation reden.
Oder denkst du, die würden die Kontrastspannung mit simulieren? Das wär
fies.
(Ist nicht sarkastisch gemeint. Ich weiss es wirklich nicht)
W.S. schrieb:> ach, das wäre schön. Aber üblicherweise steckt das tatsächliche Problem> genau dort, wo man es nie und nimmer jemals vermutet hätte. In diesem> Falle vielleicht im Kontrastregler, der einfach auf zu flau eingestellt> ist.>> W.S.
Wie kann ich den Kontrastregler umstellen ?
Martin Programmierer schrieb:> W.S. schrieb:>> ach, das wäre schön. Aber üblicherweise steckt das tatsächliche Problem>> genau dort, wo man es nie und nimmer jemals vermutet hätte. In diesem>> Falle vielleicht im Kontrastregler, der einfach auf zu flau eingestellt>> ist.>>>> W.S.>> Wie kann ich den Kontrastregler umstellen ?
Am Poti.
Bei einem realen LCD bewegt sich die Kontrastspannung meistens in der
Gegen von 0V
Martin Programmierer schrieb:> Wie kann ich den Kontrastregler umstellen ?
Herrjemine, wäre das was Konkretes, also zum Anfassen, dann mit nem
Schraubenzieher. Aber wenn du schon unbedingt eine Simulation machen
willst, die unsereiner garantiert NICHT kennt, dann kann ich nur
vermuten, daß es evtl. per Rechtsklick und Lokalmenü geht, falls dort
sowas überhaupt Mode ist.
Im Klartext: Da bist du auf dich selbst gestellt.
W.S.