18. Arduino for Production!! How to Interface an LCD to the ARM Microcontroller Part 4

18. Arduino für die Produktion!! So schließen Sie ein LCD an den ARM-Mikrocontroller an – Teil 4

Lass uns den Code durchgehen und ein wenig aufräumen.

Als Erstes möchte ich Definitionen für diese Bits erstellen. Dies wird uns auch helfen zu verstehen, wie die Schaltung mit dem Mikrocontroller und dem LCD verbunden ist, d.h. welche Pins und Ports wohin gehen, welche Datenpins und die Freigabe-, Lese- und Schreib- sowie Registerauswahl.

Jetzt richten wir die Defines hier oben ein. Ich möchte etwas sehr Verständliches erstellen, entsprechend der Art und Weise, wie die Schaltung verdrahtet ist, und das wären LCD D Null bis D Sieben als meine Namen für die Defines. Nennen wir dies also LCD D0, 10, das wäre zwölf, und wir können den LCD D0-Port definieren, der GPIOB sein wird. Wir werden dies für jede Verbindung tun, sodass wir einfach kopieren und einfügen können.

Der nächste Pin ist Nummer dreizehn und es ist auch B, das ist D-eins, D zwei an Pin vierzehn Port B, D drei an Pin fünfzehn und das ist Port B, und jetzt für Port C, D vier und Pin Nummer sechs, sieben, acht und neun, für D fünf, D sechs und D sieben, und die Pins, auf die ich mich beziehe, sind diese Pins 12, 13, 14, 15, 6, 7, 8 und 9, die zu diesen LCD D0, D1, D2, D3, D4, D5, D6 und D7 gehen, so dass es wirklich zeigt, wie die Schaltung zusammengebaut ist, und wenn Sie eine Änderung in der Schaltung vornehmen müssen, müssen Sie nur den Pin für den D0 ändern, zu welchem Pin er gehen soll und zu welchem Port er gehen soll, und nichts am Programm muss geändert werden, denn es wird immer hier eingestellt und das Programm wird diese Defines innerhalb der Funktion verwenden.

Wir werden diesen Teil nehmen und ihn in eine eigene Funktion packen und diese Defines in dieser Funktion verwenden. Anstatt einen Prototyp zu erstellen, werde ich die Funktion hier oben erstellen. Zu diesem Zeitpunkt denke ich nicht, dass sie einen Rückgabewert haben muss, also werden wir einen Void haben, und ich werde sie "Send Bits To Port and Pin" nennen, und ich werde einige Eingaben für diese Funktion haben, und es wird sein, wenn wir die Ports übergeben wollen, können wir eine Vorstellung davon bekommen, welchen Datentyp sie haben, indem wir über einen der Ports fahren, man sieht, dass es vom GPIO-Typ "Def" ist, und man wird sehen, dass es ein Zeiger ist. Ich werde dies einfach kopieren und einfügen und es dann Port nennen. Dies wird der tatsächliche Variablenname sein.

