Hallo Freunde, Wollte mal endlich selber mal was beisteuern und hier ist ein kleiner Beitrag fuer jene die auf irgendeinen Weg (ebay, etz.) das LCD Module PICVUE-064PYL erstanden haben und es noch nicht zum Laufen gebracht haben. Dieses LCD ist auf zwei Zeilen zu je 8 Charakter aufgeteilt und hat eine sehr schoene gelbe Hintergrundbeleuchtung. Nachdem meine LCDs ein paar Wochen nur rumgestanden haben, wurde es mir zu bunt und machte mich endlich daran es zu versuchen ein Interface zu erstellen. Zur Codeentwicklung verwandte ich den Lawicel SIMM100 mit dem MEGA32. Es hat dann auch bald geklappt. Im Anhang ist eine ZIP Datei mit einem Demoprogram welches die Character und Graphic Mode demonstriert. Das LCD Display basiert auf den HD44780 und zwei 74HC164 shift register. Es werden nur drei Datenleitungen benoetigt: CLOCK, DATA und E. Die Daten werden als zwei Byte Packets gesendet. Das erste Byte steuert im Bit7 den RS Eingang und das andere Byte enthaelt die LCD Daten/Befehle. Alles uebrige ist in meiner ZIP-Datei zu finden. Diese Art der LCD Ansteuerung ist sehr praktisch, da man nur drei Port Leitungen braucht. Geschwindigkeitsmaessig ist am LCD nicht viel zu benerken und fuer die meisten Anwendungen schnell genug. Man kann uebrigens das LCD modifizieren und ein freies Bit im zweiten Shiftregister fuer die Steuerung der LED Hintergrundbeleuchtung verwenden. Ich hoffe dass es bei Euch mit wenig Schwierigkeiten auch funktioniert. Viele Gruesse aus Edmonton, Alberta, Canada Gerhard P.S. Ich habe auch das Datenblatt im PDF Format verfuegbar. Bitte lasst mich wissen ob die angehaengte Datei im Forum verfuegbar ist, da ich das hier zum ersten Mal mache. Sollte mir jemand schreiben wollen, bitte nicht vergessen, meine e-mail Addresse entsprechend zu modifizieren (das antispam muss geloescht werden)
Im Anhang ist das Datenblatt des PICVUE-064-PYC zu finden. Gerhard
Bitte beachten, dass bei Aenderung der Prozessorquarzfrequenz die Interbyte Verzoegerung entsprechend veraendert werden muss. Diese Problem wird durch die Methode der Hardware SPI Datenaussendung verursacht, weil dann der Prozessor nicht auf das Ende des ersten Bytes wartet. Mit Bitbanging ist das natuerlich kein Problem. Also, bitte aufpassen. Sollte das LCD nicht richtig anzeigen, dann ist das moeglicherweise die Ursache. Die Source arbeitet bei mir richtig mit 3.6864MHZ. void wr_disp_ser(char data) { LCD_CLK = 0; // Activate E clk SPDR = glrsel; // LCD command byte, 0x80=Data, 0x00=RS Command delay_us(10); // Allow time to shift data out (*) SPDR = data; // Load SPI data register with LCD data byte delay_us(10); // Wait again for finishing the shifting (*) LCD_CLK = 1; // Activate E clk delay_us(5); // allow display time to accept the new data LCD_CLK = 0; // De-activate E clk delay_ms(2); // Wait for LCD to accept new data } (*) Dieser Wert ist richtig fuer SPI CLK / 4 und 3.8MHZ. Wenn nicht sicher, mit dem Oszillographen kontrollieren. Die E-Strobe darf nur nach dem letzten SPI CLK Pulse sichtbar sein, wie in der Source SER_LCD.C im Kommentar graphisch dargestellt. Gerhard
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.