AVR LCD lib für HD47780 (z.B. Pollin C0802-04)

#2287568
Lesenswert?

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
Angehängte Dateien:
#2328687
Lesenswert?

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
Gast #2337493
Lesenswert?

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
Angehängte Dateien:
#2437929
Lesenswert?

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
Angehängte Dateien:
Gast #2508434
Lesenswert?

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
Angehängte Dateien:
Gast #2616769
Lesenswert?

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?
#2617546
Lesenswert?

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
#2651950
Lesenswert?

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
Gast #2651954
Lesenswert?

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?
Gast #2764887
Lesenswert?

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
Gast #3013267
Lesenswert?

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
Angehängte Dateien:
#3016959
Lesenswert?

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
}
Angehängte Dateien:
Persönliche Seite #3183439
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren