PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : atmega16 & LCD



Paranoid
04.06.2005, 11:46
Hallo

wie ich schon beim Suchen im Forum bemerkt habe, bin ich nicht der einzige mit einem solchem Problem, doch hat das Durchforsten bereits existierender Beiträge nichts zur Problemlösung beigetragen, deshalb hier mein Problem:

ich möchte ein LCD-Display WDC2704M (4 x 27 Zeichen mit 2 integrierten HD44780-kompatiblen Controller) mit einem ATMega 16 ansteuern. Ich hab momentan mal nur einen der beiden Controller angeschlossen (nur der für die obere Displayhälfte). Beim Anschalten, werden zwei schwarze Balken angezeigt (Zeile 1 und 3). Manchmal wird nach dem Programmstart beim Display Zeilen gelöscht (Balken verschwindet) oder ein zweiter Balken erscheint (Zeil 2 oder 4) oder der Kontast sinkt (der Balken ist noch schwach zu sehen), aber meistens passiert gar nicht, obwohl das Porgramm komplett durchläuft.

Angeschlossen hab ich das Display folgendermaßen:
Db4 = Portb.4
Db5 = Portb.5
Db6 = Portb.6
Db7 = Portb.7
E = Portb.3
Rs = Portb.2

hier das Basic-Programm dazu:

$regfile = "m16def.dat"
$crystal = 16000000


Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2



Cls
Locate 1 , 1
Lcd "Testrutine"
Wait 2

End

Hoffentlich kann mir jemand weiterhelfen.

Marco78
04.06.2005, 12:47
Das passt eigentlich auch ins Unterforum für BASCOM. Aber egal...

Wie du selbst schon geschrieben hast, hat das"Pollin-LCD" zwei Controller.
Du versuchst es aber in BASCOM mit nur einem anzusteuern.
Für LCDs mit zwei Controllern gibt es von ABSCOM eine LIB und ein Sample.

So wie du es bis jetzt probierst, könnte es evtl gehen, wenn du 20X4 einstellst. Ist aber keine Garantie.

Hast du nur ein Problem mit dem 27X4 oder hast du noch nie ein LCD angeschlossen?
Evtl könnte es auch dran liegen, das der Kontrast nicht richtig eingestellt ist.
Wenn du die Spannung am LCD anschliesst, müssen die 1. und 3. Zeile komplett schwarz sein. So lange bis der M16 das LCD initalisiert hat.
Oder die Datenleitungen DB4-DB7 liegen nicht auf Masse.

EDIT: Hab dein Text nochmal gelesen. 1. und 3. Zeile sind ja schwarz und so ;)
Dann probier mal die LIB für 2E-LCDs. Ich denke mal der Controller kommt mit den Adressen durcheinander.

Paranoid
04.06.2005, 13:33
ich hab des gleiche Problem noch mit nem anderen 4 x 20 Display (164A von Reichelt), des hat nur einen Controller, aber da passiert gar nichts. Der Kontrast dürfte au net des Problem sein, egal wie weit man den auftret, des ändert sichts.

Marco78
04.06.2005, 21:17
Aber Kontrast allgemein kann man erkennen?

Paranoid
04.06.2005, 21:56
ja, die beiden Balken die beim EInschalten erscheinen, werden heller und dunkler wenn man am poti dreht (10kOhm-Poti)

Marco78
04.06.2005, 22:14
DB4-7 liegen auf Masse? RW auch?
Das LCD hat tatsächlich ein HD44780-Controller?
Config LCD entspricht auch dem Anschluß?
Probier mal die LCD Libs von BASCOM. Evtl auch LCD4BUSY.LIB.

Paranoid
04.06.2005, 23:37
Die Anschlüsse liegen auf GND und es ist ein HD44780-kompatibler Controller (beim anderen Display ist es ein HD44780). Des mit ConfigLCD passt auch. Der Vorschlag mit den libs muss ich mal ausprobieren.

Paranoid
05.06.2005, 10:27
ich hab die Anschlüsse netsprechend der Beschreibung mit PortB verkabelt und dieses Programm überspielt:


$regfile = "m16def.dat"
$crystal = 16000000


$lib "lcd4.LBX"

Config Lcd = 20 * 4

Cls
Lcd "Testrutine"
Wait 2

End

Jetzt löscht er zuverlässig dass Display, jedoch läuft das Programm durch ohne dass ein Text angezeigt wird. Woran kann dass liegen?

Marco78
05.06.2005, 11:42
Sind die entsprechenden Anschlüße in den Compiler-Settings auch eingestellt?

Paranoid
05.06.2005, 11:58
Ja, es ist alles entsprechend der Verkabelung eingestellt. Was muss eigentlich alles in das Programm rein (und in welcher Reihenfolge) wenn man die lib verwendet? ISt also das "Config LCD" überhaupt notwendig?

Marco78
05.06.2005, 12:51
Es ist noch mehr nötig als nur Config LCD!!!
Du musst im Programm noch reinschreiben an welchen Pins die Datenleitungen liegen und E usw...
Außer wenn es in den Compilersettings eingestellt ist. Aber dann kann man sich das 20X4 eigentlich auch sparen.

Sonst muss nix weiter mit ins Programm (außer das für die LCD-Ausgabe.)
Wenn jetzt Befehle ausgeführt werden sollen (z.B. CLS) wird in der LIB gesucht ob der Befehl definiert ist. Wenn ja, werd der Code aus der LIB übernommen, ansonsten der Standartcode.

Paranoid
05.06.2005, 13:04
Ich hab schon verschiedene Programmversionen ausprobiert, mit Config LCD, Config Lcdpin und ohne, aber es ist immer das Gleiche, den Cls-Befehl versteht er, aber den Befehl zum Anzeigen des Textes führt er nicht aus, bzw. vielleicht versteht auch das Display die Befehle nicht falls welche gesendet werden.

Marco78
05.06.2005, 13:09
und es ist ein HD44780-kompatibler Controller
Dann vergleich mal im Datenblatt die Adressen mit dem vom HD44780.
Kann sein, das die Zeilen und Spalten anderes adressiert werden müssen.
Oder probier mal verschiedene Locate-Varianten.
Oder versuch ein Text mit 160 Zeichen auf's LCD zu schreiben. Vielleicht kommt dann ja wenigstens an/ab einer Stelle was.