Forum: Mikrocontroller und Digitale Elektronik LCD Display mit Atmega 8


von Lars H. (hermi)


Lesenswert?

Hallo Leute!
Ich beschäftige mich seit etwa vier Monaten mit Mikrocontrollern. Dank
der "AVR-Mikrocontroller-Lehrbuches" von Roland Walter habe ich bis
jetzt ganz gute Ergebnisse gehabt. Jetzt möchtwe ich ein LCD-Display
(8x2) mit einem Atmega8 ansteuern. Ich versuche seit einigen Tagen das
Ding in gang zu kriegen aber es will einfach nichts anzeigen. Lediglich
in der oberen Zeile sind 8 schwarze Felder zu sehen (alle Matrixpunkte
an). Mindestens 5 mal hab ich die Hardware geprüft und für die Software
im Internet, Büchern und der Bascom Hilfe gesucht- ohne Erfolg.
Vielleicht kann mir jemand helfen, ich weiss einfach nicht weiter.

Hier eins meiner Programme:
- Belegung der Anschlüsse stehen im Programmkopf

'Ansteuerung einer 8x2 Lcd Anzeige
'-------------------------------------------------------------

' Anschlüsse Prozessor:
'  1 RESET                          28 C5 - frei
'  2 D0 - LCD RS                    27 C4 - frei
'  3 D1 - LCD E                     26 C3 - frei
'  4 D2 - frei                      25 C2 - frei
'  5 D3 - frei                      24 C1 - frei
'  6 D4 - LCD D4                    23 C0 - frei
'  7 +5V                            22 GND analog
'  8 GND                            21 Aref
'  9 XTAL                           20 AVCC
' 10 XTAL                           19 B5 - SCK
' 11 D5 - LCD D5                    18 B4 - MISO
' 12 D6 - LCD D6                    17 B3 - MOSI
' 13 D7 - LCD D7                    16 B2 - frei
' 14 B0 - frei                      15 B1 - frei
'-------------------------------------------------------------
'R/W und Eingänge D0- D3 der LCD nach Masse
'-------------------------------------------------------------

$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600
 '--------------------------------------------------------------

Ddrd = &B11110011                          'Pd2 Und Pd3 Eingang ,
                                           'Alle Anderen Ausgang

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 ,
Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0

Dim A As Byte
Config Lcd = 16 * 2                        'LCD Display konfigurieren

Cls                                        'Display löschen
Lcd "Hello world."                         'Text auf oberer Zeile
Wait 1
Lowerline                                  'zweite Zeile anwählen
Wait 1
Lcd "Shift this."                          'Text auf zweiter Zeile
Wait 1

von Frank (Gast)


Lesenswert?

ich vermisse eine Initialisierung des LCD nach der Definition. Nun kenn
ich zwar BASCOM kaum aber unter FastAVR gibts dafür nen Befehl. Ohne
Initialisierung tritt das genannte Verhalten auf.

bye

Frank

von Danny (Gast)


Lesenswert?

Sollte mit BASCOM (sieht ganz danach aus) eigentlich funktionieren.
Deine schwarzen Felder hören sich nach einem Initialisierungsfehler an.
Nimm mal das Beispiel aus der BASCOM-Hilfe und kopier das wie es ist in
dein Sourcefile. Dann unter "Options--->Compiler--->Chip" das
Register "LCD" deine Pins zuordnen. Dann sollte es eigentlich
hinhauen.

von Danny (Gast)


Lesenswert?

Nachtrag:
Es gibt ein speziellen Typ (16*1a) in BASCOM für 8*2 LCD.

von Frank (Gast)


Lesenswert?

Ich hab mal schnell nachgesehen, BASCOM kenn den Befehl InitLCD auch.
Den einfach nach der Displaydefinition mal einfügen.

bye

Frank

von Lars H. (hermi)


Lesenswert?

Danke für Eure Tipps. Habe beides gleich ausprobiert, aber jetzt ist gar
nichts mehr zu sehen. Muss nochmal die Betriebsspannung messen. Trotzdem
wenn Euch nochwas einfällt ich bin dankbar für jeden Hinweis.

von Paul Baumann (Gast)


Lesenswert?

Nimm mal D0 bis D3 von der Masse weg. Sonst ist es soweit ich sehe i.O.

MfG Paul

von Frank (Gast)


Lesenswert?

Du hast doch hoffentlich die Kontrastspannung nicht vergessen?

bye

Frank

von thkais (Gast)


Lesenswert?

@Paul: Das ist überhaupt nicht zu empfehlen. Bei Benutzung der 4-Bit
Schnittstelle MÜSSEN D0-D3 auf Masse sein, da sie sonst floaten und die
Initialisierung dadurch schiefgehen kann. Nach der Initialisierung als
4-Bit Schnittstelle wäre es egal.

von Lars H. (hermi)


Lesenswert?

Jetzt hab ich erstmal wieder die 8 schwarzen Kästchen drauf. Das kann
nicht mit rechten Dingen zugehen. Zur Kontrolle ob der yC überhaupt
arbeitet hab ich eone LED blinken lassen- die funktioniert.  Ich
versuch jetzt mal ein anderes Display. Hab noch eins 16x2 vom Schrott-
funktioniert aber noch auf der alten Platine.

von Marco (Gast)


Lesenswert?

Die schwarzen Kästen in der ersten Zeile sind normal und müssen zu sehen
sein wenn die Versorgungsspannung angelegt wird!
D0-D3 und R/W müssen auf Masse leigen!
LCDInit muss nicht geschrieben werden in Bascom! Das erledigt Bascom
alleine, sobald ein LCD-Befehl im Programm auftaucht.

Zum LCD, was für einen Kontroller hat es?

von Christian Nöding (Gast)


Lesenswert?

Hi!

Du musst unbedingt eine bestimmte Zeit nach der ersten Initialisierung
warten... nutze das Kommando "wait 100" oder "waitms 100" (bin mir
über die syntax grade nicht klar) nach "Config Lcd 16*2", dann sollte
es laufen


ich hatte das gleiche Problem. es liegt einfach daran, dass das LCD
eine gewisse Zeit zum Initialisieren braucht. Wenn du nun zu früh Daten
an das LCD schickst, gibts Probleme.


viel Glück,
Christian

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe das "Config Lcdpin =..." nicht benutzt.

Wenn ich richtig liege, musst Du ihm sagen ob mit 4 oder 8
Datenleitungen verwendet werden.Auch, was für ein Displaytyp 1*8 oder
2*8 ... Zeichen.

Ich habe es im Bascom selbst eingestellt.

Siehe Anhang. Grüsse aus Hamburg de Michael.

von Lars H. (hermi)


Lesenswert?

Die einstellungen in Bascom habe ich auch alle gemacht. Hab auch nochmal
zum 765 mal die verbindung vom Controller zum Display geprüft. Auf der
Rüchseite des Displays ist zu lesen: Powertip PC-802A und ein
Aufkleber: PC0802LRS-ASO-B. Alles Andere führt der yC ganz brav aus
zB.: Pulsbreitenmodulation, Strombegrenzung über Messwiderstand am
analogen Eingang u.s.w. Langsam zweifle ich an meinem Geisteszustand.
Naja erstmal allen einen guten Rutsch und wir lesen im neuen Jahr
wieder voneinander.

von Michael (Gast)


Lesenswert?

Wie sieht es denn mit dem Kontrast des Displays aus?

Wenn der nicht stimmt, zeigt das Display zwar etwas an, aber sehen kann
man nix. Hast Du da nen Poti dran um den mal zu verändern?

von Marco (Gast)


Lesenswert?

Wenn kein Kontrast da wäre, könnte man auch die schwarzen Kästen nicht
sehen.

Was für ein Controller ist denn auf dem Display????????????
Da sind ein paar IC's. Was steht auf denen?

von Paul Baumann (Gast)


Lesenswert?

Ich habe hier ein Display 4*27 Zeichen mit HD44780 und MUSSTE D0-D3
auf H-Pegel legen. Sonst trat der Effekt wie oben beschrieben auf.
War aber nur ein Tip; muß man nicht befolgen.

Guten Rutsch
Paul

von Lars H. (hermi)


Lesenswert?

Kontrast ist mit einem Poti eingestellt und der Controller aud dem
Display ist mit Kunststoff vergossen da kann man nichts lesen. Ich
versuch mal noch D0- D3 nach H-Pegel, vielleicht hilft´s ja.
Alles Gute im neuen Jahr.

von Dirk B. (dirk-)


Lesenswert?

Hi,

sicherlich ist dein Display nur "nahezu 100% HD44780 kompatibel". Die
Betonung liegt auf "nahezu" meistens weichen die Controller leicht von
der Init Sequence ab. Vergleiche mal dein Datasheet vom LCD und das von
einem HD44780 Display.

Gruß,
Dirk

von Lars H. (hermi)


Lesenswert?

Hurra es lebt!
Heute hab ich mit einem Bekannten das Problem gefunden. Wer mein
Listing ganz oben mal anschaut, der sieht die überaus überflüssige
Zeile "$baud 9600" in der ich die serielle Schnittstelle deklariert
habe. Diese liegt beim ATmega8 auf PD0 und PD1, genau den Pins wo ich
enable und Register select angeschlossen habe. Wahrscheinlich hat die
Schnittstelle Vorrang und hat mir die beiden Pins blockiert. Jedenfalls
funktioniert jetzt die Anteige. Ich danke allen Beteiligten für ihre
Mühe.

von Paul Baumann (Gast)


Lesenswert?

Wer in der Elektronik nicht an Wunder glaubt, ist kein Realist.
:-)
MfG Paul

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.