LCD-I2C-Modul zum Anschluss an Arduino. LCD-I2C-Modul zum Anschluss an den Arduino-LCD-Anschlussbildschirm hinter der i2c-Schnittstelle

LCD Bildschirm- Häufiger Gast von Arduino-Projekten. Bei Faltschaltkreisen kann es jedoch zu Problemen mit fehlenden Arduino-Anschlüssen kommen, da ein Bildschirm mit vielen Kontakten angeschlossen werden muss. Der Ausweg aus dieser Situation kann sein I2C/IIC Ein Adapter, der einen praktisch standardmäßigen Arduino 1602-Bildschirm mit zusätzlichen 4 Pins an Uno-, Nano- oder Mega-Boards verbindet. In diesem Artikel erfahren Sie, wie Sie einen LCD-Bildschirm mit einer I2C-Schnittstelle anschließen, wie Sie auf Bibliotheken zugreifen, ein kurzes Beispiel schreiben und sich typische Anwendungen ansehen.

Flüssigkristallanzeige LCD 1602 Es ist die erste Wahl für die Darstellung von Symbolreihen in verschiedenen Projekten. Es ist kostengünstig, mit verschiedenen Modifikationen mit unterschiedlichen Hintergrundbeleuchtungsfarben können Sie ganz einfach vorgefertigte Bibliotheken für die Arduino-Skizze erstellen. Der größte Nachteil dieses Bildschirms ist jedoch die Tatsache, dass das Display über 16 digitale Elemente verfügt, von denen es mindestens 6 gibt. Dieser LCD-Bildschirm ohne i2c ist ein ernstes Problem für Arduino Uno- oder Nano-Boards. Wenn keine Kontakte vorhanden sind, müssen Sie ein Arduino Mega-Board kaufen oder die Kontakte schützen, auch für den Anschluss des Displays über i2c.

Kurze Beschreibung der LCD 1602-Pins

Schauen wir uns die LCD1602-Technologie genauer an:

Die Schale der Reben hat ihre eigene Bedeutung:

  1. Masse GND;
  2. Kharchuvannya 5;
  3. Einstellen des Monitorkontrasts;
  4. Team, Daten;
  5. Aufzeichnen und Auslesen von Daten;
  6. Aktivieren;

7-14. Datenleitungen;

  1. Plus-Unterstützung;
  2. Minusbeleuchtung.

Display-Spezifikationen:

  • Symbolische Darstellungsart – die Möglichkeit der Einführung von Symbolen;
  • LED-Hintergrundbeleuchtung;
  • Controller HD44780;
  • Live-Spannung 5V;
  • Format 16x2 Zeichen;
  • Betriebstemperaturbereich: -20 °C bis +70 °C, Lagertemperaturbereich: -30 °C bis +80 °C;
  • Lassen Sie mich um 180 Grad schauen.

Anschlussplan von LCD an Arduino-Board ohne i2C

Das Standardschema zum direkten Anschluss eines Monitors an einen Arduino-Mikrocontroller ohne I2C sieht folgendermaßen aus.

Aufgrund der Vielzahl der angeschlossenen Kontakte ist möglicherweise nicht genügend Platz für die Aufnahme der benötigten Elemente vorhanden. Der I2C-Schalter ändert die Anzahl der Darts auf 4 und die Anzahl der belegten Pins auf 2.

Wo kann man LCD-Bildschirme und -Abschirmungen für Arduino kaufen?

Der LCD-Bildschirm 1602 (und Version 2004) erfreut sich großer Beliebtheit, sodass Sie ihn sowohl in lokalen Online-Shops als auch auf ausländischen Märkten problemlos finden können. Werfen wir einen Blick auf die verfügbaren Optionen:

LCD1602+I2C-Modul mit blauem Bildschirm, kombiniert mit Arduino Ein einfaches LCD1602-Display (grüne Hintergrundbeleuchtung) günstiger als 80 Rubel Großer LCD2004-Bildschirm mit I2C HD44780 für Arduino (blaue und grüne Hintergrundbeleuchtung)
Display 1602 mit IIC-Adapter und blauen Lichtern Eine weitere Version des LCD1602 mit einem angelöteten I2C-Modul Port IIC/I2C/TWI/SPI-Adaptermodul für Bildschirm 1602, geeignet für Arduino
Display mit RGB-Schaltern! LCD 16×2 + Tastatur + Buzzer Shield für Arduino Schild für Arduino mit Tasten und Bildschirm LCD1602 LCD 1602 LCD-Display für 3D-Drucker (Smart Controller für RAMPS 1.4, Text LCD 20×4), SD- und MicroSD-Kartenlesermodul

Beschreibung des I2C-Protokolls

Lassen Sie uns zunächst kurz über den Anschluss des Displays an den Arduino über einen i2c-Adapter sprechen. Lassen Sie uns kurz über das i2C-Protokoll selbst sprechen.

I2C/IIC(Inter-Integrated Circuit) ist ein Protokoll, das ursprünglich entwickelt wurde, um integrierte Schaltkreise in der Mitte eines elektronischen Geräts zu verbinden. Das Design gehört der Firma Philips. Das I2C-Protokoll basiert auf einem Vicorstan-8-Bit-Bus, der für die Verbindung von Blöcken in der Elektronik, die ihn steuern, und dem Adressierungssystem erforderlich ist, das über dieselben Leitungen mit den Außen- und Nebengebäuden verbunden werden kann. Wir liefern einfach Daten an das eine oder andere Gerät und fügen den Datenpaketen die Kennung des erforderlichen Elements hinzu.

Die einfachste I2C-Schaltung kann ein kabelgebundenes Gerät (normalerweise ein Arduino-Mikrocontroller) und viele Geräte (z. B. ein LCD-Display) aufnehmen. Jedes Gerät hat eine Adresse im Bereich von 7 bis 127. Zwei Geräte mit derselben Adresse müssen sich nicht unbedingt im selben Stromkreis befinden.

Das Arduino-Board unterstützt i2c auf Hardwareebene. Sie können A4- und A5-Pins verwenden, um Geräte zu verbinden, die dieses Protokoll verwenden.

Im I2C-Roboter sehen Sie eine Reihe von Vorteilen:

  • Die Arbeit erfordert mindestens 2 Leitungen – SDA (Datenleitung) und SCL (Synchronisationsleitung).
  • Anschließen einer großen Anzahl kabelgebundener Geräte.
  • Die Stunde der Unruhe ändern.
  • Zur Steuerung des gesamten Gerätesatzes ist nur ein Mikrocontroller erforderlich.
  • Beliebig viele Mikroschaltungen, die an einen Bus angeschlossen sind, sind nur von einer Grenzkapazität umgeben.
  • Eine hohe Datenschonung durch einen speziellen Filter unterdrückt Spritzer, die in den Schaltkreisen entstehen.
  • Ein einfaches Verfahren zur Diagnose auftretender Fehler und zur Behebung von Fehlern.
  • Der Bus ist bereits im Arduino selbst integriert, sodass kein weiterer Ausbau der Busschnittstelle erforderlich ist.

Nedoliky:

  • Die Grundvorspannung der Leitung beträgt 400 pF.
  • Es ist wichtig, den I2C-Controller zu programmieren, da sich viele verschiedene Geräte am Bus befinden.
  • Bei einer großen Anzahl von Geräten wird es schwierig, den Fehler zu lokalisieren, da eines davon einen Low-Level-Faktor installiert.

i2c-Modul für LCD 1602 Arduino

Der beste und einfachste Weg, ein i2c-Display in Arduino zu installieren, ist der Kauf eines vorgefertigten Bildschirms mit integriertem Protokoll. Aber solche Bildschirme können den Gestank nicht ertragen, das ist nicht billig. Und die Achse verschiedener Standardbildschirme hat bereits große Festigkeit hervorgebracht. Daher ist die günstigste und beliebteste Option heute der Kauf und Austausch eines benachbarten I2C-Moduls – eines Adapters, der so aussieht:

Auf einer Seite des Moduls befinden sich i2c-Pins – Masse, Leben und 2 für die Datenübertragung. Von einem anderen Adapter aus werden wir die Rosen des äußeren Lebens nutzen. Und natürlich gibt es auf der Platine eine blanke Unterseite, zusätzlich ist das Modul mit Standardkomponenten des Bildschirms verlötet.


