2 LCD Module an einem AVR in C

OP #2532295
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
Gast #2532327
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
Gast #2532329
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.
#2533291
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.