Ach ja, sorry!
Das steht in der Doku zum AM32 Board:
Code:3.1.6. LC-Display Das LC-Display ist ideal um Sensorwerte und Statusmeldungen auszugeben, während der Roboter nicht am Rechner angeschlossen ist. Die Ausgabe auf das LC-Display funktioniert ähnlich wie bei der seriellen Schnittstelle – aber natürlich gibt es ein paar kleine Besonderheiten. Schauen Sie sich am besten die Beispielprogramme an, dann wird schnell klar wie man das LCD verwenden kann. void initLCD(void) Diese Funktion muss immer zu Beginn des Programms aufgerufen werden, um das LCD zu initialisieren. void setLCDD(uint8_t lcdd) Diese Funktion (und write4BitLCDData) benötigen Sie normalerweise nicht – wir beschreiben Sie hier nur um kurz zu erläutern wie das Display angesteuert wird. Das LCD wird im 4-Bit Modus betrieben. Es werden daher nur vier Datenleitungen und zwei Steuerleitungen benötigt (Enable (EN) und Register Select (RS), Read/Write (R/W) ist dauerhaft auf Masse geschaltet wodurch das LCD ausschließlich beschrieben werden kann. Lesen ist nicht möglich und auch nicht notwendig). Die vier Datenleitungen sind wie die LEDs am Schieberegister angeschlossen, um Ports zu sparen. Analog zur setLEDs Funktion, setzt setLCDD die Datenleitungen des LCDs. Allerdings setzt diese Funktion auch kurz das Enable Signal, damit das LCD die Daten übernimmt. void write4BitLCDData(uint8_t data) Da wir dem LCD eigentlich 8 Bit Befehle und Daten senden müssen, müssen die zu übertragenden Bytes aufgeteilt werden. Die Funktion write4BitLCDData übernimmt genau das – 8 Bit Daten werden in zwei 4 Bit „Nibbles“ aufgeteilt und übertragen. - 14 - RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library void writeLCDCommand(uint8_t cmd) Diese Funktion ruft write4BitLCDData auf, setzt allerdings die RS Leitung auf low, um einen Befehl an das LCD zu senden. void clearLCD(void) Sendet den Befehl zum Löschen des Display Inhalts an das LCD. void clearPosLCD(uint8_t line, uint8_t pos, uint8_t length) Löscht einen bestimmten Bereich des Displays. Die Parameter sind: Zeile, Startposition in der Zeile und Länge des zu löschenden Bereichs. Beispiel: clearPosLCD(0,10,5); // löscht in der ersten Zeile des Displays // die letzten 5 Zeichen! void setCursorPosLCD(uint8_t line, uint8_t pos) Setzt den Textcursor an eine bestimmte Position auf dem Display. Der Parameter line kann 0 für die obere, oder 1 für die untere Zeile sein. Der Paramter pos darf für 2x16er LCDs im Bereich von 0 bis 15 liegen. void writeCharLCD(uint8_t ch) Sendet ein einzelnes Zeichen an das LCD – das funktioniert analog zur writeChar Funktion für die serielle Schnittstelle. Allerdings muss man hier zunächst sicherstellen das der Cursor des Displays an der richtigen Position ist, denn sonst sieht man den Text nicht! Beispiel: setCursorPosLCD(1,5); // positioniere Cursor in der zweiten Zeile, Zeichen 5. writeCharLCD('R'); // jetzt wird „RP6“ ausgeben, und zwar writeCharLCD('P'); // beginnend an der Cursorposition! writeCharLCD('6'); void writeStringLCD(char *string) Analog zur entsprechenden Funktion für die serielle Schnittstelle, sendet write- StringLCD eine nullterminierte Zeichenkette aus dem SRAM an das LCD. Also sollten Sie diese Funktion nur verwenden, wenn der Text auch wirklich im RAM liegt und nicht nur fest vordefiniert ist. Dazu ist das Makro: writeStringLCD_P(STRING) besser geeignet, da hier der Text direkt aus dem Flashspeicher gelesen wird, ohne den Umweg über den Arbeitsspeicher. void writeStringLengthLCD(char *string, uint8_t length, uint8_t offset) Mit dieser Funktion kann ein Text mit einer bestimmten Länge auf dem LCD ausgegeben werden. Die Paramter sind identisch zu denen der entsprechenden Funktion für die serielle Schnittstelle. showScreenLCD(LINE1,LINE2) Um die Textausgabe auf dem LCD etwas zu vereinfachen, kann man mit dieser Funkti- - 15 - RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library on beide Zeilen des LCDs mit nur einem Aufruf beschreiben. Der Cursor wird automatisch richtig platziert und der Inhalt des Displays vorher gelöscht. Beispiel: showScreenLCD("LCD Zeile 1", "LCD Zeile 2"); void writeIntegerLCD(int16_t number, uint8_t base) Die schon von der seriellen Schnittstelle bekannte Funktion um Zahlen in den Formaten BIN, OCT, DEC oder HEX auf dem LCD auszugeben. void writeIntegerLengthLCD(int16_t number, uint8_t base, uint8_t length) Auch writeIntegerLengthLCD ist bis auf den Namen identisch zur bereits bekannten Funktion für die seriellen Schnittstelle.







Zitieren

Lesezeichen