Hallo zusammen! Steige gerade in die C Programmierung von Mikrokontrollern ein und habe da ein Problem mit dem Ansprechen eines LCDs. Es werden immer nur schwarze Balken ausgegeben... ist in meinem Quellcode etwas falsch oder bin ich einfach nur zu dumm? Habe mir folgendes Board besorgt: http://www.e-lab.de/components/lcd_and_keyboard.html und davon das "Mega8 Terminal Board CAN" und verwende den WinAVR zum programmieren.
Du musst mal in Datenblatt nachschlagen. In der Regel kann man den Kontrast eines Displays mit Hilfe eines Potis einstellen. Es könnt sein, dass durch das auf GND legen dieses Pins, der Kontrast immer maximal ist und somit jede Ausgabe als schwarzer Balken erscheint.
den verdacht habe ich mittlerweile auch. Es gibt zwar ein Poti auf dem oard aber egal wie man das dreht, am Kontrast ändert sich nix :( Obwohl laut Messgerät verschiedene SPannungen am Display ankommen ?-)
Hallo David, ich habe zwar den source und die Schaltung nur diagonal gelesen aber ich denke der Fehler liegt in der SW. In der init_display gehen alle Befehle ins Leere (das LCD ist ja wohl nur mit vier Bit Bus angeschlossen) bzw. gibst du vier mal "0000" aus. Ich finde auch keine Ausgabe um das LCD in 4 Bit Modus zu setzen (0010xxxx). grüsse leo9
tjo, hätte vielleicht die verkabelung angeben sollen :) Die 4 Datenbits liegen an PD0-PD3 an Das Enable-Bit liegt an PD4 an Das RS-Bit geht über PD5 R/W läuft über PD6 Bei der Verkabelung sollte das ganze eigentlich klappen oder mach ich da nen grundlegenden Fehler?? die Initalisierung hab ich aus dem Datenblatt des Displaycontrollers.
..auch so herum klappts nicht: Du schickst erst 00000011 (->4Bit Mode) an das LCD (welches zu diesem Zeitpunkt noch 8 Bit "spricht"). Sind D0..D3 am LCD mit GND verbunden, sonst könnte es sein dass das LCD xxxx0011 "sieht". Sprich der erste Befehl könnte undefiniert sein. Danach schickst du nochmals 00000011 (kommentierst es aber als Disp on/off statt wie vorher Function set) mit einem Enable Puls an das (falls der vorherige Befehl geklappt hat) nun 4Bit sprechende LCD. Dies wartet nun auf den nächsten Enable Puls um einen ganzen Befehl zu bekommen. Zusammen mit 00000001 (Disp clear) hat das LCD nun 00110001 "gelesen". -> was sicher Unsinn ergiebt. Entry Mode Set ist dann wieder ein "erster" Enable Puls und das LCD wartet wieder auf einen zweiten. Und ab nun sendest du mit daten_senden und das LCD setzt jedes Byte aus vier Bit der letzten und vier Bit der aktuellen Daten zusammen. Ich hoffe das war einigermaßen verständlich? grüsse leo9
ok, ich verstehe was du meinst. werde das mit dem Ground und die ganze initialisierung nochmal prüfen. Die Kommentare können unter umständen nicht ganz dem entsprechen was tatsächlich dort geschieht, hab da relativ viel dran rumgebastelt... Werde mich Melden was die analyse ergeben hat :)
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.