Um eine Verbindung zur Arduino-Zahlung herzustellen, verwenden Sie die i2c-Abmeldung. Bei Bedarf schließen wir eine externe Versorgung zur Beleuchtung an. Mit Hilfe eines eingebauten Trimmwiderstands können wir die Kontrasteinstellungen J anpassen

Auf dem Markt finden Sie LCD 1602-Module mit gelöteten Adaptern, deren Installation so weit wie möglich vereinfacht wird. Wenn Sie den gleichen Adapter gekauft haben, müssen Sie ihn vorher an das Modul anlöten.

Anschließen des RK-Bildschirms an Arduino über I2C

Zum Anschließen benötigen Sie das Arduino-Board selbst, ein Display, ein Steckbrett, Anschlüsse und ein Potentiometer.

Wenn Sie einen speziellen i2c-Adapter verwenden, müssen Sie diesen zunächst an das Bildschirmmodul anlöten. Es ist wichtig, dort Gnade zu haben, man kann sich auf ein solches Vorhaben einlassen.


Ein RCD-Monitor mit i2c-Unterstützung wird angeschlossen, bevor die zusätzlichen vier Darts bezahlt werden – zwei Darts für Daten, zwei Darts fürs Leben.

  • Der GND-Anschluss ist mit GND auf der Platine verbunden.
  • VCC liegt bei 5V.
  • SCL ist mit Pin A5 verbunden.
  • SDA ist an Pin A angeschlossen.

Das ist alles! Lange Reisenetze, in denen man sich leicht verlieren kann. In diesem Fall können wir einfach die gesamte Komplexität der Implementierung des i2C-Protokolls den Bibliotheken anvertrauen.

Bibliotheken für Roboter mit i2c-LCD-Display

Um zwischen Arduino und LCD 1602 über den I2C-Bus zu kommunizieren, benötigen Sie mindestens zwei Bibliotheken:

  • Die Wire.h-Bibliothek für die Arbeit mit I2C ist bereits im Standard-Arduino-IDE-Programm enthalten.
  • Mit der Bibliothek LiquidCrystal_I2C.h, die zahlreiche Befehle zur Steuerung eines Monitors über den I2C-Bus enthält, können Sie eine einfachere und kürzere Skizze erstellen. Es ist notwendig, zusätzlich die Bibliothek zu installieren. Nach dem Anschließen des Bildschirms müssen Sie die Bibliothek LiquidCrystal_I2C.h installieren

Nachdem wir alle notwendigen Bibliotheken mit der Skizze verbunden haben, erstellen wir ein Objekt und können seine Funktionen anpassen. Zum Testen ist es wichtig, eine Standardskizze am Kolben zu verwenden.

#enthalten #enthalten // Bibliotheksverbindungen //#include // Anschließen einer alternativen Bibliothek LiquidCrystal_I2C lcd(0x27,16,2); // Geben Sie die I2C-Adresse (den breitesten Wert) und die Bildschirmparameter an (für LCD 1602 – 2 Zeilen mit jeweils 16 Zeichen //LiquidCrystal_PCF8574 lcd(0x27); // Option für die PCF8574-Bibliothek void setup() ( lcd. init (); // Initialisieren der Anzeige lcd.backlight(); // Anschließen der Hintergrundbeleuchtung lcd.setCursor(0,1); // Setzen des Cursors auf den Kopf einer anderen Zeile .print("ArduinoMaster"); // Text in eine andere Zeile eingeben)

Beschreibung der Funktionen und Methoden der LiquidCrystal_I2C-Bibliothek:

  • home() und clear() – die erste Funktion ermöglicht es Ihnen, den Cursor an den oberen Bildschirmrand zu drehen und gleichzeitig alles anzuzeigen, was zuvor auf dem Monitor war.
  • write(ch) – ermöglicht es Ihnen, ein einzelnes Zeichen ch auf den Bildschirm zu schreiben.
  • Cursor() und NoCursor() – zeigen/verbergen den Cursor auf dem Bildschirm.
  • blink() und noBlink() – der Cursor blinkt/blinkt nicht (sofern seine Anzeige zuvor aktiviert war).
  • display() und noDisplay() – ermöglicht Ihnen das Anschließen/Einschalten des Displays.
  • scrollDisplayLeft() und scrollDisplayRight() – scrollt den Bildschirm um ein Links-/Rechtszeichen.
  • autoscroll() und noAutoscroll() – ermöglicht Ihnen das Ein-/Ausschalten des Autoscroll-Modus. Für welchen Skin-Modus wird ein neues Symbol an derselben Stelle aufgezeichnet, die zuvor auf dem Bildschirm geschrieben wurde.
  • leftToRight() und rightToLeft() – Installation des angezeigten Textes direkt – von links nach rechts oder von rechts nach links.
  • createChar(ch, bitmap) – erstellt ein Zeichen mit dem Code ch (0 – 7) und verwendet ein Array von Bitmap-Bitmaps, um schwarze und weiße Punkte zu erstellen.

Alternative Bibliothek für Roboter mit i2c-Anzeige

In einigen Fällen kann es zu Fehlern kommen, wenn die zugewiesene Bibliothek mit Geräten, die mit PCF8574-Controllern ausgestattet sind, beschädigt ist. Eine Alternative zu dieser Option ist die Bibliothek LiquidCrystal_PCF8574.h. Sie erweitert LiquidCrystal_I2C, was den Viktorianern keine Probleme bereitet.

Probleme beim Anschließen des i2c-LCD-Displays

Wenn Sie nach dem Klicken auf eine Skizze nicht die gewünschte Meldung auf dem Display sehen, versuchen Sie es mit einem Klick auf diese Aktionen.

Zunächst können Sie den Kontrast des Monitors erhöhen oder ändern. Oft sind die Charaktere durch die Kontrast- und Beleuchtungsmodi einfach nicht sichtbar.

Wenn dies nicht hilft, überprüfen Sie, ob die Kontakte richtig angeschlossen sind und die stromführende Stromversorgung angeschlossen ist. Wenn Sie einen kompatiblen i2c-Adapter verwendet haben, überprüfen Sie noch einmal die Lötstelle der Kontakte.

Ein weiterer häufiger Grund für fehlenden Text auf dem Bildschirm können falsche i2c-Adressen sein. Versuchen Sie, sich in den Skizzen die Adresse des Geräts mit 0x27, 0x20 oder 0x3F zu merken. Verschiedene Händler können unterschiedliche Zahlungsadressen haben. Wenn dies nicht hilft, können Sie den i2c-Scanner-Sketch ausführen, der alle Anschlüsse des Geräts untersucht und deren Adressen mithilfe einer Brute-Force-Methode ermittelt. Hinternskizze eines i2c-Scanners.

Wenn der Bildschirm immer noch nicht funktioniert, versuchen Sie, den Adapter zu löten und das LCD wie gewohnt anzuschließen.

Visnovok

In diesem Artikel haben wir uns die Hauptstromversorgung für den LCD-Bildschirm in faltbaren Arduino-Projekten angesehen, wenn wir bei der Platine zusätzliches Geld sparen müssen. Mit einem einfachen und kostengünstigen i2c-Adapter können Sie einen 1602-LCD-Bildschirm mit nur 2 analogen Pins anschließen. In mehr Situationen können Sie noch wichtiger sein. Verfügbarkeitsgebühr - die Notwendigkeit, ein zusätzliches Modul zu verwenden - einen Konverter und eine Bibliothek. Unserer Meinung nach ist der Preis für Flexibilität überhaupt nicht hoch und wir empfehlen Ihnen, diese Flexibilität in Projekten zu nutzen.

Der Chip-Widerstand, der hier im Supermarkt erhältlich ist, ist ein Schneckengerät für den Einbau und die Stagnation in braunen Geräten. Dieses Gerät wurde für die Verwendung mit einem LCD-Display unter dem HD44780-Controller im 4-Bit-Modus entwickelt. Zu diesem Zweck ist auf der Platine eine Mikroschaltung verbaut, die den I2C-Bus in einen parallelen 8-Bit-Port umwandelt.

