Guten Tag Liebe Forumfreunde Ich Schlage mich seit längerer Zeit mit einem LCD Display herum, bei welchem ich einfach keine Anzeige hinbekomme. Es Handelt sich um einen SYH-LY-CYR22 Punktmatrix Display, welchen ich bei Distrelec erworben habe. ( http://www.distrelec.ch/de/LCD-Punktmatrixdisplay-4-75-mm-4-x-16-Display-Elektronik-DEM-16481-SYH-LY-CYR22/p/17551456?q=661576&page=1&origPos=1&origPageSize=10&simi=99.41 ) Dieser besitzt den Displaycontroller ST7066U-0T. Kennt sich jemand mit diesem Display(Controller) aus oder sind diese Controller evtl. sogar genormt? Bin um jede Hilfe froh. Auf jeden Fall habe ich den Display mit meinem PIC16f1518 Verkabelt und nutze PORT A als Datenleitung und PORT B 0-2 Als Steuersignale. Eine Initzialisierung habe ich mir anhand einer Anleitung im Internet Zusammengebastelt. void LCDstartup(void) { char counter; char instructions[8] = {0x30, 0x30, 0x30, 0x38, 0x08, 0x01, 0x06, 0x0C}; // char delays[8] = {160, 5, 5, 5, 5, 100, 5, 5}; for (counter = 0; counter <8 ; counter++) { RS = 0; RW = 0; ENABLE = 1; PORTA = instructions[counter]; _delay(10); ENABLE = 0; _delay(10); PORTA = 0x00; RS = 1; RW = 1; _delay(160); } } Und ein Zeichen würde ich gerne mit dieser Funktion Schreiben: RS = 0; //Register select set to 0 RW = 0; //Set to write ENABLE = 1; //Enable writing PORTA = (lcd_zeile1[vergleicher])+0x80; //place DRAM Adress on 8Bit bus _delay(10); ENABLE = 0; //Disable writing _delay(10); PORTA = 0x00; RW = 0; //Register select set to 1 RS = 1; // Set to reading //Data write into DRAM RW = 0; // Set to writing ENABLE = 1; // Enable writing PORTA = write_zeile1[vergleicher]; //place data on 8Bit bus _delay(10); ENABLE = 0; //Disable writing _delay(10); PORTA = 0; In diesem CODE-Schnipsel ist die Variable lcd_zeile1 für die einzelnen DRAM Adressen je nach Position auf dem Display. Die Variable write_zeile1 ist ein Array in welchem Buchstaben abgelegt sind, welche vorher als #define in den 8-Bit Wert definiert wurden, so wie es nachher auf die Datenleitungen des Display kommen sollte. Ich hoffe Ihr könnt mir dabei helfen, wenigstens ein Zeichen auf den Display zu bringen. Mit Freundlichen Grüssen Michael
Der Pin V0 ist mit VDD verbunden welcher ein Spannungslvl. von +5 Volt hat.
Michael Lang schrieb: > Der Pin V0 ist mit VDD verbunden welcher ein Spannungslvl. von +5 > Volt hat. V0 schließt man normalerweise so an: http://www.sprut.de/electronic/lcd/speisung.gif Laut Degenblatt sollte die Spannung bei Typ. Vdd - 4.5V liegen.
Besten Dank für den Tipp. Habe ich soeben umgesetzt, leider ist das Ergebnis noch gleich. Keine Anzeige
Kannst nochmal zwischen Pin 1 und 2 nachmessen, ob 5V Versorgung anliegt. Dann die Kontrastspannung an Pin 3 mit dem Poti verändern, bis du schwarze Balken siehst, dann etwas zurück bis die Balken fast verschwinden. Dann sollte der Kontrast richtig sein. Leider ist die Initialisierung im Datenblatt nicht näher beschrieben, aber so wie ich das kenne, sollte nach dem Einschalten die Startsequenz verzögert starten. Füge vor der for-Schleife ein _delay(50) ein.
Jap Zwischen Pin0 und 1 Sind 5 Volt. Wie sollte den der Kontrast aufgebaut sein? Bei hoher Spannung alle Balken schwarz oder bei tiefer? Denn das drehen am Potti hat überhaupt keine Wirkung. Eine Wartesequenz für das Booten des LCD ist bereits am Anfang des Mains() eingebaut. Dachte ich poste übersichtshalber nur Programmausschnitte.
Michael Lang schrieb: > das drehen am Potti hat überhaupt keine Wirkung. Du kannst auch ein 20k Poti ohne einen zus. Reihenwiderstand nehmen und die Kontrastspannung von 0 bis 5V verändern.
Habe das Problem jetzt Endlich gefunden. Der Kontrastregler des Displays war Kaputt. Display gewechselt und gut wars. Besten Dank für eure Hilfe
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.