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
Wahrscheinlich: https://www.mikrocontroller.net/articles/HD44780 Hat das Display wirklich keinerlei Bezeichnung?
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?
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.
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.
Schau mal hier rein :-) http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD dann klappts auch mit den Dingern
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
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.
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
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
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.