Die Platine ist so verdrahtet, dass sie sofort mit dem PK-Display kombiniert werden kann. Die stromführende I2C-Leitung wird dem Eingang zugeführt. Die Platine ist mit Pull-up-Widerständen auf den SCL- und SDA-Leitungen, einem Potentiometer zur Einstellung des Kontrasts und der Lebensdauer des Displays selbst ausgestattet.

Der Jumper rechts blinkt/blinkt. Anschließend wurde mit Hilfe des Testers ein Schild zusammengefaltet. Nach der Installation des Moduls stellte sich heraus, dass P3 kümmert sich um die Kerzen. Als Jumper schaltet 1 die Hintergrundbeleuchtung ein und 0 erlischt. Wenn der Jumper entfernt wird, schaltet sich der Schalter immer aus. Als nächstes wurde beschlossen, die axlib-Bibliothek um Funktionen für den Betrieb mit einem I2C-Bus (Software-Implementierung) und Funktionen für die Stromversorgung mit der Mikroschaltung PCF8574 zu ergänzen. In zwei Worten, wie das Modul funktioniert. Um ein Byte parallel auszugeben, müssen Sie die Adresse der Mikroschaltung an den I2C-Bus senden (standardmäßig ist sie 0x4E). Sie können die Adresse auch ändern, indem Sie einen Jumper auf die Platine löten und die Werte ändern der drei niederwertigen Bits der Adresse und), dann wird nach Ablehnung des ACK das Datenbyte gesendet. Nachdem die Mikroschaltung mit ACK geantwortet hat, erscheint das Byte auf dem Parallelport der Mikroschaltung. Um die PK-Anzeige zu steuern, habe ich Funktionen aus der Axlib-Bibliothek übernommen und sie leicht modifiziert, um mit dem I2C-Bus zu funktionieren. #enthalten #enthalten #enthalten #enthalten #define ADD 0x4E // Mikroschaltungsadressen /* LCD-Chip RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 Ein Licht ist an der Unterseite von P3 angeschlossen. 1 an, 0 vik. */ // Videdennya-Tribute com | = 0x04; // E zu eins pcf8574_byte_out(com, ADD); // Videdennya-Tribute com &= 0xFB; // Є auf Null pcf8574_byte_out(com, ADD); // Videdennya-Tribute) void init (void) (_delay_ms (30); com(0x30); _delay_us(40); com(0x30); // Übergang zum 4-Bit-Modus _delay_us(40); // Trimmen auf Vikonannya-Befehl com(0x30); // Übergang zum 4-Bit-Modus _delay_us(40); // Trimmen auf Vikonannya-Befehl com(0x20); // Übergang zum 4-Bit-Modus _delay_us(40); // Trimmen auf Vikonannya-Befehl com(0x20); // Parameter einstellen com(0x80); // Parameter einstellen com(0x00); // Vimicable-Anzeige com(0x80); // Vimicable-Anzeige com(0x00); // Anzeige löschen com(0x10); // Anzeige löschen com(0x00); com(0x60); // Stellen Sie den Dateneingabemodus ein com(0x00); com(0xC0); // Schalten Sie die Anzeige mit dem ausgewählten Cursor ein) void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Übertrage die höchstwertigen 4 Bits von data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // Übertrage die höchsten 4 Bits // Übertrage die höchsten 4 Bits // Übertragung der jüngeren 4 Bits // Übertragung der jüngeren 4 Bits // Übertragung der jüngeren 4 Bits) void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) int main(void) ( init(); str_out("ЁPҐBET MҐP!" ); Vlasna, was ist hier los? Ab sofort können wir Bibliotheken für I2C und PCF8574 anbinden. Nachdem ich bereits über I2C geschrieben habe, erzähle ich Ihnen noch einmal davon und erzähle Ihnen von der Achse in PCF8574.h. Dem Bibliothekslager wurden lediglich drei Funktionen hinzugefügt.
BYTE pcf8574_test(BYTE add) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); i2c_stop(); return ask; ) Die erste Funktion wurde geschrieben, um die Anwesenheit des Geräts am Bus zu überprüfen. Im Prinzip kann damit jedes Gerät gefunden werden, das sich am Bus befindet. Die Funktion akzeptiert die Adresse des Geräts und wird bei Übereinstimmung auf Null gesetzt. Befindet sich am Bus kein Gerät mit einer solchen Adresse, schalten Sie eins ein.
BYTE pcf8574_byte_out(BYTE data, BYTE add) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); if(!ask) ask = i2c_send_byte(data); ) Diese Funktion ist bereits auf diese Mikroschaltung zugeschnitten. Als Argument wird ein Byte an die Adresse der Mikroschaltung auf den Bus gesendet. Die Funktion besteht darin, zuerst die Adresse des Mikroschaltkreises anzufordern und dann das Byte zu finden. Wenn die Mikroschaltung ein Byte empfangen und eine Bestätigung gesendet hat, beendet die Funktion die Arbeit mit der Mikroschaltung und gibt Null zurück, da sie ein Byte gesendet hat. Und die Mikroschaltung gibt dieses Byte nun an ihren Parallelport aus. Andernfalls wird NACK abgelehnt und die Übertragung auf eins zurückgesetzt, die Übertragung ist fehlgeschlagen.
BYTE pcf8574_str_out(BYTE *data, BYTE col, BYTE add) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); for(BYTE i=0; i Diese Funktion ist zum Experimentieren gedacht. Der Indikator empfängt ein Array von Einzelbyte-Daten, die Anzahl der Bytes und die Adresse der Mikroschaltung. Versuchen Sie bitte, alle Daten in einer Sitzung zu übertragen und nicht nur ein Byte pro Sitzung. Die Funktion funktioniert, ist aber nicht für die PK-Anzeige geeignet. Kommen wir nun zurück zum Hauptprogramm. Schreiben Sie nach dem Anschließen der Bibliotheken die Adresse der Mikroschaltung. Als nächstes erstellen wir drei Funktionen ähnlich wie lcd.h. Das Prinzip der Übertragung hat eine geringere Bedeutung.
void com (BYTE com) (com | = 0x08; // P3 auf eins, damit der Schalter durchbrennt pcf8574_byte_out(com, ADD); // Videdennya-Tribute com | = 0x04; // E zu eins pcf8574_byte_out(com, ADD); // Videdennya-Tribute com &= 0xFB; // Є auf Null pcf8574_byte_out(com, ADD); // Videdennya-Tribute } Diese Funktion überträgt lediglich Befehle an das Display. Die erste Zeile entstand aus den logischen Ergänzungen des Befehls ab 0x08. Dies ist dadurch notwendig, dass wir das Byte nicht direkt an den Port des RK-Displays übertragen, sondern über unseren Repeater. Wenn wir ein Byte übermittelt haben und dann nur ein Bit ausgeben müssen, akzeptieren Sie bitte das erforderliche Bit bis zum letzten Byte und senden Sie es dann erneut an den Port. Das ist das Problem. Ab 0x08 ist es notwendig, die Einheit dauerhaft auf die dritte Kategorie zu reduzieren. Erinnern Sie sich an Kerzenlicht? Die Achse selbst wird hinzugefügt und beinhaltet eine Beleuchtung. Danach wird die Funktion zum Übertragen eines Bytes auf den Bus aufgerufen. Über sie ist viel geschrieben worden. Dann übertragen wir das Byte über den Bus an die Mikroschaltung. Fügen Sie dann den Trace in Einheit E ein, was durch die logische Addition des Bytes von 0x04 erfolgt. Nachdem Sie E gelöscht haben, können Sie auf diese Weise einen Befehl an die Anzeige senden, ohne den Befehl selbst als Argument zu übergeben. void init(void) (_delay_ms(30); // Pause nach dem Servieren von Speisen com(0x30); // Übergang zum 4-Bit-Modus _delay_us(40); // Trimmen auf Vikonannya-Befehl com(0x30); // Übergang zum 4-Bit-Modus _delay_us(40); // Trimmen auf Vikonannya-Befehl com(0x30); // Übergang zum 4-Bit-Modus _delay_us(40); // Trimmen auf Vikonannya-Befehl com(0x20); // Übergang zum 4-Bit-Modus _delay_us(40); // Trimmen auf Vikonannya-Befehl com(0x20); // Parameter einstellen com(0x80); // Parameter einstellen com(0x00); // Vimicable-Anzeige com(0x80); // Vimicable-Anzeige com(0x00); // Anzeige löschen com(0x10); // Anzeige löschen com(0x00); // Stellen Sie den Dateneingabemodus ein com(0x60); // Stellen Sie den Dateneingabemodus ein com(0x00); // Schalten Sie die Anzeige mit dem ausgewählten Cursor ein com(0xC0); // Schalten Sie die Anzeige mit dem ausgewählten Cursor ein } Diese Funktion hat lediglich die Aufgabe, die Anzeige zu initialisieren. Die Befehlsfolge wird dem Datenblatt auf dem RK-Display entnommen. void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Übertrage die höchstwertigen 4 Bits von data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // Übertrage die höchsten 4 Bits data_h &= 0xF9; pcf8574_byte_out(data_h, ADD); // Übertrage die höchsten 4 Bits pcf8574_byte_out(data_l, ADD); // Übertragung der jüngeren 4 Bits data_l | = 0x04; pcf8574_byte_out(data_l, ADD); // Übertragung der jüngeren 4 Bits data_l &= 0xF9; pcf8574_byte_out(data_l, ADD); // Übertragung der jüngeren 4 Bits } Diese Funktion überträgt RC-Daten an das Display. Es stellt sich wie bei den Befehlen heraus, dass das Byte zuerst mit dem älteren Byte und dann mit dem jüngeren übertragen wird. Und reshta das gleiche. void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) Nun, diese Funktion dient lediglich der Übertragung der Zeile auf die Anzeige. Vlasne bis zu uns, diejenigen, die keine hundert Cent bekommen.

Projekt für AtmelStudio 6.2 

Lesen und Schreiben 01.08.15 17:11

Koma verfehlt. Genau: „HALLO, SWIT!“ Dieses Zubehör ist nicht nur für HD44780 geeignet. Auf der Seite des Masters sind Pull-up-Widerstände angebracht. Laut Spezifikation werden die Daten nach dem Rückgang von E vom LCD-Controller aufgezeichnet. Die erste Funktion wird angezeigt: void com (BYTE com) (com | = 0x08; // Switching pcf8574_byte_out (com | 0x04, ADD); / / Angezeigt ja); sie pcf8574_byte_out , ADD); // E auf Null) Andere können auch viel weniger tun. Beispielsweise erfordert void char_out(BYTE data) nur zwei Klicks und insbesondere ohne zusätzliche Änderungen. Die Initialisierung des LCD wurde aufgrund fehlerhafter Timing-Spezifikationen deaktiviert.

Oleksiy 02.08.15 19:11

Durch die fehlende Koma wird die Darstellung nicht beeinträchtigt. Dieses Gerät befindet sich unter dem Display mit demselben oder einem ähnlichen Controller. Und die Mikroschaltungsachse selbst ist eigentlich eine einfache Erweiterung des Ports. Gut, ich bin gut genug. Weitere Änderungen sind notwendig. Wenn Sie mithilfe von Logik ein Argument an eine Funktion übergeben, können Störungen auftreten. Ich bin schon so festgefahren. Die Initialisierung endet ohne Unterbrechung der Zeitsteuerung. In der Dokumentation heißt es, dass zwischen den Befehlen eine Pause von 40 µs eingelegt wird. Da die Übertragung über den i2c-Bus erfolgt und dieser auf seine eigene Weise programmiert ist, muss man sich zu viele Sorgen machen. Wenn Sie immer noch nicht faul sind, schreiben Sie Ihre Version und senden Sie sie mir. Ich werde es veröffentlichen. Zreshtoyu, diese Website mit Terminen für das Amateurpublikum und die Haut, wer immer Sie wollen, kann Ihre Gedanken und Ideen für das Leben von MK zum Ausdruck bringen.

Oleksiy 06.08.15 09:14

Hinzufügen von Timings beim Initialisieren der Anzeige im Hinblick auf „Kompetent“

Dmitro 14.06.16 21:57

Guten Tag Oleksiy. Sie können dem Codegenerator eine Bibliothek für Roboter mit PCF8574 hinzufügen.

Oleksiy 14.06.16 22:32

Ich werde nachdenken.))

Ruslan 21.12.16 19:54
Oleksiy 21.12.16 21:53

Ach so. Besonders der Code in ASMI. Arduin-Ingenieure werden es wieder zu schätzen wissen)))

P.C.
Wundern Sie sich nicht über ASM, das Programm dort ist für den PIC-Controller geschrieben. Sind diese Informationen für AVR-Spezialisten „noch nützlicher“? besonders für Anfänger))) Ich habe nichts gegen PIC, aber die Wahrheit ist, dass PIC und AVR unterschiedlich sind. Und vom Laufwerk aus gibt es Details zur Bedienung des RC-Displays, Sie können einen Blick darauf werfen))) Stimmt, ich habe auch unter CVAVR und allen Befehlen zum Sortieren und Sortieren in Regalen geschrieben. Wenn Sie einen Notfall haben, sollten Sie selbst sehen, was so klar geschrieben steht))) Der Autor schreibt, der Leser sammelt.

GeK 01.04.17 12:52

„I2C-Adressen der Mikroschaltungen (standardmäßig ist es 0x4E“)

Die höchsten 4 Bits der Adresse sind fest,
Das Präfix von PCF8574 ist 0100 und PCF8574A ist 0111
Die jüngeren 3 Bits liegen an den Eingängen der Mikroschaltungen A2-A0. Im angeschlossenen Zustand sind alle 3 Jumper offen, was die Mikroschaltungsadresse anzeigt, der Wert 0111111 wird angezeigt.
// A2 A1 A0 PCF8574 PCF8574A
// 1 1 1 0x20 0x38
// 1 1 0 0x21 0x39
// 1 0 1 0x22 0x3A
// 1 0 0 0x23 0x3B
// 0 1 1 0x24 0x3C
// 0 1 0 0x25 0x3D
// 0 0 1 0x26 0x3E
// 0 0 0 0x27 0x3F

Oleksiy 04.01.17 14:27

Nun, Sie waren verwirrt.
Vityag mit Dokumentation für die Mikroschaltung

0b01001110 ce 0x4E
Hier stimmt also alles. Und wenn Sie die Adresse ändern müssen, müssen Sie sie nur in „Definieren“ ändern.

Yuri 14.12.17 21:26

Einen schönen Tag noch! Und finden Sie auch den Code für die Funktionen „lcdgotoxy“ und „lcdclear“ für die Arbeit mit einem Adapter für PCF8574?

Alexander 20.05.18 18:14

Einen schönen Tag noch! Wie gibt man russischen Text aus?

Oleksiy 20.05.18 23:04

Dies ist ein brandneues Display von MELT. Er hat das kyrillische Alphabet fest in seinem Gedächtnis verankert.

Oleksandr 21.05.18 04:55

Einen schönen Tag noch! Ich schreibe, dass Sie ein Projekt für AtmelStudio 6.2 „ЁPҐBET MҐP!“ haben. dann ist es normal zu sehen
und wenn du „HELLO SWIT!“ schreibst. allerlei Unsinn ans Licht bringen. ich habe zwei
Varianten der Darstellung in einem sind in kyrillischer Schrift geschrieben. ein anderer Chinese.

Oleksiy 21.05.18 09:22

Ich würde lieber ein Testprogramm schreiben. Durchläuft den gesamten Speicher mit angezeigten Symbolen und deren Adresse. Und dann werden wir verstehen, wo das Problem liegt. Am wichtigsten ist, dass die Symboltabelle nicht mit der ASCII-Tabelle übereinstimmt.

Andriy 03.09.18 08:32

Guten Tag!

Können Sie mir einen Schaltplan für Proteus schicken?

Andriy 03.09.18 10:22

Haben Sie jemanden in Proteuse überprüft?

Andriy 03.09.18 10:56

Rozіbravsya main_init

Pavlo 30.05.19 23:35

Tsikava Rich, die Anzeigeadressen sind 0x4E, und wenn Sie dasselbe Display an den Arduino anschließen, dann sind die Adressen 0x27

