Forum: Mikrocontroller und Digitale Elektronik LCD 4*27 mit Bascom


von Christian (Gast)


Lesenswert?

Hallo,
wie kann ich mein LCD 4*27 mit Bascom ansteuern? Bei der LCD
Konfiguration in Bascom wird 4*27 nicht unterstützt. Wie kann man das
dann anders machen?

Christian

von anfänger (Gast)


Lesenswert?

schonmal mit "Config Lcd = 27 * 4" probiert?

von Michael (Gast)


Lesenswert?

hast du ein display mit nur einem hd44780 controller (glaub ich nich)
oder mit 2(glaub ich eher)

mit 2 controller habe ich es nie geschafft das teil zum laufen zu
bringen.....und mit einem controller gibts eigentlich nicht

von crazy horse (Gast)


Lesenswert?

muss 2 Controller haben, einer kann nur max. 80 Zeichen verwalten.
Dementsprechend muss das Display 2 enable-Anschlüsse haben. Kenne mich
mit Bascom nicht aus, aber versuche mal (falls vorhanden) erstmal das
Display mit 4x40 zu initialiesieren/betreiben.
Ansonsten: library anpassen.

von Dirk (Gast)


Lesenswert?

Hi,

da sind 2 Hdxxx drauf.

Da musste wohl selbst die Ansterung programmieren .

Mfg
Dirk

von anfänger (Gast)


Lesenswert?

man könnte doch die enable-leitung umleiten, oder? je nachdem, welche
displayhälfte man ansteuern will. hat das schonmal jemand ausprobiert?

von Florian (Gast)


Lesenswert?

Ich nehme an dass du von den Pollin Display sprichst die es vor einiger
zeit mal gab.
Die sollten sich wie normale Displays ansteuern lassen, mit der kleinen
ausnahme das man die oberen 2 zeilen wie ein "eigenes" Display und die
unteren 2 zeilen wie ein "eigenes" display ansteuern muss.
Dafür müsste es eigentl. reichen die 2 enable leitungen getrennt
anzusteuern und den rest so wie immer.
Beim Init kann man einfach beide E-Leitungen gleichzeitig benutzen und
initialisiert somit 2 display auf einen schub.
mfg Flo

von Christian (Gast)


Lesenswert?

@ Michael: ja, es sind zwei Controller drauf. Einer für die obere Hälfte
und einer für die untere Hälfte

@ Florian: Ja, das Display ist von Pollin. Gibt's aber bei ebay auch,
nur teuerer :-)

wie ist das gemeint: Beim Init beide E-Leitungen gleichzeitig benutzen?
Und muss ich dann als 4*40 initialisieren, oder?

mfg Christian

von Florian (Gast)


Lesenswert?

Hmm ich hab mit basic keine Erfahrung.
Hab mir meine lcd-routinen alle selber gestrickt(in c).
Theoretisch müsstest du beide als 2x27 initialisieren.
Dabei reicht es einmal die init zu machen und einfach beide E-Leitungen
gleichzeitig zu triggern.
also init-code dann beide E auf high und dann wider auf low zurück.
Und so weiter mit der komplettetn initialisation.
wenn du auf die ober hälfte was schreiben willst benutzt du danach blos
die E-Leitung für den oberen.
Mit der unteren hälfte natürlcih genauso.
mfg Flo

von Michael (Gast)


Lesenswert?

?

es sind doch 2 E pins/leitungen am display zu belegen, aber es geht
doch nur eine E-Leitung vom controller weg.also wie das machen, daß mit
einem kabel  vom controller kommend 2 kontakte gespeist werden?

von crazy horse (Gast)


Lesenswert?

üblicherweise wird das Display im 4bit-Modus an einem 8bit-Port
betrieben (R/W, RS, E, 4Datenbits). Passt doch noch ein Bit für die 2.
enable-Leitung rein.
Ist ein reines Softwareproblem. Wie schon gesagt, falls der Compiler
4x40-Displays unterstützt, gehts problemlos.

von Christian (Gast)


Lesenswert?

Der Compiler unterstützt 4x40, nur wie bring ich dem das bei, dass jetzt
auf einmal zwei E-Leitungen vorhanden sind?

von Michael (Gast)


Lesenswert?

nu bin ich aber buff:

halten wir fest: wir haben am controller R/W, RS, E, 4Datenbits also 8
leitungen.
am display haben wir 16 kontakte: R/W, RS, E, 4Datenbits das alles mal
2 (sind ja 2 kontroller)

