LCD2004 I2C
Release status: Documentation
Description | LCD2004 I2C
|
License | |
Author | |
Contributors | |
Based-on | [[]]
|
Categories | |
CAD Models | |
External Link | []
|
Introductie
Zoals we allemaal weten, hoewel LCD en sommige andere schermen de interactie tussen mens en machine enorm verrijken, delen ze een gemeenschappelijke zwakte. Wanneer ze zijn aangesloten op een controller, zullen meerdere IO's bezet zijn van de controller die niet zoveel buitenpoorten heeft. Ook beperkt het andere functies van de controller. Daarom is LCD2004 met een I2C-bus ontwikkeld om het probleem op te lossen.
I2C-bus is een type seriële bus uitgevonden door PHLIPS. Het is een high performance seriële bus met bus ruling en hoge of lage snelheid apparaatsynchronisatie functie vereist door meerdere host systeem. I2C-bus heeft slechts twee bidirectionele signaallijnen, Serial Data Line (SDA) en Serial Clock Line (SCL). De blauwe potentiometer op de I2C LCD2004 wordt gebruikt om de achtergrondverlichting aan te passen, zodat deze gemakkelijker kan worden weergegeven op de I2C LCD2004.
'Experimenteel principe
In dit experiment laten we I2C LCD2004 4-regelige tekens weergeven door te programmeren.
I²C (Inter-Integrated Circuit), uitgesproken als I-kwadraat-C, is een multi-master, multi-slave, single-ended, seriële computerbus uitgevonden door Philips Semiconductor (nu NXP Semiconductors). Het wordt meestal gebruikt voor het aansluiten van randapparatuur-IC's met lagere snelheid op processors en microcontrollers. Als alternatief wordt I²C gespeld als I2C (uitgesproken als I-twee-C) of IIC (uitgesproken als I-I-C).
I²C gebruikt slechts twee bidirectionele open afvoerleidingen, Serial Data Line (SDA) en Serial Clock Line (SCL), opgetrokken met weerstanden. Typische gebruikte spanningen zijn +5 V of +3,3 V, hoewel systemen I²C (Inter-Integrated Circuit), uitgesproken als I-kwadraat-C, is een multi-master, multi-slave, single-ended, seriële computer-bus uitgevonden door Philips Semiconductor (nu NXP Semiconductors). Het wordt meestal gebruikt voor het aansluiten van randapparatuur-IC's met lagere snelheid op processors en microcontrollers. Als alternatief wordt I²C gespeld als I2C (uitgesproken als I-two-C) of IIC (uitgesproken als I-I-C).
I²C gebruikt slechts twee bidirectionele open afvoerleidingen, Serial Data Line (SDA) en Serial Clock Line (SCL), opgetrokken met weerstanden. Typische gebruikte spanningen zijn +5 V of +3,3 V, hoewel systemen met andere spanningen zijn toegestaan.
Ga voor meer informatie over het werkingsprincipe van I2C naar I²C.
I2C Module
I2C-adres wijzigen
Wanneer er een conflict optreedt op het I2C-adres, kunt u het I2C-adres wijzigen door de A0-, A1-, A2-pinnen in te stellen op 1 of 0 op de PCF8574-chip.
Er is een module aan de achterkant van de I2C LCD, de belangrijkste chip is PCF8574 of PCF8574T, pin A0, A1, A2 is uitgebreid, zoals hieronder weergegeven.
Bestand:MG 0611-2.jpg
Voor de PCF8574T-chip, I2C-adresformaat: 0 0 1 0 0 A2 A1 A0. Het standaardadres is: 0x27
Voor de PCF8574-chip, I2C-adresformaat: 0 0 1 1 1 A2 A1 A0. Het standaardadres is: 0x3F
Als u het standaardadres wilt wijzigen, hoeft u alleen maar pinA0, A1, A2 naar GND te verbinden.
Voor PCF8574T-chip, I2C-adresbereik: 0x20-0x27
Voor PCF8574-chip, I2C-adresbereik: 0x38-0x3F
Als u het niet zeker weet, kunt u de leesI2C schets gebruiken om het gewijzigde adres te scannen.
Aansluiten aan een Arduino
Zie de volgende tabel voor de verbinding tussen het I2C LCD2004 en het Arduino Uno-bord:
I2C LCD2004 | ARDUINO |
---|---|
GND | 0V |
VCC | 5V |
SDA | A4 UNO /pin 20 mega2560 |
SCL | A5 UNO /pin 21 mega2560 |
Bibliotheek toevoegen
Voordat u de code uploadt naar het besturingsbord, hebt u de LiquidCrystal_I2C bibliotheek toegevoegd.
1) Download de LiquidCrystal_I2C bibliotheek
2) Open de Arduino IDE, selecteer Sketch -> Include Library -> Add ZIP Library
3) Zoek het bestand LiquidCrystal_I2C dat u zojuist hebt downloadt. Klik op open en vervolgens wordt u gevraagd door "Bibliotheek toegevoegd aan uw bibliotheken. Vink 'Bibliotheken importeren' aan". U kunt ook zien dat de zojuist geïmporteerde bibliotheken in de lijst zijn verschenen door Sketch->Inclusief Library->LiquidCrystal_I2C.
Voorbeeld code
Kopieer de volgende code naar de Arduino IDE
/*****************************************
* name: I2C LCD2004
* function: You should now see your I2C LCD2004 display "Hello,world!","IIC/I2C LCD2004"
* "20 cols, 4 rows","www.sunfounder.com"
********************************/
/********************************/
// include the library code
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
/*********************************************************/
void setup()
{
lcd.init(); //initialize the lcd
lcd.backlight(); //open the backlight
lcd.setCursor ( 0, 0 ); // go to the top left corner
lcd.print(" Hello,world! "); // write this string on the top row
lcd.setCursor ( 0, 1 ); // go to the 2nd row
lcd.print(" IIC/I2C LCD2004 "); // pad string with spaces for centering
lcd.setCursor ( 0, 2 ); // go to the third row
lcd.print(" 20 cols, 4 rows "); // pad with spaces for centering
lcd.setCursor ( 0, 3 ); // go to the fourth row
lcd.print(" www.kunstmanen.net ");
}
/*********************************************************/
void loop()
{
}
/************************************************************/
Stap 4: Upload de code
Voordat u de code uploadt, moet u het juiste bord en de juiste poort selecteren, volgt u de stappen:
1) Klik op Tools ->Board en selecteer Arduino / Genuino Uno.
2) Dan klik Tools ->Serial Port.
3) Klik op het uploadpictogram om de code naar de ARDUINO
te uploaden
Als 'Klaar met uploaden' onder aan het venster wordt weergegeven, betekent dit dat de schets met succes is geüpload.
Resultaat
U zou nu moeten zien dat uw I2C LCD1602/LCD2004 de vloeiende tekens "Hallo, wereld!", "IIC / I2C LCD2004", "20 cols, 4 rijen" en "www.kunstmanen.net" weergeeft
Lees I2C Address
Als alles correct is, maar het display toont slechts 16 zwarte rechthoeken op regel 1.it kan het adres van i2c niet 0x27 zijn, daarom moet u de volgende code uitvoeren om het adres te lezen en wijzig vervolgens de 0x27 waarop u leest.
LiquidCrystal_I2C lcd(0x27,16,2);
/***************************************************** * name:I2C_Address * function:read the address of the I2C lcd1602 * Connection: * I2C UNO * GND GND * VCC 5V * SDA A4(pin20 in mega2560) * SCL A5(pin21 in mega2560) ********************************************************/ #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan }
Bronnen
I2C_LCD2004 test code
PCF8574T_datasheet
LiquidCrystal_I2C library