www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Display mit Atmega 8


Autor: Lars Hermersdorfer (hermi)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Danny (Gast)
Datum:

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

Autor: Frank (Gast)
Datum:

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

bye

Frank

Autor: Lars Hermersdorfer (hermi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Paul Baumann (Gast)
Datum:

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

MfG Paul

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast doch hoffentlich die Kontrastspannung nicht vergessen?

bye

Frank

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lars Hermersdorfer (hermi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian Nöding (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Lars Hermersdorfer (hermi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lars Hermersdorfer (hermi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk Bxxxxx (dirk-)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lars Hermersdorfer (hermi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Paul Baumann (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.