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
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
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.
Ich hab mal schnell nachgesehen, BASCOM kenn den Befehl InitLCD auch. Den einfach nach der Displaydefinition mal einfügen. bye Frank
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.
Nimm mal D0 bis D3 von der Masse weg. Sonst ist es soweit ich sehe i.O. MfG Paul
Du hast doch hoffentlich die Kontrastspannung nicht vergessen? bye Frank
@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.
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.
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?
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
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.
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.
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?
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?
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.