Pavlo 31.05.19 11:04

Danke für deine Arbeit! Von gezielten Anwendungen, mit Ausnahme Ihrer eigenen, wird eine Unterbrechung des gesamten Internets erwartet, ohne Geld zu verdienen. Eine Sache ist, dass in der archivierten Projektfunktion der Anzeigeinitialisierung die Verzögerung _delay_ nicht registriert ist und daher nicht funktioniert

Oleksiy 01.06.19 09:52

Nun, das ist eher ein Demonstrationsprojekt. Es ist gut, dass die Axlib-Bibliothek neu geschrieben werden muss, aber wenn man bedenkt, dass STM32 und STM8 sprunghaft zusammenbrechen, liegt der Sinn im AVR nicht mehr in der Luft.

Pavlo 06.05.19 12:57

Für STM sind keine DIP-Pakete erforderlich, was die Verwendung anderer Platinen erleichtert. Für meine Projekte ist der AVR ausverkauft; ein Atmega 8 bietet viel Platz

Oleksiy 06.05.19 15:20

Wie viel kostet es also Atmega8 und stm8s003)))

Dmitro 06.07.19 00:41

Hallo, Oleksia.
Sagen Sie mir freundlicherweise, wie es notwendig ist, von pcf8574 zum Port zu lesen?
Ich möchte einen externen Block erstellen, 8 GPIO über den i2c-Bus – das ist alles.

Dmitro 06.07.19 17:56

Ich sage es mir
Die Funktion dreht das Byte - den Port-Port der Mikroschaltung
uint8_t pcf8574_byte_rcv(uint8_t addr)
{
uint8_t ask = ACK;
Adresse | = 0b01; //LESEN
uint8_t data=0;
i2c_start();
ask = i2c_send_byte(addr);
if(!ask) data = i2c_read_byte(NACK);
i2c_stop();

Rückgabedaten;
}

Pavlo 06.07.19 20:37

Wie viel kostet es (150 Rubel für den Preis eines Stocks) und wie bezahlt man STM? LUT ist unzuverlässig, die CNC-Fräsmaschine funktioniert nicht, was kann ich nehmen (ohne es auszuprobieren)

  • Das FC-113-Modul basiert auf der Mikroschaltung PCF8574T, die über ein gemeinsam genutztes 8-Bit-Register verfügt, das die Ein- und Ausgänge für den seriellen I2C-Bus „erweitert“. Der kleine Mikroschaltkreis ist mit DD1 gekennzeichnet.
  • R1 ist ein einstellbarer Widerstand zum Einstellen des Kontrasts der RC-Anzeige.
  • Jumper J1 wird verwendet, um die Hintergrundbeleuchtung des Displays zu erhöhen.
  • Die Pins 1…16 dienen zur Verbindung des Moduls mit den Pins des LCD-Displays.
  • Die Kontaktplatten A1…A3 müssen die I2C-Adresse ändern. Durch das Anlöten der Drahtbrücken können Sie die Adresse des Gerätes ändern. Die Tabelle zeigt die Art der Adresse und des Jumpers: „0“ zeigt einen offenen Stecker an, „1“ zeigt einen installierten Jumper an. Hinter den Anschlüssen sind 3 Jumper getrennt und Adressen angebracht 0x27.

2 Schema zum Anschließen des RC-Displays an Arduino hinter dem I2C-Protokoll

Der Anschluss des Arduino-Moduls erfolgt standardmäßig für den I2C-Bus: Die SDA-Modulanschlüsse werden an den analogen Port A4 angeschlossen, die SCL-Anschlüsse werden an den analogen Port A5 des Arduino angeschlossen. Das Modul wird mit einer Spannung von +5 V vom Arduino versorgt. Das Modul selbst wird über die Anschlüsse 1…16 mit den entsprechenden Anschlüssen 1…16 am PK-Display verbunden.


3 Bibliothek für Roboter hinter dem I2C-Protokoll

Jetzt benötigen wir eine Bibliothek für die Arbeit mit LCD hinter der I2C-Schnittstelle. Sie können beispielsweise die Cym-Achse beschleunigen (siehe Zeile „Beispielcode und Bibliothek herunterladen“).

Zavantazheniya-Archive LiquidCrystal_I2Cv1-1.rar in einen Ordner entpackt \Bibliotheken\ welches sich im Arduino IDE-Verzeichnis befindet.

Die Bibliothek unterstützt eine Reihe von Standardfunktionen für LCD-Bildschirme:

FunktionAbtretung
Flüssigkristall() erstellt eine Änderung am LiquidCrystal-Typ und empfängt die Anzeigeverbindungsparameter (Teilenummern);
beginnen() Initialisierung des LCD-Displays, Einstellung der Parameter (Anzahl der Zeilen und Symbole);
klar() Löschen des Bildschirms und Drehen des Cursors auf die Kolbenposition;
heim() Drehen Sie den Cursor auf die Kolbenposition.
setCursor() Platzieren des Cursors an einer bestimmten Position;
schreiben() das Symbol auf dem RK-Bildschirm anzeigen;
drucken() Text auf dem RK-Bildschirm anzeigen;
Mauszeiger() zeigt dann den Cursor. der Sessel unter der Stelle des vorrückenden Symbols;
noCursor() Wo ist der Cursor?
blinken() Moment zum Cursor;
noBlink() momentaner Moment;
kein Bildschirm() Schalten Sie das Display aus und speichern Sie alle angezeigten Informationen.
Anzeige() Einschalten des Displays und Speichern aller angezeigten Informationen;
scrollDisplayLeft() Scrollen Sie in der Anzeige um eine Position nach links.
scrollDisplayRight() Scrollen statt der Anzeige um 1 Position rechtshändig;
Auto Scroll() Autoscroll einschalten;
noAutoscroll() Autoscroll vimicanny;
links nach rechts() setzt den Text direkt nach rechts;
rechts nach links() Textrichtung von rechts nach links;
createChar() Ich erstelle das Koristuvach-Symbol für den LCD-Bildschirm.

4 Skizze zur Darstellung von Text zum LCD-Bildschirm über I2C-Bus

Schauen wir uns das Schild an: Zrazka-Datei LiquidCrystal_I2C CustomChars Und ein wenig davon lässt sich zerkleinern. Wir sind uns bewusst, dass am Ende ein flüchtiges Symbol stehen wird. Die Kommentare vor dem Code kommentieren alle Nuancen der Skizze.

#enthalten // Wire-Bibliothek einbinden #include // Beinhaltet die RK-Bibliothek#define printByte(args) write(args); // uint8_t heart = (0x0,0xa,0x1f,0x1f,0xe,0x4,0x0); // Bitmaske für das „Herz“-Symbol LiquidCrystal_I2C lcd(0x27, 16, 2); // Auf Adresse 0x27 für 16x2 LCD-Anzeige setzen void setup() ( lcd.init(); // Initialisierung der Anzeige RC lcd.backlight(); // Erhöhte Displaybeleuchtung lcd.createChar(3, heart); // Erstelle das „Herz“-Symbol in der dritten Mitte des Speichers lcd.home(); // Platziere den Cursor in der oberen linken Ecke, an Position (0,0) lcd.!"); // eine weitere Textzeile lcd.setCursor(0, 1); // bewege den Cursor zu Zeile 2, Zeichen 1 lcd.print( i)) // noch eine Anmerkung zu Zeile 2 lcd.printByte(3); } void loop() (// Moment des verbleibenden Zeichens lcd.setCursor(13, 1); // Bewegen Sie den Cursor zu Zeile 2, Zeichen 1 lcd.print("\t"); Verzögerung (500); lcd.setCursor(13, 1); // Bewegen Sie den Cursor zu Zeile 2, Zeichen 1 lcd.print(" "); Verzögerung (500); }

Vor dem Sprechen werden Symbole auf Befehl geschrieben lcd.createChar();, dem Anzeigespeicher wird nach dem Verlust des Lebens seine Lebensdauer entzogen, weil in das Anzeige-ROM 1602 geschrieben werden.

5 Schaffung von Machtsymbolen für RC-Anzeige

