Indholdsfortegnelse:

LCD COG til en Arduino Nano: 3 trin
LCD COG til en Arduino Nano: 3 trin

Video: LCD COG til en Arduino Nano: 3 trin

Video: LCD COG til en Arduino Nano: 3 trin
Video: How to make a LED digital counter using 7- Segment Display 2024, Juli
Anonim
LCD COG til en Arduino Nano
LCD COG til en Arduino Nano

Denne instruktionsbog beskriver, hvordan du bruger et COG LCD med en Arduino Nano.

COG LCD -skærme er billige, men er lidt sværere at interface. (COG står for "Chip On Glass".) Den jeg bruger indeholder en UC1701 driverchip. Det kræver kun 4 ben af Arduino: SPI-ur, SPI-data, chip-select og kommando/data.

UC1701 styres af SPI -bussen og kører ved 3,3V.

Her beskriver jeg, hvordan man bruger det med en Arduino Nano. Det burde også fungere med en Arduino Mini eller Uno - jeg prøver det snart.

Dette er mit første Arduino -projekt, og jeg har ikke skrevet C i årtier, så lad mig vide det, hvis jeg laver åbenlyse fejl.

Trin 1: Opbygning af hardware

Bygger hardware
Bygger hardware
Bygger hardware
Bygger hardware
Bygger hardware
Bygger hardware

Køb en COG LCD, der indeholder en UC1701 -chip. Det skal bruge SPI -bussen frem for en parallel grænseflade. Det vil have omkring 14 pins, der vil blive mærket med navne som dem, der er angivet nedenfor. (Du vil ikke have en parallel grænseflade med mange flere ben mærket D0, D1, D2 …)

Den jeg købte er: https://www.ebay.co.uk/itm/132138390168 Eller du kan søge på eBay efter "12864 LCD COG".

Vælg en, der har en ret bred hale med stifter med et afstand på 1,27 mm - finere stifter vil være svære at lodde. Sørg for, at den har en UC1701 -chip. Læg mærke til hvordan det på det sjette billede på ebay -siden siger "CONNECTOR: COG/UC1701".

Displayet er gennemsigtigt, og det er svært at vide, hvad der er for- og bagside. Studer mine billeder omhyggeligt. Bemærk, hvor ben 1 og 14 er - de er markeret på halen.

Den fleksible hale er ganske let at lodde, men det kræver en adapter, så du kan tilslutte den til et brødbræt. Jeg købte: https://www.ebay.co.uk/itm/132166865767 Eller du kan søge på eBay efter "Adapter Smd SSOP28 DIP28".

Adapteren tager en 28-benet SOP-chip på den ene side eller en 28-benet SSOP-chip på den anden side. En SOP -chip har en stiftafstand på 0,05 (1,27 mm), hvilket er det samme som halen på LCD -skærmen.

Du skal også bruge nogle header pins. Når jeg køber et Arduino eller andet modul, kommer det med flere header pins, end der er brug for, så du har sikkert allerede nogle. Ellers skal du søge på eBay efter "2,54 mm header pins".

Lodde 14 af hovedstifterne på adapteren. Skub dem ikke helt igennem - det er pænere, hvis bagsiden af adapteren er flad. Læg den fladt på din bænk, så stifterne ikke kan skubbes for langt ind i hullerne. Sørg for, at benene er på SOP -siden af brættet (dvs. den større chip).

Halens puder er i et slags vindue. Tin begge sider af dem med loddetin. Tin adapterens puder. Hold adapterens hale på plads, og rør derefter ved hver pude med loddejernet (du skal bruge en temmelig fin spids).

Bind lidt tråd gennem hullerne i adapteren for at fungere som trækaflastning. (Jeg brugte "transformatortråd").

Hvis du lodder den på den forkerte vej, skal du ikke prøve at aflodse halen. Tag stifterne ud ad gangen og flyt dem til den anden side af brættet. (Ja, jeg begik den fejl og lodde halen igen, hvorfor det er lidt rodet på billedet.)

Trin 2: Tilslutning til Arduino

Tilslutning til Arduino
Tilslutning til Arduino
Tilslutning til Arduino
Tilslutning til Arduino

Dette afsnit forklarer, hvordan du opretter forbindelse til en Arduino Nano. Det vil være meget ens for en Mini eller Uno, men jeg har ikke prøvet det endnu.

Undersøg kredsløbsdiagrammet.

En Arduino Nano, der er tilsluttet en USB -port, kører ved 5V. LCD'et kører ved 3,3V. Så du er nødt til at forsyne LCD'et fra 3V3 -stiften på Nano og reducere spændingen på hver styrepind fra 5V til 3,3V.

Pinout på LCD'et er:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Gnd
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS er Chip-Select. Det trækkes lavt for at vælge (aktivere) UC1701 -chippen. (CS kaldes måske CS0 eller En eller lignende.)