und wie ist es nu zu machen, daß ich beide displays anschließen und
betreiben kann? mit lötbrücken?
da das ganze ja in bascom laufen soll, fällt assembler etc flach.
da es schon ein lib von bascom gibt für 2grafik-kontroller an einem
avr, sollte da ein anfang zu suchen sein (lcd4e2.lib)

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

? @ Michael: wieso sollte man die Datenleitungen auch doppelt haben?
Datenblatt - dann wird's verständlicher

von Christian (Gast)


Lesenswert?

@ Michael: noch was: R/W, RS, E, und 4Datenbits sind nur 7
Datenleitungen - R/W ist nur eine Leitung (R-read bzw. W-write)

von crazy horse (Gast)


Lesenswert?

When you want to have less code you need fixed pins for the LCD display.

With the statement $LIB "LCD4E2.LBX" you specify that the LCD4.LIB
will be used.
The following connections are used in the asm code:
Rs = PortB.0
RW = PortB.1        we don’t use the R/W option of the LCD in this
version so connect to ground

E = PortB.2
E2 = PortB.3        the second E pin of the LCD
Db4 = PortB.4       the data bits must be in a nibble to save code
Db5 = PortB.5
Db6 = PortB.6
Db7 = PortB.7

Auszug aus der Bascom-Hilfe (und das , obwohl ich gar kein Bascom
habe:-)
Noch Fragen?

von Florian (Gast)


Lesenswert?

Fürs verständnis wärs sicher mal nicht schlecht sich sowas selber zu
basteln.
Wo ist da der Witz drann wenn man vorgefertigte routinen aus bascom
nimmt?
mfg Flo

von crazy horse (Gast)


Lesenswert?

Hm, warum nimmst du überhaupt einen Compiler? Kannst auch alles zu Fuss
(d.h. in Assembler) machen und auch auf vorgefertigte Assemblerroutinen
verzichten, alles selber schreiben.
Ich persönlich sehe keinen echten Vorteil darin, jedesmal das Rad neu
zu erfinden und Zeit zu verschwenden mit Sachen, die andere schon zur
Zufriedenheit gelöst haben und dieses dankenswerterweise zur Verfügung
stellen. Aber keiner hindert dich, dass selbst zu tun.
Die Ursprungsfrage war: "wie kann ich mein LCD 4*27 mit Bascom
ansteuern?"

von Christian (Gast)


Lesenswert?

@ Flo: du hast schon Recht, für's Verständnis wär's besser sich
hinzusetzen und die Routine(n) selbst zu stricken, aber man braucht das
Rad ja nicht zweimal zu erfinden, oder?

Bin grad dabei die Lib anzupassen, denn auch das Vorgefertigte
funktioniert nicht auf Anhieb! Bei mir zumindest ned :-)

mfg Christian

von Florian (Gast)


Lesenswert?

Hmm das mit dem Rad zweimal erfinden stimmt schon so. Aber zumindest ich
mach das weil mich die Prozesse und so weiter interessieren.
Und ich empfind grad das Lösen jedes einzelnen problems als spannend.
Und wenn man einmal die routine hat wird man sie nie wieder schreiben
weil man sie dann einfach in ein .c packt und gut is;)
mfg Flo

von Michael (Gast)


Lesenswert?

der witz ist, das es funktioniert - oder warum willst du das rad das 2te
 mal erfinden?

wie gesagt, mit der lib habe ich streng nach vorschrift schon
gearbeitet - das bild bleibt weg.
da ich schon mit vielen "normalen" lcd's problemlos gearbeitet habe,
bin ich bissel
sauer...
ja gut, hab mich ein bissel vertan in leitungssache, wie schon gesagt,
ist eine weile her als ich frustriert aufgegeben habe, weil nichts auf
dem bildschirm erschien....
ich denke mal es liegt an der verdrahtung des ganzen, vielleicht
sollten wir mal einen schaltplan ausarbeiten
ich hatte halt rs, r/w und e1 sowie D4-7 mit dem avr verbunden,
in optionen das richtig passende dazu eingestellt und die lib
eingebunden...dennoch kein reaktion am display

liegts an meinen bescheidenen lötkenntnissen mit rm 1,27 oder ist da
ein denkfehler bei mir?


aber vielleicht finden wir ja jetzt eine lösung des ganzen hier....

von Christian (Gast)


Lesenswert?

Hab mein Display etz endlich soweit, dass ich auch den Text ausgeben
kann, den ICH will!!!*puh* jetzt kann ich endlich ins Bett :-)

