Forum: Mikrocontroller und Digitale Elektronik Ansteuerung LCD-Display


von Chandler B. (chandler)


Lesenswert?

Hey,
ich habe eine frage.
Ich möchte ein LCD-Display in Betrieb nehmen. Dort habe ich die 
Anschlüsse GND, Vdd, V0, RS, R/W, E, DB0-DB7, LED+, LED-
GND, Vdd, V0 ist klar.
die Anderen anschlüsse, sind doch ganz normale I/O pins vom 
Mikrocontroller oder? also ob ihc jetzt DB0-DB7 oder DC0-DC7 (wenn diese 
da wären) ist doch egal oder?

Eine zweite frage wäre, ob es eine art Display-Test gibt. Also das ich 
GND und Vdd anschließe und dann irgendetwas messen/beobachten kann.

Chandler

von c. m. (Gast)


Lesenswert?


von John D. (Gast)


Lesenswert?

Wahrscheinlich:
https://www.mikrocontroller.net/articles/HD44780

Hat das Display wirklich keinerlei Bezeichnung?

von Chandler B. (chandler)


Lesenswert?

ja doch, dass schon.
Aber muss DB0 (Datenleitung) vom Display an DB0 vom Mikrocontroller? 
oder kann das auch an DB1 oder was anderes?
es muss doch eigentlich nur ein I/O pin sein oder?

von John D. (Gast)


Lesenswert?

Chandler Bing schrieb:
> Aber muss DB0 (Datenleitung) vom Display an DB0 vom Mikrocontroller?

Das kannst du völlig frei wählen - musst es natürlich in deinem Programm 
berücksichtigen.

von Thomas F. (igel)


Lesenswert?

Chandler Bing schrieb:
> oder kann das auch an DB1 oder was anderes?
> es muss doch eigentlich nur ein I/O pin sein oder?

Ja, es muss nur ein IO-Pin sein.

Allerdings musst du dann in deiner Software alle Bits passend zu deinem 
Anschlussschema umsortieren, was aufwändig und fehleranfällig ist. Daher 
würde ich das vermeiden.

Alternativ haben die HD44780-Displays eine 4-Bit Ansteuerung.
Lies mal den Artikel.

von Dietmar (Gast)


Lesenswert?

Schau mal hier rein :-)

http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

dann klappts auch mit den Dingern

von Chandler B. (chandler)


Lesenswert?

Thomas Forster schrieb:
> Ja, es muss nur ein IO-Pin sein.

das ist gut.
eigenltich hätte ich auch gerne die selben pins genommen, dann hätte 
sich diese Frage nämlich erst gar nicht gestellt. Es war halt so, dass 
so ziemlich überall
RD0, RD1, RD2 für RS, RW E waren
und RB0-RB7 für die Datenleitungen.
daher ich mir ein wenig unsicher.
Leider kann ich diese paarung nicht machen, da dies mein board nicht 
hergibt.

Danke für eure Antworten

Chandler

von Cyblord -. (cyblord)


Lesenswert?

Chandler Bing schrieb:
> Thomas Forster schrieb:
>> Ja, es muss nur ein IO-Pin sein.
>
> das ist gut.

Naja. Du weißt dass die Antwort auf deine Frage rein von deiner Software 
abhängt?
Und so wie du fragst, gehe ich davon aus, dass du keine Zeile des 
Ansteuerungscodes (oder überhaupt was) selbst geschrieben hast.

Also halte dich daran, was deine Ansteuerungslib hier vorgibt.
Oft müssen mindestens die Datenleitungen alle auf demselben Port liegen.

von Chandler B. (chandler)


Lesenswert?

Cyblord ---- schrieb:
> Du weißt dass die Antwort auf deine Frage rein von deiner Software
> abhängt?

Jetzt ja

Cyblord ---- schrieb:
> Und so wie du fragst, gehe ich davon aus, dass du keine Zeile des
> Ansteuerungscodes (oder überhaupt was) selbst geschrieben hast.

Das nicht. Für das display habe ihc noch nichts gemacht. fange ich jetzt 
aber an (wenn es geheissen hätte, dass es so nicht funktioniert, hätte 
ich jetzt nicht angefangen)
(oder überhaupt was) doch eigentlich habe ich schon relativ viel. Wie 
gesagt, für das display habe ich noch fast nichts.

Cyblord ---- schrieb:
> Also halte dich daran, was deine Ansteuerungslib hier vorgibt.

Das geht ja wie gesagt nicht, da die pins bei meinem Board anders 
verbunden sind und es 'für mich' keine andere Verbindung ermöglicht.

Cyblord ---- schrieb:
> Oft müssen mindestens die Datenleitungen alle auf demselben Port liegen

Das tun sie

von Chandler B. (chandler)


Lesenswert?

Ich habe da doch noch einmal eine Nachfrage.
meine Pin-Belegung für die Daten ist
Display -> Controller
DB0 -> RG9
DB1 -> RG7
DB2 -> RG8
DB3 -> RG6
DB4 -> RG15
DB5 -> RG12
DB6 -> RG13
DB7 -> RG14

Ich weiss, dass diese Pinbelegung ein wenig durcheinander ist, jedoch 
konnte ich diese in mein Board so miteinander verbinden.

Ein Problem habe ich jetzt bei den Daten.
Jetzt weiss ich nciht, wie ich die Daten am Besten rüberschicken kann. 
Wenn ich alle Ports von B in der Reihenfolge hätte, hätte ich es 
versucht mit
1
#define Data = LATB

selbst dann müsste ich noch gucken ob es funktioniert, da ich ja nicht 
alle pins von B habe. Ist es jetzt auch irgendwie möglich das define so 
zu ändern, dass ich diese Reihenfolge bekomme?
als irgendwie
1
#define Data = {LATGbits.LATG9, LATGbits.LATG9...}


Chandler

von Cyblord -. (cyblord)


Lesenswert?

Man muss nicht alles mit defines lösen.

Das define definiert deinen Ausgangsport. Die Daten, die du dahin 
schreibst, musst du halt bitweise umsortieren um deiner Bitbelegung des 
Displays zu entsprechen. Statt umsortieren kann man sich das Byte auch 
bitweise in korrekter Reihenfolge aufbauen.

von Chandler B. (chandler)


Lesenswert?

Cyblord ---- schrieb:
> Statt umsortieren kann man sich das Byte auch
> bitweise in korrekter Reihenfolge aufbauen.

wonach müsste ich denn da suchen, damit ich an Informationen ran komme, 
wie ich es machen kann?

von Cyblord -. (cyblord)


Lesenswert?

Chandler Bing schrieb:
> Cyblord ---- schrieb:
>> Statt umsortieren kann man sich das Byte auch
>> bitweise in korrekter Reihenfolge aufbauen.
>
> wonach müsste ich denn da suchen, damit ich an Informationen ran komme,
> wie ich es machen kann?

Also komm schon. Ein Bit lesen, ein anderes Bit setzen. Mehr muss man 
nicht tun.

Du liest in deinem Quellbyte ein Bit, und wenn es 1 ist, dann setzt du 
in deinem Zielbyte ein Bit (an anderer Stelle) auf 1.
Und so das ganze Byte entlang.

Das sollte man schon beherrschen bevor man mit LCDs rumturnt. Was hast 
du denn bitte bisher gemacht?

https://www.mikrocontroller.net/articles/Bitmanipulation

: Bearbeitet durch User
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.