Als nächstes werden wir uns mit der ernährungsphysiologischen Erstellung von Kraftsymbolen für RK-Bildschirme befassen. Das Skin-Symbol auf dem Bildschirm besteht aus 35 Punkten: 5 Ecken und 7 Kreisen (+1 Reservereihe zur Unterstützung). Für Zeile 6 der von uns erstellten Skizze legen wir ein Array mit 7 Zahlen fest: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). Konvertierbare 16-stellige Zahlen in Binärform: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Diese Zahlen sind nichts anderes als biologische Masken für die Haut mit 7 Symbolreihen, wobei „0“ einen hellen Punkt und „1“ einen dunklen Punkt angibt. Beispielsweise wird das Symbol des Herzens, Aufgaben in Form einer Fledermausmaske, auf dem Bildschirm wie auf dem Baby dargestellt angezeigt.

6 Verwalten des RK-Bildschirmsüber I2C-Bus

Tolle Skizze für Arduino. Die Aufgaben werden am Ende mit einem blinkenden Cursor auf dem Bildschirm angezeigt.


7 Wofür ist da? I2C-Bus

Als Bonus werfen wir einen Blick auf das Zeitdiagramm der Anzeige der lateinischen Symbole „A“, „B“ und „C“ auf dem RK-Display. Diese Symbole befinden sich im ROM-Display und werden auf dem Bildschirm angezeigt, indem einfach ihre Adressen an das Display übertragen werden. Das Diagramm wird aus den Anzeigeebenen RS, RW, E, D4, D5, D6 und D7 usw. übernommen. Bereits nach der Neugestaltung des FC-113 „I2C Parallelbus“. Man kann sagen, dass wir die kleinen Stückchen im „Zalizo“ „tief“ wegwerfen.


Zeitdiagramm der Anzeige der lateinischen Zeichen „A“, „B“ und „C“ auf dem LCD-Display 1602

Das Diagramm zeigt, dass die Zeichen, die sich im Anzeige-ROM befinden (Seite 11 des Datenblatts, siehe unten), in zwei Bytes übertragen werden, von denen das erste die Tabellenspaltennummer und das andere die Zeilennummer angibt. An diesem Punkt „klicken“ die Daten entlang der Vorderseite des Signals auf der Leitung E(Aktivieren) und Zeile R.S.(Registerauswahl) befindet sich in der logischen Einheit, was eine Datenübertragung bedeutet. Die niedrige Steigung der RS-Linie bedeutet die Übertragung der Einsätze, die wir vor der Übertragung des Hautsymbols waschen. Dieser Eingang übermittelt den Befehlscode zum Drehen des Schlittens in die Position (0, 0) des Displays PK, die auch durch Lesen der technischen Beschreibung des Displays identifiziert werden kann.

Und noch ein Hintern. Dieses Stundendiagramm zeigt die Darstellung des „Herz“-Symbols auf dem PK-Display.


Ich sage es noch einmal, die ersten beiden Impulse Aktivieren folge den Anweisungen Heim()(0000 0010 2) - Drehung des Wagens in Position (0; 0) und die anderen beiden - Anzeige auf der Digitalanzeige, die im Speicher 3 10 (0000 0011 2) Symbol „Herz“ (Anweisungen) gespeichert ist lcd.createChar(3, Herz); skizzieren).

Nach einer Reihe einfacher, in sich geschlossener Komponenten kommt der Funkverstärker dazu, eine große Anzahl von Sensoren und Tasten zu konstruieren. Außerdem ist es effizienter, Daten auf dem Display am unteren Monitoranschluss anzuzeigen. Wenn das Essen fertig ist: Welchen Bildschirm sollten Sie wählen? Und Sie fragen sich, wie man es anschließt, was ist für die Verbindung erforderlich? Das Feedback zu dieser Diät wird in diesem Artikel besprochen.

LCD 1602

Unter den vielen Optionen für Displays möchten wir unbedingt das LCD1602-Display selbst erwähnen, das auf dem HD4478-Controller basiert. Dieses Display hat zwei Farben: weiße Buchstaben auf schwarzem Hintergrund, schwarze Buchstaben auf gelbem Hintergrund. Auch das Anschließen des LCD 1602 an den Arduino verursacht nicht die üblichen Probleme, da die Bibliothek installiert ist und nichts zusätzliches erforderlich ist. Displays unterscheiden sich nicht nur im Preis, sondern auch in der Größe. Am häufigsten verwenden Radiosender 16 x 2, also 2 Zeilen mit 16 Zeichen. Es ist ebenfalls 20 x 4, es gibt 4 Reihen mit jeweils 20 Zeichen. Die Abmessungen und Farben spielen bei dem an Arduno angeschlossenen LCD 1602 Display nicht die gleiche Rolle, sie hängen jedoch zusammen. Auf den ersten Blick sind es 35 Grad, die Betrachtungsstunde beträgt 250 ms. Es kann bei Temperaturen von -20 bis 70 Grad Celsius verwendet werden. Während des Roboterbetriebs werden dem Bildschirm 4 mA und 120 mA zugeführt.

Wirst du ein Vikorist?

Dieses Display erfreut sich nicht nur bei Funkamateuren, sondern auch bei großen Rundfunkveranstaltern großer Beliebtheit. Beispielsweise nutzen auch Drucker und andere Geräte den LCD1602. Dies liegt an seinem niedrigen Preis; dieses Display auf chinesischen Maidans kostet 200-300 Rubel. Kaufen Sie die Ware dort selbst, denn in unseren Filialen sind die Aufschläge auf dieses Display sehr hoch.

Verbindungen zu Arduino

Der Anschluss des LCD 1602 an Arduino Nano und Uno ist nicht betroffen. Die Anzeige kann in zwei Modi verwendet werden: 4 Bit und 8. Beim Arbeiten mit 8 Bit werden sowohl jüngere als auch ältere Bits verwendet, bei 4 Bit sogar noch jüngere. Es macht keinen besonderen Sinn, mit 8-Bit zu arbeiten, da Sie nur 4 weitere Kontakte verbinden müssen, was nicht ausreicht, und selbst die Flüssigkeit zwischen der Aktualisierung der Anzeige – 10 Mal pro Sekunde – wird nicht größer sein. Um das LCD 1602 mit dem Arduino zu verbinden, müssen Sie im Allgemeinen viele Geräte verwenden, die einige Unannehmlichkeiten mit sich bringen, einschließlich spezieller Abschirmungen usw. Das Foto zeigt den Anschluss des Displays an den Arduino Uno:

Beispiel für den Programmcode:

#enthalten // Fügen Sie die erforderliche Bibliothek LiquidCrystal LCD hinzu (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Stellen Sie die Bildschirmgröße ein lcd.setCursor(0, 0); // Stellen Sie den Cursor ein to ear 1 rows lcd.print("Hello, world!"); // Angezeigter Text lcd.setCursor(0, 1); // Platziert den Cursor auf der 2. Zeile lcd.print("site") // Angezeigter Text ) ()( )

Warum den Code brechen? Für die Arbeit mit dem Display verbinden wir zunächst die Bibliothek. Wie bereits oben erwähnt, ist diese Bibliothek bereits im Arduino IDE-Speicher enthalten und eine zusätzliche Installation ist nicht erforderlich. Folgende Kontakte sind mit den Anschlüssen verbunden: RS, E, DB4, DB5, DB6, DB7 in Reihe. Danach wird die Größe des Bildschirms eingestellt. Da wir also mit der Version arbeiten, in der es 16 Zeichen und 2 Zeilen gibt, schreiben wir die folgenden Werte. Wir platzieren den Cursor auf dem Kopf der ersten Zeile und zeigen unseren ersten Text „Hello World“ an. Dann platzieren wir den Cursor in einer anderen Zeile und zeigen den Namen der Site an. Das ist alles! Schauen Sie sich die Anschlüsse des LCD 1602 Arduino Uno an.

Was ist I2C und wofür wird es benötigt?

Wie bereits erwähnt, erfordert der Anschluss des Displays viele Kontakte. Wenn Sie beispielsweise mit vielen Sensoren und einem LCD-Display arbeiten, können 1602 Kontakte einfach nicht angeschlossen werden. Am häufigsten verwenden Funkamateure Versionen von Uno und Nano, aber es gibt nicht so viele Kontakte. Dann erraten die Leute spezielle Namensschilder. Zum Beispiel I2C. Es ermöglicht den Anschluss eines Displays mit mehr als 4 Kontakten. Es ist doppelt so viel. Das I2C-Modul ist separat erhältlich, ohne dass Lötarbeiten oder vor dem Löten an das LCD 1602-Display erforderlich sind.

Anschlüsse an ein zusätzliches I2C-Modul

Der Anschluss des LCD 1602 an den Arduino Nano mit I2C nimmt wenig Platz in Anspruch, nur 4 Kontakte: Masse, Live und 2 Ausgänge zur Datenübertragung. Das Leben und die Masse sind mit 5V verbunden und GND am Arduino ist verbunden. Zwei Kontakte fehlen: SCL und SDA können an beliebige analoge Pins angeschlossen werden. Auf dem Foto sehen Sie das Beispiel für den Anschluss eines LCD 1602 an ein Arduino mit einem I2C-Modul:

Programmcode

Während für die Arbeit mit einer Anzeige ohne Modul nur eine Bibliothek erforderlich war, waren für die Arbeit mit einem Modul zwei Bibliotheken erforderlich. Einer davon befindet sich bereits im Lager von Arduino IDE – Wire. Unsere Bibliothek LiquidCrystal I2C muss installiert und installiert werden. Um anstelle des heruntergeladenen Archivs eine Bibliothek in Arduino zu installieren, müssen Sie sie in den Stammordner „Libraries“ herunterladen. Beispiel des Programmcodes aus dem I2C-Wiki:

#enthalten #enthalten LiquidCrystal_I2C lcd(0x27,16,2); // Stellen Sie die Anzeige ein void setup() ( lcd.init(); lcd.backlight(); // Schalten Sie die Hintergrundbeleuchtung der Anzeige ein lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // Setze den Cursor auf eine andere Zeile und ein Nullzeichen. lcd.setCursor(0, 1); // Wird ab dem Start des Arduina für einige Sekunden auf dem Bildschirm angezeigt. lcd.print(millis( )/1000);

Der Code darf, soweit möglich, nicht geändert werden.

Wie kann ich ein Symbol hinzufügen?

Das Problem bei diesen Anzeigen besteht darin, dass das kyrillische Alphabet und die kyrillischen Zeichen nicht unterstützt werden. Beispielsweise müssen Sie der Anzeige ein Symbol hinzufügen, damit es angezeigt wird. Zu diesem Zweck bietet Ihnen das Display die Möglichkeit, bis zu 7 Zeichen anzuzeigen. Senden Sie die Tabelle:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

Wenn 0 bedeutet, dass dort nichts vorhanden ist, bedeutet 1, dass die Handlung nicht gepackt ist. In der Anwendung können Sie dem Symbol „Smiley, der Sie zum Lachen bringt“ ein Symbol hinzufügen. Am Beispiel des Programms in Arduino sieht es so aus:

#enthalten #enthalten // Erforderliche Bibliothek finden // Bitmaske für das Smile-Symbol-Byte smile = (B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal-LCD (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Stellen Sie die Bildschirmgröße ein lcd.createChar(1, smile); // Zeichennummer erstellen 1 lcd.setCursor(0, 0); // Platzieren Sie den Cursor auf dem Kopf der ersten Zeile. lcd.print("\1"); // Zeigt einen Smiley (Zeichennummer 1) - "\1" an () ( )

Wie Sie sehen können, wurde genau wie der Tisch eine Fledermausmaske erstellt. Einmal erstellt, kann es als Änderung auf dem Display angezeigt werden. Denken Sie daran, dass Sie mehr als diese Zeichen im Speicher speichern können. Im Prinzip gilt, was auch immer ausreicht. Beispielsweise ist es erforderlich, das Gradsymbol anzuzeigen.

Probleme, bei denen die Anzeige möglicherweise nicht funktioniert

Solche Fehler treten auf, wenn die Anzeige nicht funktioniert. Es klickt zum Beispiel rein, zeigt die Symbole aber nicht an. Oder es lässt sich überhaupt nicht einschalten. Staunen Sie sofort darüber, wie Sie die Kontakte richtig angeschlossen haben. Wenn Sie versucht haben, den LCD 1202 Arduino ohne I2C anzuschließen, kann es sehr leicht passieren, dass Sie sich in den Drähten verlieren, was dazu führen kann, dass das Display nicht richtig funktioniert. Es ist auch wichtig zu beachten, dass der Kontrast des Displays erhöht wurde, da die Fragmente bei minimalem Kontrast nicht sichtbar sind und das LCD 1602 nicht aktiviert ist. Wenn nichts hilft, kann es sein, dass das Problem bei mehreren Kontakten auftritt, auch wenn das I2C-Modul defekt ist. Ein weiterer häufiger Grund dafür, dass die Anzeige möglicherweise nicht funktioniert, ist, dass die I2C-Adresse falsch eingestellt ist. Auf der rechten Seite gibt es viele Picker, die von der Adresse abweichen können. Sie müssen sie hier korrigieren:

LiquidCrystal_I2C lcd(0x27,16,2);

Die Arme können zwei Werte haben, 0x27 und 16.2 (16, 2 ist die Größe des Displays und 0x27 ist die I2C-Adresse selbst). Sie können versuchen, diese Werte zu ersetzen, indem Sie 0x37 oder 0x3F festlegen. Nun, ein weiterer Grund ist einfach ein fehlerhaftes LCD 1602. Wenn man bedenkt, dass praktisch alles für Arduino in China hergestellt wird, kann man nicht hundertprozentig sagen, dass das hinzugefügte Produkt keine gute Idee ist.

Vor- und Nachteile von LCD 1602

Werfen wir einen Blick auf die Vor- und Nachteile des LCD 1602-Displays.

  • Preis. Dieses Modul kann zu einem angemessenen Preis in chinesischen Geschäften erworben werden. Der Preis beträgt 200-300 Rubel. Manchmal werden sie zusammen mit einem I2C-Modul verkauft.
  • Einfach anzuschließen. Vielleicht schließt derzeit niemand den LCD 1602 ohne I2C an. Und mit diesem Modul benötigt die Verbindung nur 4 Kontakte, es entstehen keine Drahtgeflechte.
  • Programmierung Wir sind darauf vorbereitet, dass Bibliotheken problemlos mit diesem Modul arbeiten können, alle Funktionen sind bereits registriert. Und wenn Sie Ihr Symbol hinzufügen müssen, geben Sie nur wenige Münzen aus.
  • In einer einstündigen Recherche tausender Radioamateure konnten keine großen Nachteile festgestellt werden, lediglich die Käufe des Gateways wurden aufgedeckt, so dass überwiegend chinesische Anzeigemöglichkeiten übrig blieben.

Dieser Artikel befasste sich mit den Anschlüssen des 1602 Arduino und stellte auch Anwendungen für Roboter mit diesem Display vor. Es stimmt, dass diese Kategorie eine der schönsten ist, und es ist nicht nur so, dass sie Tausende von Funkverstärkern für ihre Projekte sammeln!

  • Das FC-113-Modul basiert auf der Mikroschaltung PCF8574T, die über ein gemeinsam genutztes 8-Bit-Register verfügt, das die Ein- und Ausgänge für den seriellen I2C-Bus „erweitert“. Der kleine Mikroschaltkreis ist mit DD1 gekennzeichnet.
  • R1 ist ein einstellbarer Widerstand zum Einstellen des Kontrasts der RC-Anzeige.
  • Jumper J1 wird verwendet, um die Hintergrundbeleuchtung des Displays zu erhöhen.
  • Die Pins 1…16 dienen zur Verbindung des Moduls mit den Pins des LCD-Displays.
  • Die Kontaktplatten A1…A3 müssen die I2C-Adresse ändern. Durch das Anlöten der Drahtbrücken können Sie die Adresse des Gerätes ändern. Die Tabelle zeigt die Art der Adresse und des Jumpers: „0“ zeigt einen offenen Stecker an, „1“ zeigt einen installierten Jumper an. Hinter den Anschlüssen sind 3 Jumper getrennt und Adressen angebracht 0x27.

