Forum: Mikrocontroller und Digitale Elektronik 2 LCD Module an einem AVR in C


von Dominik R. (drein)


Lesenswert?

Hallo,

kann mir jemand helfen?

Ich hab hier die LCD Lib von Peter Fleury. Wie kann ich mit der 2 
Displays ansteuern? Habe bei den 2 Displays nur die Enable Ports an dem 
Mega32 auseinander, Datenports usw. sind zusammengeschlossen.

Oder kann ich auch einfach "per Hand" die Enable Ports auf 0 oder 1 
ziehen, ohne das die Lib was davon "mitbekommt"?
Die schreibt schließlich nur Daten - aber welches Display was davon 
empfängt ist egal, oder?

Grüße

von Ingo (Gast)


Lesenswert?

Dominik Rein schrieb:
> Oder kann ich auch einfach "per Hand" die Enable Ports auf 0 oder 1
> ziehen, ohne das die Lib was davon "mitbekommt"?

Probier mal die enable Routine gegen eine eigene zu ersetzen, in der du 
den Parameter (LCD1 oder 2) übergibst und in dessen Abhängigkeit den 
entsprechenden enable bedient.

Ingo

von Krapao (Gast)


Lesenswert?

"Per Hand E bedienen" geht nicht, weil die Funktionen in der Library 
ebenfalls E bedienen.

Du kannst aber 1-2 "Selectleitungen" am µC opfern und mit externen 
Logikgattern über eine Kombination aus E und Selectleitung das jeweilige 
LCD auswählen.

Zwei Selectleitungen und (ein halbes) Quad 2-input AND gate 74HCT08 
(74xx) wäre nicht so kompliziert. Wenn du noch ein NOT Gatter 
irgendwo frei hast, reicht eine Selectleitung.

von Dominik R. (drein)


Lesenswert?

@Krapao:  Leider ist das nichtmehr möglich - die Platine ist schon 
bestellt :O

Werde es mal mit einer eigenen Routine probieren. Danke schonmal:)

Grüße

von Peter D. (peda)


Lesenswert?

Dominik Rein schrieb:
> Ich hab hier die LCD Lib von Peter Fleury. Wie kann ich mit der 2
> Displays ansteuern?

Diese Lib habe ich noch nie probiert.
Wenn ich mich richtig erinnere, ist sie ein Weg, um ganz einfache Sachen 
höllisch kompliziert hinzuschreiben, bis keiner mehr durchsieht.

Bei meiner LCD-Lib ist es ein Kinderspiel, 2 LCD anzusteuern.
Man definiert sich einfach eine zusätzliche Variable lcd_select und 
wählt damit das LCD aus. Beim Init kann man auch beide LCDs auswählen, 
d.h. in einem Rutsch initialisieren. Natürlich gehen auch mehr LCDs.

In der Funktion lcd_nibble() setzt man dann den E-Pin entsprechend:
1
...
2
  if( lcd_select & 1<<0 )
3
    LCD_E0 = 1;
4
  if( lcd_select & 1<<1 )
5
    LCD_E1 = 1;
6
  _delay_us( 1 );                       // 1us
7
  LCD_E0 = 0; 
8
  LCD_E1 = 0;

Hier noch meine Lib:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=102296


Bequemer Weise selektiert man das LCD beim Setzen der Position anhand 
der Zeile.
Hat man z.B. zwei 4-zeilige LCDs, dann ist Zeile 0..3 LCD0 und Zeile 
4..7 LCD1.



Peter

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
Noch kein Account? Hier anmelden.