Diese lib soll HD47780 Kompatible Displays im 4-Bit Modus ansteuern. Sie wurde von mir entwickelt um das Pollin C0802-04 LCD anzusteuern. Dieses hat eine Besonderheit bei der initalisierung. Deshalb kann dieses LCD per #define in der lcd_config.h ausgewählt werden.Ohne diese Optionen sollten aber auch alle anderen Displays funktionieren. Auch HD44780 kompatible u.a. In der lcd_config.h können alle Einstellungen vorgenommen werden. Alle Leitungen können separat angegeben werden. Lediglich müssen alle Datenleitungen auf demselben Port, und alle Control-Leitungen auf demselben Port sein. Wo möglich wird das Busy-Flag ausgewertet, statt feste Delays zu verwenden. gruß cyblord
>Diese lib soll HD47780 Kompatible Displays im 4-Bit Modus ansteuern.
Kannste knicken den Schrott. Das funktioniert nicht.
Ja, wie dumm von mir. Bei mir ist sie im Einsatz und geht perfekt. Mit welchem Display hast du Profi es denn versucht? Wie schon geschrieben, die lib ist für das Pollin LCD C0802-04. Und damit geht die Perfekt. Angegeben ist dieses LCD als Kompatibel zu HD47780. Obs stimmt weiß ich nicht. Für alles andere gibts genug andere libs.
Hallo Julian ! Ich habe Deinen Betrag über die suche nach einer Info zum LCD Modul von Pollin gefunden , ich möchte dieses Display für meine Modellbahn anwenden , nun habe ich ein Problem mit der Hardware d.h. ich habe keine Schaltung die mir eine Inbetriebnahme ermöglicht . Kannst du mir eine Info zukommen lassen. Danke im voraus detewe
Eine "Schaltung" braucht es für den Betrieb nicht. Das Display besitzt 4+3 Datenleitungen, welche direkt an die IO Pins eines Microcontrollers angeschlossen werden können. Welche Leitung an welchen Pin geht, wird über die #defines in der Header Datei angegeben. gruß cyblord
Die Frage nach der Schaltung zeigt doch, dass etwas Hilfe benötigt wird. Die angehängte Schaltung soll nur das Prinzip darstellen. Wichtig ist, wie schon oben erwähnt, dass das LCD nur mit 5V und nicht weniger funktioniert. Es kann aber über ein 3Volt-Controller angesteuert werden. RW und V0 habe ich für Tests auf GND gelegt. Das LCD hat gegenüber anderen LCDs keine Besonderheiten. Die oben erwähnte "Besonderheit" ist keine. Das LCD wird über das #define nur auf den 4-Bit_Modus eingestellt. Das wird aber bei anderen LCDs genau so gemacht. Ich betreibe verschieden LCDs parallel oder über I2C mit einer eigenen Bibliothek. Das POLLIN LCD hat sofort funktioniert. Ich verwende sehr gerne das Launchpad von TexasInstuments für unter 5 Euro. Das Board enthält eine vollständiger Programmiereinheit und die gesamte Entwicklungs-Software ist kostenlos. http://www.watterott.com/de/MSP430-LaunchPad-MSP-EXP430G2 Weitere, größere MSP430, kann man als kostenlose Muster bei TI bestellen. Aktuell setze ich den MSP430G2553 ein. Grüße smithjnr
Update und Bugfixes für den LCD Code. Vorallem der Warm-Reset sollte damit zuverlässiger funktionieren. Timings verbessert. > Das LCD hat gegenüber anderen LCDs keine Besonderheiten. Die oben > erwähnte "Besonderheit" ist keine. Das LCD wird über das #define nur auf > den 4-Bit_Modus eingestellt. Das wird aber bei anderen LCDs genau so > gemacht. JEIN ;-) Eine gute LCD lib funktioniert mit dem Pollin LCD ebenfalls. Das ist richtig. Aber es gibt im Netz viele Libs, welche mit "normalen" LCDs auch im 4 Bit Modus gut funktionieren, aber beim Pollin LCD streiken. Und zwar dann wenn die 4 Bit initialisierung schlampig gemacht wird. Siehe auch den Thread im Forum zum Thema Pollin LCD. Da wird von vielen Problemen berichtet. gruß cyblord
Warum benutzt Du nicht einfach die standard Initialisierung, wie sie im HD47780-Datenblatt steht. Probleme mit dem LCD haben ausschließlich die, die das nicht tun. Peter
Peter Dannegger schrieb: > Warum benutzt Du nicht einfach die standard Initialisierung, wie sie im > HD47780-Datenblatt steht. Mach ich. > Probleme mit dem LCD haben ausschließlich die, die das nicht tun. Hab aber keine Probleme. Danke. gruß cyblord
Danke für das hochladen, würde das Display auch gern auch mit Atmel uP ansteuern (ATTINY2313) Da ich noch in Asembler Programmiere (AVR Studio5), gibts dafür auch nen beispiel Code? Danke im Vorraus
Florentin Deutinger schrieb: > Danke für das hochladen, würde das Display auch gern auch mit Atmel uP > ansteuern (ATTINY2313) > Da ich noch in Asembler Programmiere (AVR Studio5), gibts dafür auch nen > beispiel Code? > Danke im Vorraus Habe das Display in der Anwendung, an einem Mega48, sollte sich problemlos an den Tiny anpassen lassen, die 4 Datenleitungen sollten zusammenhängen, die Anderen können verteilt sein. mfG ingo
wird wohl etwas umbauarbeit und einiges vom Speicher benötigen, aber danke fürs hochladen. p.s. der Tiny hat eh bei einem Port alle 8 Datenleitungen rausgeführt
Die Lib funktioniert auf anhieb super bei mir, danke! Nur ein Problem hab ich: etwa bei jedem zweiten reset (nur der µC wird resettet, das Display behält seine Spannung) wird nur die obere Zeile mit schwarzen blöcken angezeigt. Beim Kaltstart (gerade den Strom eingeschaltet) gehts immer sofort. In den schwarzen blöcken kann man bei genauem hinsehen sogar ganz leicht den Text erkennen... woran liegt sowas? hattet ihr das auch mal?
Peter K. schrieb: > Die Lib funktioniert auf anhieb super bei mir, danke! > Nur ein Problem hab ich: etwa bei jedem zweiten reset (nur der µC wird > resettet, das Display behält seine Spannung) wird nur die obere Zeile > mit schwarzen blöcken angezeigt. Beim Kaltstart (gerade den Strom > eingeschaltet) gehts immer sofort. > In den schwarzen blöcken kann man bei genauem hinsehen sogar ganz leicht > den Text erkennen... woran liegt sowas? hattet ihr das auch mal? Ich habe ein update der lib hochgeladen. Einfach bisschen runterscrollen. Hast du das gesehen? Dieses soll genau diese init Problem verhindern. gruß cyblord
Ja, hatte ich gesehen, das ist auch die Version die ich verwendet habe. Vielleicht stimmen die Timings bei einem 32Mhz atxmega µC nicht mehr?
also, ich habe jetzt schon einiges an den timings gespielt, aber der Warmstart funktioniert immernoch nicht richtig. kann es sein dass das display kaputt ist? oder dass die pin konfiguration in der config einen fehler hat? mir fällt langsam keine andere Lösung mehr ein...
Peter K. schrieb: > also, ich habe jetzt schon einiges an den timings gespielt, aber der > Warmstart funktioniert immernoch nicht richtig. kann es sein dass das > display kaputt ist? oder dass die pin konfiguration in der config einen > fehler hat? mir fällt langsam keine andere Lösung mehr ein... Schwierig, seit dem Update funktioniert bei mir der Warmstart (µC Reset aber Display und restliche Schaltung behalten ihre Spannung) ohne Probleme. Die Timings sollten unabhängig vom Controller sein, stützen sich ja auf die delay Funktionen und wenn dort F_CPU korrekt gesetzt ist müsste das bei jedem AVR gehen. gruß cyblord
gut, die delay funktion funktioniert korrekt bei mir. Könntest du dir vorstellen, das einer der Pins falsch angeschlossen oder konfiguriert ist und das ding dann alles macht bis auf den warmstart? das problem tritt immer auf, wenn ich den reset button drücke oder neu flashe. kann es daran liegen, dass bei mir die display stromversorgung seperat läuft und deshalb das display seine versorgungsspannung auch bei einem reset behält?
Moin Moin Peter K., ich hatte auch das Problem, dass beim Warmstart (µC Reset) das Display nicht sauber initialisiert wurde (nur einzeilig, Schrift auf schwarzem Grund). In anderen HD47780-Libs wird bei der Initialisierung der 8-bit-Mode 3x gesendet und dann einmal der 4-bit-Mode. Wenn man das in der "lcd_init" Routine von cyblord anpasst, klappt bei mir auch der Warmstart des Displays. ... #ifdef C080204 sendNibble(0x3); //8-Bit Mode (DL=0) _delay_ms(1); sendNibble(0x3); //8-Bit Mode (DL=0) _delay_ms(1); sendNibble(0x3); //8-Bit Mode (DL=0) _delay_ms(1); sendNibble(0x2); //4-Bit Mode (DL=0) _delay_ms(1); #endif ... Gruß, Soulsurfer
Die Initialiserungsroutine von cyblord ist nicht richtig. Es MUSS dabei 3x der 8-bit-Modus eingestellt werden werden und danach 1x der 4-bit-Modus, cyblord initialisiert aber nur 1x den 8-bit-Modus. Warum 3x ??? Das steht hier: Beitrag "Sind LCDs taub und müssen alles dreimal gesagt kriegen?"
Hallo, @smithjnr: Wäre es möglich, Beispiel-Code für den MSP zur Verfügung zu stellen? Ich hab ein LauchPad (G2121 u.a.) zur Verfügung und möchte genau das LCD-Modul C0802-04 von Pollin ansteuern... Gibt es für die MSP-Plattform ev. eine Bibliothek? Vielen Dank!
Hallo, ich habe mir auch dieses LCD-Display von pollin C0802-04 zugelegt, weil es preiswert zu haben war. Um dieses anzusteuern habe ich mir ein paar kleine Assemblerfunktionen geschrieben. Und das passt genau in diesen Treat. Diese Bibliothek wird einfach mit eingebunden, fclock und Pins anpassen und dann sollte die funktionieren. Bei mir läuft das LCD an einem ATtiny2313, welche als Uhr programmiert ist. Das ganze soll eine Schaltuhr werden, womit nach Astrozeit (Sonnenauf- und untergang) etwas gesteuert wird. Ein Testbild habe ich mit angehängt. mfg Peter
Hallo, ich habe hier auch das Display und die Lib von cyblord ausprobiert aber bei mir spuckt das Display nur seltsame Zeichen aus. Das kleine "o" wird halbwegs richtig dargestellt aber der Rest funktioniert garnicht, mit der zweiten Zeile ist das selbe Problem.
1 | int main() { |
2 | _delay_ms(500); |
3 | lcd_init(); |
4 | _delay_ms(500); |
5 | |
6 | lcd_print("oooo"); |
7 | _delay_ms(1000); |
8 | lcd_clear(); |
9 | lcd_print("oooo"); |
10 | //lcd_goto(2,0); |
11 | //lcd_print("welt"); |
12 | return 0; |
13 | } |
smithjnr schrieb: > Ich betreibe verschieden LCDs parallel oder über I2C mit einer eigenen > Bibliothek. Das POLLIN LCD hat sofort funktioniert. Hallo Smith Junior, Leider habe ich erst eben Deinen Beitrag über die Google-Bildersuche gefunden. Mein aktueller Aufbau sieht fast genau so aus, wie auf Deinem Foto. ;-) Ich möchte mir auch eine Bibliothek für verschiedene LCDs für das Launchpad (bzw. für den zweiten mitgelieferten MSP430G2452) aufbauen. Wenn Du mir Deine geben könntest, muss ich nicht "bei Null" anfangen. Aktuell fange ich auch mit dem Pollin-LCD für 0,95€ an. Aber es sollen noch Taster, LEDs und evt. ein Dreh-Drück-Knopf dran. Ich habe davon noch 'ne Tüte voll rum liegen. Was mich nun noch beschäftigt ist die Frage, wie sich die Controller untereinander auf der ISO/OSI-Schicht 6 unterhalten, siehe Beitrag "Protokolle zwischen Controllern" VG Torsten
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.