2 Schema zum Anschließen des RC-Displays an Arduino hinter dem I2C-Protokoll

Der Anschluss des Arduino-Moduls erfolgt standardmäßig für den I2C-Bus: Die SDA-Modulanschlüsse werden an den analogen Port A4 angeschlossen, die SCL-Anschlüsse werden an den analogen Port A5 des Arduino angeschlossen. Das Modul wird mit einer Spannung von +5 V vom Arduino versorgt. Das Modul selbst wird über die Anschlüsse 1…16 mit den entsprechenden Anschlüssen 1…16 am PK-Display verbunden.


3 Bibliothek für Roboter hinter dem I2C-Protokoll

Jetzt benötigen wir eine Bibliothek für die Arbeit mit LCD hinter der I2C-Schnittstelle. Sie können beispielsweise die Cym-Achse beschleunigen (siehe Zeile „Beispielcode und Bibliothek herunterladen“).

Zavantazheniya-Archive LiquidCrystal_I2Cv1-1.rar in einen Ordner entpackt \Bibliotheken\ welches sich im Arduino IDE-Verzeichnis befindet.

Die Bibliothek unterstützt eine Reihe von Standardfunktionen für LCD-Bildschirme:

FunktionAbtretung
Flüssigkristall() erstellt eine Änderung am LiquidCrystal-Typ und empfängt die Anzeigeverbindungsparameter (Teilenummern);
beginnen() Initialisierung des LCD-Displays, Einstellung der Parameter (Anzahl der Zeilen und Symbole);
klar() Löschen des Bildschirms und Drehen des Cursors auf die Kolbenposition;
heim() Drehen Sie den Cursor auf die Kolbenposition.
setCursor() Platzieren des Cursors an einer bestimmten Position;
schreiben() das Symbol auf dem RK-Bildschirm anzeigen;
drucken() Text auf dem RK-Bildschirm anzeigen;
Mauszeiger() zeigt dann den Cursor. der Sessel unter der Stelle des vorrückenden Symbols;
noCursor() Wo ist der Cursor?
blinken() Moment zum Cursor;
noBlink() momentaner Moment;
kein Bildschirm() Schalten Sie das Display aus und speichern Sie alle angezeigten Informationen.
Anzeige() Einschalten des Displays und Speichern aller angezeigten Informationen;
scrollDisplayLeft() Scrollen Sie in der Anzeige um eine Position nach links.
scrollDisplayRight() Scrollen statt der Anzeige um 1 Position rechtshändig;
Auto Scroll() Autoscroll einschalten;
noAutoscroll() Autoscroll vimicanny;
links nach rechts() setzt den Text direkt nach rechts;
rechts nach links() Textrichtung von rechts nach links;
createChar() Ich erstelle das Koristuvach-Symbol für den LCD-Bildschirm.

4 Skizze zur Darstellung von Text zum LCD-Bildschirm über I2C-Bus

Schauen wir uns das Schild an: Zrazka-Datei LiquidCrystal_I2C CustomChars Und ein wenig davon lässt sich zerkleinern. Wir sind uns bewusst, dass am Ende ein flüchtiges Symbol stehen wird. Die Kommentare vor dem Code kommentieren alle Nuancen der Skizze.

#enthalten // Wire-Bibliothek einbinden #include // Beinhaltet die RK-Bibliothek#define printByte(args) write(args); // uint8_t heart = (0x0,0xa,0x1f,0x1f,0xe,0x4,0x0); // Bitmaske für das „Herz“-Symbol LiquidCrystal_I2C lcd(0x27, 16, 2); // Auf Adresse 0x27 für 16x2 LCD-Anzeige setzen void setup() ( lcd.init(); // Initialisierung der Anzeige RC lcd.backlight(); // Erhöhte Displaybeleuchtung lcd.createChar(3, heart); // Erstelle das „Herz“-Symbol in der dritten Mitte des Speichers lcd.home(); // Platziere den Cursor in der oberen linken Ecke, an Position (0,0) lcd.!"); // eine weitere Textzeile lcd.setCursor(0, 1); // bewege den Cursor zu Zeile 2, Zeichen 1 lcd.print( i)) // noch eine Anmerkung zu Zeile 2 lcd.printByte(3); } void loop() (// Moment des verbleibenden Zeichens lcd.setCursor(13, 1); // Bewegen Sie den Cursor zu Zeile 2, Zeichen 1 lcd.print("\t"); Verzögerung (500); lcd.setCursor(13, 1); // Bewegen Sie den Cursor zu Zeile 2, Zeichen 1 lcd.print(" "); Verzögerung (500); }

Vor dem Sprechen werden Symbole auf Befehl geschrieben lcd.createChar();, dem Anzeigespeicher wird nach dem Verlust des Lebens seine Lebensdauer entzogen, weil in das Anzeige-ROM 1602 geschrieben werden.

5 Schaffung von Machtsymbolen für RC-Anzeige

Als nächstes werden wir uns mit der ernährungsphysiologischen Erstellung von Kraftsymbolen für RK-Bildschirme befassen. Das Skin-Symbol auf dem Bildschirm besteht aus 35 Punkten: 5 Ecken und 7 Kreisen (+1 Reservereihe zur Unterstützung). Für Zeile 6 der von uns erstellten Skizze legen wir ein Array mit 7 Zahlen fest: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). Konvertierbare 16-stellige Zahlen in Binärform: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Diese Zahlen sind nichts anderes als biologische Masken für die Haut mit 7 Symbolreihen, wobei „0“ einen hellen Punkt und „1“ einen dunklen Punkt angibt. Beispielsweise wird das Symbol des Herzens, Aufgaben in Form einer Fledermausmaske, auf dem Bildschirm wie auf dem Baby dargestellt angezeigt.

6 Verwalten des RK-Bildschirmsüber I2C-Bus

Tolle Skizze für Arduino. Die Aufgaben werden am Ende mit einem blinkenden Cursor auf dem Bildschirm angezeigt.


7 Wofür ist da? I2C-Bus

Als Bonus werfen wir einen Blick auf das Zeitdiagramm der Anzeige der lateinischen Symbole „A“, „B“ und „C“ auf dem RK-Display. Diese Symbole befinden sich im ROM-Display und werden auf dem Bildschirm angezeigt, indem einfach ihre Adressen an das Display übertragen werden. Das Diagramm wird aus den Anzeigeebenen RS, RW, E, D4, D5, D6 und D7 usw. übernommen. Bereits nach der Neugestaltung des FC-113 „I2C Parallelbus“. Man kann sagen, dass wir die kleinen Stückchen im „Zalizo“ „tief“ wegwerfen.


Zeitdiagramm der Anzeige der lateinischen Zeichen „A“, „B“ und „C“ auf dem LCD-Display 1602

Das Diagramm zeigt, dass die Zeichen, die sich im Anzeige-ROM befinden (Seite 11 des Datenblatts, siehe unten), in zwei Bytes übertragen werden, von denen das erste die Tabellenspaltennummer und das andere die Zeilennummer angibt. An diesem Punkt „klicken“ die Daten entlang der Vorderseite des Signals auf der Leitung E(Aktivieren) und Zeile R.S.(Registerauswahl) befindet sich in der logischen Einheit, was eine Datenübertragung bedeutet. Die niedrige Steigung der RS-Linie bedeutet die Übertragung der Einsätze, die wir vor der Übertragung des Hautsymbols waschen. Dieser Eingang übermittelt den Befehlscode zum Drehen des Schlittens in die Position (0, 0) des Displays PK, die auch durch Lesen der technischen Beschreibung des Displays identifiziert werden kann.

Und noch ein Hintern. Dieses Stundendiagramm zeigt die Darstellung des „Herz“-Symbols auf dem PK-Display.


Ich sage es noch einmal, die ersten beiden Impulse Aktivieren folge den Anweisungen Heim()(0000 0010 2) - Drehung des Wagens in Position (0; 0) und die anderen beiden - Anzeige auf der Digitalanzeige, die im Speicher 3 10 (0000 0011 2) Symbol „Herz“ (Anweisungen) gespeichert ist lcd.createChar(3, Herz); skizzieren).