RST er Reset. Det trækkes lavt for at nulstille chippen. (RST kaldes muligvis Nulstil.)

CD er kommando/data. Det trækkes lavt, når der sendes kommandoer til chippen over SPI. Det er højt, når du sender data. (CD'en hedder måske A0.)

CLK og SDA er SPI -busstifterne. (SDA kaldes muligvis SPI-data. CLK kan være SCL eller SPI-ur.)

VB0+ og VB0- bruges af den interne ladningspumpe i UC1701. Opladningspumpen genererer de ulige spændinger, LCD -skærmen har brug for. Tilslut en 100n kondensator mellem VB0+ og VB0-. UC1701 -dokumentationen anbefaler 2uF, men jeg kunne ikke se en forskel med denne særlige LCD.

Hvis din LCD har VB1+ og VB1-pins, skal du også tilslutte en 100n kondensator mellem dem. (Hvis din LCD har en VLCD -pin, kan du prøve at forbinde en 100n kondensator mellem VLCD og Gnd. Det gjorde ingen forskel med min LCD.)

Tilslut LCD'en til Nano som følger:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

("*" betyder at bruge en potentiel divider til at reducere spændingen. Hvis Arduino kører ved 3V3 fra en uafhængig forsyning, behøver du ikke modstandene.)

3,3V udsendes af Nano og kan levere tilstrækkelig strøm til LCD'et. (Displayet tegner omkring 250uA.)

5V udsendes også af Nano og kan bruges til at drive baggrundsbelysningen. Begræns strømmen til baggrundsbelysningen med en 100ohm modstand.

Hvis du mangler pins på Nano, kan du slutte RST til 3V3 - så kan du bruge D6 til noget andet. U1701 kan nulstilles i software ved hjælp af en kommando på SPI'en. Jeg har aldrig haft problemer med det, men hvis du bruger dit eget kredsløb i støjende omgivelser, kan det være bedre at bruge en hardware -nulstilling.

Trin 3: Software

Software
Software

I teorien kan du køre UC1701 fra U8g2 -biblioteket (eller Ucglib eller de andre tilgængelige biblioteker). Jeg kæmpede i dagevis for at få det til at fungere og mislykkedes. U8g2 -biblioteket er et monster, fordi det kan drive et stort udvalg af chips, og det er meget svært at følge koden. Så jeg opgav og skrev mit eget mindre bibliotek. Det fylder meget mindre i Arduino (ca. 3400 bytes plus skrifttyper).

Du kan downloade mit bibliotek herfra (knappen Download på denne side). En eksempelskitse og en brugervejledning er inkluderet. Websiden https://www.arduino.cc/en/Guide/Libraries beskriver, hvordan man importerer et bibliotek; gå til afsnittet "Import af et.zip -bibliotek".

Initialiser LCD -skærmen med

UC1701Begin ();

UC1701Begin kan tage parametre for at ændre benene eller ignorere RST -stiften. Biblioteket bruger kun hardware -SPI (en software -SPI leveres ikke). Displayet kan vendes i x- og y -akserne. Det er nyttigt, hvis du vil montere LCD'et i en anden retning.

Flere procedurer er blevet kopieret fra U8g2 -biblioteket:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701ClearDisplay

Nogle procedurer er lidt forskellige:

  • void DrawChar (uint8_t c, word Font);
  • void DrawString (char * s, word Font);
  • void DrawInt (int i, word Font);

Strengtegningsprocedurer passeres indekset for en skrifttype. Skrifttyper erklæres i flashhukommelsen på Arduino, så de ikke optager dyrebar SRAM. Der leveres tre skrifttyper (små, mellemstore og store). De er kun forbundet og optager flash -hukommelse, hvis du bruger dem (ca. 500 til 2000 bytes hver).

"Farve" håndteres anderledes end U8g2 -biblioteket. Når LCD'et er slettet, har det en mørk baggrund. Hvis MakeMark (en global variabel) er sand, tegnes der i hvidt. Hvis MakeMark er falsk, tegnes der i mørke.

Nogle procedurer er unikke for UC1701:

SetInverted tegner i sort-på-hvidt frem for hvidt-på-sort.

void SetInverted (bool inv);

Lysstyrken og kontrasten for UC1701 indstilles af:

  • void SetContrast (uint8_t værdi); // foreslået er 14
  • void SetResistor (uint8_t værdi); // foreslået er 7

De arbejder sammen på en temmelig utilfredsstillende måde.

SetEnabled slukker LCD'et:

void SetEnabled (bool en);

Displayet tager 4uA, når du sover. Du bør også slukke for baggrundslyset - kør det fra en pin på Nano. Efter genaktivering er UC1701 blevet nulstillet; displayet slettes, og kontrasten og modstanden er blevet nulstillet til deres standardværdier.

Så til sidst er COG -skærme billige og en anstændig størrelse. De er nemme at forbinde til en Arduino.

Anbefalede: