Hilfe zu leichtem LCD Programm

Gast #4291776
Lesenswert?

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
int main(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
26
  lcd_string("Hello World!");
27
 
28
  while(1)
29
  {
30
  }
31
 
32
  return 0;
33
}








Danke im Vorraus :)
#4291797
Lesenswert?

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.
#4291827
Lesenswert?

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.
#4291836
Lesenswert?

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?
#4291842
Lesenswert?

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 :-)
Gast #4291856
Lesenswert?

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.
#4291860
Lesenswert?

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.
Gast #4291876
Lesenswert?

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)
#4291879
Lesenswert?

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?
Gast #4291882
Lesenswert?

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.
#4291891
Lesenswert?

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)
Gast #4291892
Lesenswert?

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 ?
#4291893
Lesenswert?

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
Gast #4291905
Lesenswert?

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.

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