-> Also, das mit der LIB hat bei mir nicht hingehauen, weiß nicht
warum, aber hat irgendwie nicht funktioniert. Ich hab zwar in der lib
was verändert (anstatt PortB -> PortD ) aber trotzdem ohne Erfolg... es
wurde nix, rein gar nix angezeigt :(

@ crazy horse: danke für den Tip mit 40*4. Das LCD ist als 40x4
initialisiert (mit E und E2) und funktioniert wunderprächtig.

Danke nochmal an alle!
mfg Christian

von Michael (Gast)


Lesenswert?

das hört sich ja gut an, kannst du auch sagen, wie du es genau gemacht
hast. Ich meine die Verdrahtung und die software.
Besten Dank!

von Christian (Heigman) (Gast)


Lesenswert?

Klar, kein Problem.

Also so wie's ich jetzt gemacht hab, ist die Verdrahtung eigentlich
egal (im Gegensatz zur LBX!!). Man verdrahtet das Ganze wie ein
"normales" LCD, nur dass man eben zwei Controllerleitungen hat.
Dementsprechend bei "Config Lcdpin" auch den zweiten Controller
beachten !!

Wichtig ist, dass man, bevor das LCD konfiguriert wird eine Variable
"___lcdno" als Bit definiert! (mit der alias-Funktion kann man dann
noch einen schöneren Namen vergeben :-) ) Mit dieser Variablen steuert
man dann das Display.
Bei ___lcdno = 0 wird der Controller für die obere Hälfte ausgewählt,
bei ___lcdno = 1 der Controller für die untere Hälfte.

Beispiel:
.
.
.
Dim ___lcdno as Bit
Config Lcdpin = Pin, E = Portb.0 , E2 = Portb.1 , Rs = Portb.2 ,usw...
Config Lcd = 40*4
Initlcd
Cursor Off
.
.
.
das war's dann eigentlich auch schon :-)

Wenn man dann was auf's LCD schreiben will, zuerst den Controller
auswählen und dann ganz "normal" schreiben...

Beispiel:

___lcdno = 0
Locate 1 , 1
Lcd "dein Text"            'Text in Zeile 1
Locate 2 , 1
Lcd "Text"                 'Text in Zeile 2

___lcdno = 1
Locate 1 , 1
Lcd "dein Text"            'Text in Zeile 3
...

Soviel zur Erklärung. Sollte was falsch oder unverständlich sein,
einfach fragen!
Wenn der Wunsch besteht, kann mein Testprogramm per email zugesendet
werden, oder ich kann's auch hier irgendwo ablegen, wenn ich weiß wo.

Ich hoffe, dass ich weiterhelfen konnte und danke an alle meine Helfer
hier im Forum!

mfg Christian (Heigman)

von anfänger (Gast)


Lesenswert?

hi. super beschreibung. stells doch in die codesammlung, da isses am
besten aufgehoben.

von Christian (Heigman) (Gast)


Lesenswert?

es gibt etz noch ne Ergänzung bzw. änderung zu meiner Beschreibung!!

Es muss so lauten:
...
Config Lcd 40*4

___lcdno = 0             'ober Displayhälfte initialisieren
Initlcd
Cursor Off

___lcdno = 1             'untere Displayhälfte initialisieren
Initlcd
Cursor Off
...

so funktioniert's 100%

mfg Christian (Heigman)

von Michael (Gast)


Lesenswert?

perfekt, es geht wieder nicht.....

die beiden reihen schwarzer balken bleiben schwarz. bin mir sicher, daß
die verkabelung funktioniert.

witzig ist, wenn ich ___lcdno mal als __lcdn (also nur 2 unterstriche)
deklariere, gibts compilerfehlermeldungen, daß nicht genügt platz ist
für "__lcdno"...ich liebe es...


es muß wirklich keine andere lib eingebunden werden? ist es eigentlich
egal wie ich die pinreihenfolge nehme? bei mir ist zb E2 =portb.2 und
rs=portb.1...
ich hab ein 2313 als versuchsboard genommen.....


wenn du, christian, mal bitte an m_herr@gmx.de deine datei schicken
könntest, wäre ich dir sehr dankbar...
Besten Dank

von Christian (Heigman) (Gast)


Lesenswert?

nö, keine LIB eingebunden.
Wenn die zwei Balken schwarz bleiben, wird das LCD höchstwahrscheinlich
nicht richtig initialisiert!
Die Pinreihenfolge ist egal.
Mein Versuch läuft mit nem 4433er mit Eigenbau - Board

mfg
Christian

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.