INHOUDSOPGAWE:

LCD COG vir 'n Arduino Nano: 3 stappe
LCD COG vir 'n Arduino Nano: 3 stappe

Video: LCD COG vir 'n Arduino Nano: 3 stappe

Video: LCD COG vir 'n Arduino Nano: 3 stappe
Video: Тест st7567s lcd #arduinoproject 2024, Julie
Anonim
LCD COG vir 'n Arduino Nano
LCD COG vir 'n Arduino Nano

Hierdie instruksie beskryf hoe u 'n COG LCD met 'n Arduino Nano kan gebruik.

COG LCD -skerms is goedkoop, maar is effens moeiliker om te koppel. (COG staan vir "Chip On Glass".) Die een wat ek gebruik bevat 'n UC1701 -bestuurderskyfie. Dit benodig slegs 4 penne van die Arduino: SPI-klok, SPI-data, chip-select en command/data.

Die UC1701 word deur die SPI -bus beheer en loop op 3.3V.

Hier beskryf ek hoe ek dit met 'n Arduino Nano kan gebruik. Dit moet ook werk met 'n Arduino Mini of Uno - ek sal dit binnekort probeer.

Dit is my eerste Arduino -projek en ek het al dekades lank nie C geskryf nie, laat my asseblief weet as ek duidelike foute maak.

Stap 1: Bou die hardeware

Die bou van die hardeware
Die bou van die hardeware
Die bou van die hardeware
Die bou van die hardeware
Die bou van die hardeware
Die bou van die hardeware

Koop 'n COG LCD met 'n UC1701 -chip. Dit moet eerder die SPI -bus gebruik as 'n parallelle koppelvlak. Dit sal ongeveer 14 penne bevat, met die name soos hieronder gelys. (U wil nie 'n parallelle koppelvlak hê met nog baie meer penne met die naam D0, D1, D2 …)

Die een wat ek gekoop het, is: https://www.ebay.co.uk/itm/132138390168 Of u kan "12864 LCD COG" op eBay soek.

Kies een met 'n redelik wye stert met penne op 'n afstand van 1,27 mm - fynere penne sal moeilik wees om te soldeer. Maak seker dat dit 'n UC1701 -chip het. Let op hoe daar in die sesde prentjie op die ebay -bladsy staan "CONNECTOR: COG/UC1701".

Die skerm is deursigtig en dit is moeilik om te weet wat voor en agter is. Bestudeer my foto's noukeurig. Let op waar penne 1 en 14 is - dit is op die stert gemerk.

Die buigsame stert is redelik maklik om te soldeer, maar dit benodig 'n adapter sodat u dit op 'n broodbord kan aansluit. Ek het gekoop: https://www.ebay.co.uk/itm/132166865767 Of u kan op eBay soek na "Adapter Smd SSOP28 DIP28".

Die adapter neem 'n 28-pins SOP-chip aan die een kant of 'n 28-pins SSOP-chip aan die ander kant. 'N SOP -skyfie het 'n penafstand van 0,027 (1,27 mm), wat dieselfde is as die stert van die LCD.

U benodig ook 'n paar kopstukke. Elke keer as ek 'n Arduino of 'n ander module koop, bevat dit meer kopspelde as wat nodig is, sodat u waarskynlik reeds 'n paar het. Soek anders op eBay na "2,54 mm koppenne".

Soldeer 14 van die koppenne op die adapter. Moenie hulle heeltemal deurdruk nie - dit is lekkerder as die agterkant van die adapter plat is. Sit dit plat op u bank sodat die penne nie te ver in die gate gestoot kan word nie. Maak seker dat die penne aan die SOP -kant van die bord is (dws die groter skyfie).

Die stertblokkies is in 'n soort venster. Maak albei kante daarvan met soldeersel vas. Maak die kussings van die adapter vas. Hou die stert van die adapter op sy plek en raak elke stuk met die soldeerbout aan (u benodig 'n redelik fyn punt).

Bind 'n draadjie deur die gate in die adapter om as spanningverligting te dien. (Ek het "transformatordraad" gebruik).

