Forum: Mikrocontroller und Digitale Elektronik Zwei LCDs in Bascom


von Dominik R. (drein)


Lesenswert?

Hallo,

habe gerade gelesen, dass es evtl. möglich wäre, 2 LCDs über die 
lcd4e2.lib anzusteuern.

Link: http://halvar.at/elektronik/kleiner_bascom_avr_kurs/zwei_lcd/

Hat das schonmal jemand gemacht oder weiß ob es funktioniert?
Habe gerade meine Umgebung noch n icht fertig und wollte das vorher mal 
wissen ;)

Grüße

von Paul Baumann (Gast)


Lesenswert?

Ja, das geht. Man muß nur die 2 Enable-Eingänge von verschiedenen Port-
pins ansteuern lassen:

Config Lcdpin = Pin , E2 = Portb.1 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 
= Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2


Dann muß man eine Variable haben, die den Schaltzustand aufnehmen kann:

Dim ___lcdno As Byte

Nun kann man zwischen den Displays umschalten:

___lcdno = 0                  'auf Chip 1 schalten
Initlcd                       'die beiden oberen Zeilen initialisieren
Cls                           'die beiden oberen Zeilen löschen
___lcdno = 1                  'auf Chip 2 schalten
Initlcd                       'die beiden unteren Zeilen initialisieren
Cls                           'die beiden unteren Zeilen löschen

Locate 2 , 1
Lcd "MfG  Paul"

von Dominik R. (drein)


Lesenswert?

Okay - danke!

Werds ausprobieren sobald meine Umgebung soweit ist - melde mich dann 
nochmal. Sieht aber sehr logisch aus ;)

Grüße

von Dominik R. (drein)


Lesenswert?

Achso:

__lcdno ist ja keine vorkonfigureierte - oder?
Also muss ich noch ne Routine schreiben, die den Zustand der Variable 
ausliest und dann entsprechend die Enable Pins schält?

GRüße

von Paul Baumann (Gast)


Lesenswert?

Dominik schrob:
>lcdno ist ja keine vorkonfigureierte - oder?

Nein das ist keine Gereiherte. Du gibst einfach nur an
___Lcdno=0
Damit ist das erste angesteuert, dessen Enable Anschluß im obigen 
Beispiel
an PortB.3 sitzt.

>und dann entsprechend die Enable Pins schält?

Warum willst Du die Pins schälen? Die sind doch schon schön blank.
;-)

MfG Paul

von Dominik R. (drein)


Lesenswert?

Entschuldige meine blöde Frage, aber ich bin ganz neu "in der Branche":

Warum muss man ___lcdno als Byte deklarieren, wenn es diese schon 
"gibt"?
Weil ich mein, wenn ich ne neue Variable mach, muss ich ja ne Funktion 
machen, die deren WErt ausliest und etwas daraus "macht".
Also muss die schon hinterlegt sein - oder?
Warum muss man sie dann trotzdem deklarieren?

Danke schonmal:D

GRüße

von Paul Baumann (Gast)


Lesenswert?

Die Variable ___lcdno wird von der Routine zur LCD-Ansteuerung gebraucht
und auch da abgefragt.

Sie muß so heißen, weil die Routine diesen Namen erwartet.

Du mußt der Variablen den Wert 0 oder 1 zuweisen, damit die Routine 
weiß,
welches der beiden LCD Du meinst.

Wenn Du nur ein Display dran hättest, dann bräuchtest Du die Variable 
nicht,
denn dann gäbe es nur einen Enable-Eingang.
Es hätte doch keinen Sinn, eine Variable zu definieren und sie dann 
"leer"
mitfahren zu lassen. Das kostet nur Platz.

MfG Paul

von Dominik R. (drein)


Lesenswert?

Okay macht Sinn - danke für die Erklärung ;)

Gruß,

Dominik

von Dominik R. (drein)


Lesenswert?

Nochwas, wie lang darf die Leitung zwischen IC und Display max. sein, 
bei Verwendung der normalen Ports (kein I²C,...)?

von Paul Baumann (Gast)


Lesenswert?

Dominik schrob:
>wie lang darf die Leitung zwischen IC und Display max. sein,

Da wird man keine allgemeingültigen Angaben machen können.

Ich habe mal ein
Display nachträglich in eine Schaltschranktür eingebaut und es waren mit
Muß 70cm "Hosenträgerkabel" zwischen Display und Kontroller. Im Schalt-
schrank war "Stimmung", d.h. Frequenzumrichter und Schütze. Es gab keine
Störungen in der Anzeige.

Vorschlag: Mach die Strippen so lang wie Du sie brauchst und probiere es
aus.

MfG Paul

von Dominik R. (drein)


Lesenswert?

Okay, werde ich dann bevor ich das Kabel fest verlege...

Danke!

Gruß

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.