Als Nächstes werden wir die tatsächliche Pin-Nummer einführen. Diese Nummer wird nur eine ziemlich kleine Zahl sein, ich werde dafür einfach einen Hinweis verwenden und dann müssen wir das Bit tatsächlich senden, ob es wahr oder falsch ist, also nur das, das wäre ein, okay, ich weiß nicht, ob ich in dieser Sprache Bull verwenden kann, ich verwende eine Bitmischung unsigned und es wird ich werde es vorerst "Bit State" nennen, ich kenne noch keine bessere Variable, also nehmen wir einfach diese Bedingung und kopieren sie und machen das. Also, wir werden den Port hier ersetzen, anstatt die Ports zu verwenden, die wir fest codiert hatten. Wir werden ihn übergeben und dann werden wir, denke ich, das "Bit Reset Register" verwenden. Also werden wir versuchen, denn wir sehen, dass diese Zahl an der fünften Position ist, nein, an der vierten Position null, eins, zwei, eigentlich an der dritten Position und diese ist eigentlich ganz hier drüben, also wollen wir dieselbe Pin-Nummer auf dieselbe Weise verwenden, was wir tun können, wir können tatsächlich einfach das S herausnehmen, wir haben ein BRR und man sieht, dass es an derselben Position ist, denn dies ist das Bit Reset Register und dies ist das Bit Set and Reset Register und das Bit Reset Register hat nur sechzehn Bits, es verwendet nur die ersten sechzezehn Bits und Bit Reset verwendet alle zweiunddreißig Bits, aber die Bits sechzehn bis zweiunddreißig sind die Reset Bits. Okay, jetzt müssen wir dies in das Reset Register ändern und wir werden tatsächlich die Pin-Nummer hier einfügen, wir werden die Y-Schiebeoperation verwenden und diese Nummer entfernen, indem wir die Pin-Nummer, sagen wir zwölf, einfügen, wird sie diese Pin-Nummer in eine sehr lange zweiunddreißig Bit-Zahl an der Position einfügen, wenn die Pin-Nummer sagen wir neun ist, wird sie hierher kommen und null links verschieben 0, 1, 2, 3, 4, 5, 6, 7, 8 und dann neun, so dass sie tatsächlich eine Eins genau hier einfügen wird, wo wir sie wollen, was wir beim Setzen und Zurücksetzen getan haben, als wir die LEDs anfänglich angezündet haben, und für das Bit-Reset werden wir dasselbe tun, wir müssen diesen Teil davon eigentlich nicht ändern, weil wir am selben Pin-Nummer zurücksetzen wollen, da wir das Bit Reset Register und das Bit Set Reset Register verwenden. Das Einzige, was wir jetzt ändern müssen, ist die Bedingung und das wird der Zustand sein. Also, wir haben einen saubereren Code für dieses Code-Stück hier erstellt, also lasst uns das aufrufen. Ich werde einfach meine Prototyp-Funktion nehmen und sie hier kopieren und einfügen, und für diese werden wir Port B GPIOB verwenden und wir werden verwenden, die Pin-Nummer wird zwölf sein und der Bit-Zustand wird dieser sein, mal sehen, warum dies nicht, oh ich habe den Void hier, okay, also macht dies dasselbe wie all dies und wir haben so gemacht, eigentlich möchte ich nicht, dass zwölf dort ist, ich möchte die Defines verwenden, also wäre das Define, dies wäre für die Ports und Pin okay, das ist es, was ich wirklich will D Null, Zehn wird Zwölf sein, man kann sehen, dass es hier steht, und der Port wird der Port für sein, es ist wirklich schwierig, dies so zu lesen, aber Sie werden sehen, dass null acht und die (nicht hörbar 08:02) Position schauen Sie hier, es sollte dasselbe zeigen, die acht und die vierte, also ist es der richtige Port wie hier definiert, okay, wir können diesen Teil davon löschen, und wir werden einfach alle diese kopieren und einfügen. Wir sollten acht davon haben, dies sollte D-Null und D-eins, zwei, zwei, drei, drei, vier, vier, fünf, fünf, sechs, sechs und die letzte sieben und sieben sein, dies wird sich auch ändern, also werden wir die Maske in Bits aufsteigen lassen, so dass wir dieses Bit innerhalb des Zeichens testen, wir testen mit diesem Bit mit dem Zeichen und so weiter. Wir haben gerade eine Menge Code entfernt und einen viel saubereren und lesbareren gemacht. Wir könnten dies auch aufräumen, wir könnten dies in eine eigene Funktion packen und wir werden das auch tun, aber ich möchte dies zuerst testen, um sicherzustellen, dass es funktioniert. Ich werde es bauen, es sieht so aus, als hätten wir keine Fehler, alles ist in Ordnung. Ich werde es auf den Mac Controller flashen und wie Sie sehen, haben wir die gleichen Ergebnisse, wir haben eine mit den fünf Nullen und dann die Eins und dann die Null. Also, unser Programm funktionierte und wir mussten die spezifischen Ports oder Pins hier nicht tatsächlich eingeben, alles, was wir tun, ist, das Zeichen zu testen, wir testen die Position des Zeichens und senden es an die D-Null bis D sieben, Ports und Pins, die diesen Pins zugewiesen sind, und nur wenn wir dies betrachten, können wir sehen, wie man das LCD mit diesen Defines verdrahtet, hier müssen Sie die Zehn, Zwölf an D-Null verdrahten, Zehn Dreizehn von Port B an D eins und so weiter und wir geben hier im Code nichts davon an. Im nächsten Video werden wir uns damit befassen, dies in eine einzelne Funktion zu packen, damit wir verschiedene Zeichen ausgeben können, und wir werden auch diesen Code aufräumen, weil wir wollen, dass dieser derselben Konvention folgt, indem wir auch diese Defines verwenden.

[[TUTORIALMENU(tutorial-arm" frameborder="0" allowfullscreen>

Zurück zum Blog

Hinterlasse einen Kommentar