As u dit verkeerd soldeer, moet u nie die stert probeer losmaak nie. Haal die penne een vir een uit en skuif dit na die ander kant van die bord. (Ja, ek het die fout gemaak en die stert weer gesoldeer, daarom is dit 'n bietjie gemors op die foto.)

Stap 2: Koppel aan die Arduino

Koppel aan die Arduino
Koppel aan die Arduino
Koppel aan die Arduino
Koppel aan die Arduino

Hierdie afdeling verduidelik hoe om aan te sluit op 'n Arduino Nano. Dit sal baie dieselfde wees vir 'n Mini of Uno, maar ek het dit nog nie probeer nie.

Bestudeer die kringdiagram.

'N Arduino Nano wat aan 'n USB -poort gekoppel is, loop op 5V. Die LCD werk op 3.3V. U moet dus die LCD van die 3V3 -pen van die Nano aanskakel en die spanning op elke bedieningspen van 5V tot 3.3V verminder.

Die uitleg van die LCD is:

  • 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 is Chip-Select. Dit word laag getrek om die UC1701 -chip te kies (aktiveer). (CS kan CS0 of En of soortgelyk genoem word.)

RST is Herstel. Dit word laag getrek om die chip terug te stel. (RST kan dalk Herstel genoem word.)

CD is opdrag/data. Dit word laag as u opdragte na die chip oor SPI stuur. Dit is hoog wanneer data gestuur word. (CD kan A0 genoem word.)

CLK en SDA is die SPI -buspenne. (SDA kan SPI-data genoem word. CLK kan SCL of SPI-klok wees.)

VB0+ en VB0- word gebruik deur die interne laaipomp van die UC1701. Die laaipomp genereer die onewe spanning wat die LCD benodig. Koppel 'n 100n-kondensator tussen VB0+ en VB0-. Die UC1701 -dokumentasie beveel 2uF aan, maar ek kon nie 'n verskil sien met hierdie spesifieke LCD nie.

As u LCD VB1+ en VB1-pins het, moet u ook 'n 100n kondensator tussen hulle koppel. (As u LCD 'n VLCD -pen het, kan u 'n 100n -kondensator tussen VLCD en Gnd verbind. Dit het geen verskil met my LCD gemaak nie.)

Koppel die LCD soos volg aan die Nano:

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

("*" beteken om 'n potensiële verdeler te gebruik om die spanning te verminder. As die Arduino op 'n onafhanklike toevoer op 3V3 werk, benodig u nie die weerstande nie.)

3.3V word uitgevoer deur die Nano en kan voldoende stroom verskaf vir die LCD. (Die skerm trek ongeveer 250uA.)

5V word ook deur die Nano uitgevoer en kan gebruik word om die agtergrond aan te dryf. Beperk die stroom tot die agtergrond met 'n weerstand van 100ohm.

As u die penne op die Nano ontbreek, kan u RST aan 3V3 koppel - dan kan u D6 vir iets anders gebruik. Die U1701 kan in sagteware herstel word deur 'n opdrag op die SPI. Ek het nog nooit probleme daarmee gehad nie, maar as u u eie stroombaan in 'n lawaaierige omgewing gebruik, kan dit beter wees om 'n hardeware te herstel.

Stap 3: sagteware

Sagteware
Sagteware

In teorie kan u die UC1701 uit die U8g2 -biblioteek ry (of Ucglib of die ander beskikbare biblioteke). Ek het dae lank gesukkel om dit aan die werk te kry, en ek het misluk. Die U8g2 -biblioteek is 'n monster omdat dit 'n groot aantal skyfies kan dryf en dit baie moeilik is om die kode te volg. Daarom het ek opgegee en my eie kleiner biblioteek geskryf. Dit neem baie minder ruimte in die Arduino in (ongeveer 3400 grepe plus lettertipes).

U kan my biblioteek hier aflaai (die aflaai -knoppie op hierdie bladsy). 'N Voorbeeldskets en 'n gebruikersgids word ingesluit. Die webwerf https://www.arduino.cc/en/Guide/Libraries beskryf hoe u 'n biblioteek kan invoer; gaan na die afdeling "Invoer van 'n.zip -biblioteek".

Begin die LCD met

UC1701Begin ();

UC1701Begin kan parameters neem om die penne te verander of om die RST -pen te ignoreer. Die biblioteek gebruik slegs hardeware SPI ('n sagteware SPI word nie verskaf nie). Die skerm kan in die x- en y -as gedraai word. Dit is handig as u die LCD in 'n ander rigting wil monteer.

Verskeie prosedures is uit die U8g2 -biblioteek gedupliseer:

  • DrawLine
  • DrawPixel
  • TekenHlyn
  • DrawVLine
  • DrawBox
  • DrawFrame
  • Teken sirkel
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • Teken Driehoek
  • UC1701SetCursor
  • UC1701ClearDisplay

Sommige prosedures is effens anders:

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

Die tekenprosedures word deur die indeks van 'n lettertipe geslaag. Lettertipes word in die flitsgeheue van die Arduino verklaar, sodat dit nie kosbare SRAM beslaan nie. Drie lettertipes word voorsien (klein, medium en groot). Hulle word slegs gekoppel en beslaan flitsgeheue as u dit gebruik (ongeveer 500 tot 2000 grepe elk).

"Kleur" word anders hanteer as die U8g2 -biblioteek. As die LCD skoongemaak word, het dit 'n donker agtergrond. As MakeMark ('n globale veranderlike) waar is, word die tekening in wit gedoen. As MakeMark vals is, word teken in die donker gedoen.

Sommige prosedures is uniek aan die UC1701:

SetInverted teken swart-op-wit in plaas van wit-op-swart.

leegte SetInverted (bool inv);

Die helderheid en kontras van UC1701 word bepaal deur:

  • void SetContrast (waarde uint8_t); // voorgestel is 14
  • nietige SetResistor (waarde uint8_t); // voorgestel is 7

Hulle werk op 'n taamlik onbevredigende manier saam.

SetEnabled skakel die LCD af:

void SetEnabled (bool en);

Die skerm neem 4uA as jy slaap. U moet ook die agtergrond afskakel - ry dit met 'n pen van die Nano. Na heraktivering is die UC1701 herstel; die skerm word skoongemaak en die kontras en weerstand sal teruggestel word na hul standaardwaardes.

Ten slotte, COG -skerms is goedkoop en redelik groot. Dit is maklik om aan te sluit op 'n Arduino.

Aanbeveel: