mikrocontroller.net

Forum: Compiler & IDEs LCD mit 2 Controllern


Autor: MüllersFranz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein LCD mit 2 Controllern, also auch 2 Enable-Leitungen.
Mit einer funktionierts auch, nur was ist mit der 2ten? Ich verwende
die LCD-Lib von P. Fleury und weiss da nicht so ganz, was ich machen
soll? Einfach 4 Lines angeben und Enable 1 + 2 zusammenanschließen?
Gruß
Martin

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einfach wie 2 Displays verwenden. Die Datenleitungen sind für Beide
gemeinsam vorhanden und die Daten werden mit dem jeweiligen Enablepin
an das passende Display geschickt. Wenn du beide zusammenschaltest
passiert entweder garnix oder beide Displayteile zeigen dann dasselbe
an. Also du gibst ein Zeichen aus und es erscheinen Zwei.

bye

Frank

Autor: MüllersFranz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kennst du die LCD-Liv von Fleury? Die muss ich ja irgendwie
modifizieren, oder? Oder wie meinst du das mit "wie 2 Display"
verwenden? Dass die Leitungen bis auf Enable gemeinsam genutzt werden
ist mir schon klar, nur muss dass Programm ja wissen, wann es welches
Enable nutzen soll.

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenn die Lib jetzt nicht auswendig, hab sie zwar schon mal benutzt
aber weiß nicht ob sie 2 Displays unterstützt.
Falls nicht kannst dir ja 2 Makros schreiben die du vor jedem Befehl
absetzt:

#define USE_DISP1 ...setze Enable1, lösche Enable2...
#define USE_DISP2 ...setze Enable2, lösche Enable1...

dann gehts los:

USE_DISP1;
lcd_init(); // LCD1 initialisieren

USE_DISP2;
lcd_init(); // LCD2 initialisieren

USE_DISP1;
lcd_putc('A'); // Zeichen auf 1. Disp. ausgeben.
... usw

Wird halt schwierig wenn du Text über mehrere Zeilen ausgeben
möchtest.

Gruß
Roland

Autor: MüllersFranz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin da noch nicht so erfahren, muss ich die makros in die
hauptdatei schreiben? Habs so versucht:
#define lcd1 PORTB |= (1<<3) | (0<<2);
#define lcd2 PORTB |= (0<<3) | (1<<2);
aber hat nicht geklappt.
die Enables hängen an PortB 1 + 2

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habs so versucht:
> #define lcd1 PORTB |= (1<<3) | (0<<2);

Damit schaltest du bit 3 ein und bit 2 schaltest du nich ein (und auch
nicht aus).

#define lcd2 PORTB |= (0<<3) | (1<<2);

Damit schaltest du bit 2 ein und bit 3 schaltest du nicht ein (und auch
nicht aus).
Du könntest es damit versuchen:

#define lcd1 PORTB |= (1<<3) &= ~(1<<2)
#define lcd2 PORTB &= ~(1<<3) |= ~(1<<2)

> aber hat nicht geklappt.

Grundregel: Immer dazu schreiben, was nicht geklappt hat und wie sich
das bemerkbar gemacht hat.

> die Enables hängen an PortB 1 + 2

Warum änderst du dann die bits 2 und 3?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, meinte natürlich:

#define lcd1 PORTB |= (1<<3) &= ~(1<<2)
#define lcd2 PORTB &= ~(1<<3) |= (1<<2)

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ob das Bitgeschiebe jetzt stimmt weiß ich nicht. Es gibt /gab doch
mal so schöne Befehle wie SBI/CBI im Gcc.
Ich würd die Bits auf alle Fälle nacheinander setzen, sonst kennt man
sich schnell nicht mehr aus:
PORTB &= ~ (1 << PB1); PORTB |= (1 << PB2);

Das DDRB muss übrigens auch richtig gesetzt sein, damit PB1+2 erst mal
Ausgang werden. (Am Besten mal im Avrstudio durchsimulieren, ob
überhaupt am Port was ankommt)

Gruß
Roland

Autor: MüllersFranz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist da noch was gekommen und zwar muss ich in der lcd.h ja angeben,
wo enable angeschlossen ist. D.h. die lcd.c wird das auch irgendwo
benutzen. Wenn ich also davor im Hauptprogramm was ändere, wird das
doch sicher von der lcd.h mit jedem Kommando das ich daraus benutze bei
Bedarf neu eingestellt -> die Makros haben keine Wirkung mehr.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.