LCD Display mit Atmega 8

OP #271871
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
Gast #271872
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
Gast #271873
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.
Gast #271879
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.
OP #271880
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.
Gast #271881
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?
Gast #271882
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
Gast #271883
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.
Angehängte Dateien:
OP #271884
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.
OP #271890
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.

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