Jak ovládat displej nokia 5110 Výhody používání Arduino Uno. Popis Arduino Uno

Philips PCD8544.
Pro připojení modulu k dalším zařízením obsahuje deska konektorovou zástrčku a otvory pro pájecí vodiče. V rozích desky jsou také 4 montážní otvory.
Monochromatický displej Nokia 5110 LCD (modrá obrazovka) je podsvícen modrými LED diodami. Během let výroby byla Nokia 5110 používána a je používána v celé řadě aplikací. Modul displeje usnadňuje připojení Nokie a instalaci do zařízení. Díky modulu je zjednodušeno první seznámení elektrotechnika nebo programátora s LCD displejem Nokia 5110. Původně se používal jako indikátor mobilního telefonu, ale displej se rozšířil i do dalších kategorií zařízení. Je vhodné použít v měřicích přístrojích: voltmetry, ampérmetry, ohmmetry a další. Displej je také užitečný pro zobrazování hodnot z lékařských mobilních zařízení. Zajímavé je použití pro stupnici rádiového přijímače nebo indikátor úrovně signálu v zařízení pro reprodukci zvuku. Obrazovka s rozlišením 84x48 pixelů umožňuje zobrazovat symbolické a grafické informace.
Pokud máte zkušenosti s Nokia 3310 LCD, bude snadné ovládat Nokia 5110 LCD, protože tyto indikátory jsou postaveny na stejném ovladači PCD8544.

Specifikace LCD modulu Nokia 5110

Výživa
napětí 2,7…3,3 V
proud
podsvícení vypnuto 5 mA
podsvícení na 20 mA

Teplota vzduchu během provozu 0…50
Skladovací teplota -10…70

LCD indikátor Nokia 5110

Hlavní vlastnosti

Hlavní součástí LCD modulu Nokia 5110 je LCD indikátor. Má vestavěné generátory napájecího napětí a předpětí LCD prvků a nechybí LED podsvícení. Rozhraní SPI pro zadávání informací. Nokia 5110 může pracovat ve čtyřech režimech: normální, inverze obrazu, prázdná obrazovka a „všechny body zapnuté“. Uživatel může také ovládat teplotu, napájecí napětí a předpětí.

Výživa
napětí 2,7…3,3 V
proud až 320 µA
Frekvence hodin až 4 MHz
Doba resetu minimálně 100 ns

Struktura displeje

Displej je tvořen maticí prvků LCD a mikroobvodem PCD8544 pro jejich ovládání, umístěným v pouzdře namontovaném na desce. Obsahuje také čtyři LED podsvícení obrazovky. Informace o stavu zobrazovacích bodů jsou uloženy v paměti RAM řadiče PCD8544, každý bod odpovídá jednomu bitu paměti. K dispozici je také vestavěný čítač adres, který se automaticky zvýší při zápisu dalšího bajtu informace do paměti.

Ovládání displeje

Displej, který se provádí přes rozhraní SPI, je podřízené zařízení. Místo obvyklých čtyř ovládacích linií jsou však pouze tři. Jedná se o CLK hodiny, výběr čipu SCE a vstupní datové linky MOSI. Neexistuje žádná výstupní linka MISO. To vede k nutnosti používat speciální metody ovládání, více o tom níže. Rozhraní pracuje v režimech SPI-0 nebo SPI-3. Nokia 5110 má také další informační/příkazový ovládací řádek - D/C̅. Každý bajt odeslaný na displej lze interpretovat jako příkaz nebo informační bajt, v závislosti na úrovni na lince D/C̅.
Přenos informací je jednosměrný a data nelze číst z paměti a registrů displeje. Proto musí program poskytovat možnost ovládat stavy zobrazení. Je tu však ještě jedna funkce, která komplikuje správu. Tato funkce souvisí s organizací paměti.

Paměť se skládá ze šesti bank, z nichž každá obsahuje 84 buněk s kapacitou 1 byte.

Adresování každého pixelu indikátoru. Celkem máme 84x48 pixelů, uspořádaných do 6 horizontálních bank (nula až pět) a 84 sloupců.

Každá banka obsahuje 8 vertikálně uspořádaných pixelů, které v součtu šesti bank dávají 48 řádků. Obrázek ukazuje, jak bude daný pixel zobrazen z RAM na displeji každý řádek na obrázku představuje jednu banku.
Informace se do paměti zapisují bajt po bajtu, ne bit po bitu, a neexistuje způsob, jak ovládat každý bod, ale pouze skupiny osmi bodů. To v kombinaci s faktem, že informace z LCD paměti Nokie 5110 nelze přečíst, znamená, že před odesláním je nutné si zapamatovat, která data jsou v které buňce uložena. Jinak může dojít ke ztrátě informací při odeslání nových dat na displej. Tato funkce je znázorněna na obrázku znázorňujícím nahrazení symbolu. Při psaní řídicího programu je nutné počítat s možností ukládání dat.

Nahrazení symbolu L symbolem A.

Displej má velikost 84x48 pixelů. Informace jsou vydávány ve vertikálních blocích o výšce 8 pixelů, jejichž hodnoty jsou určeny bitovými hodnotami ve výstupním bajtu. Nejméně významný bit kóduje horní pixel.
Když se podíváme dopředu na popisy příkazů, řekněme. Příkazy 1xxxxxxx a 01000yyy definují souřadnice kurzoru - řádek a pozici, na které bude zobrazeno dalších 8 bitů dat. Po výstupu bajtu se kurzor automaticky přesune na sousední pozici.
Pokud je příkazem 00100PDVH zvolen režim horizontálního adresování V=0, kurzor se přesune doprava a další datový bajt se zobrazí na sousední pozici vpravo. Po dosažení pravého okraje obrazovky se kurzor přesune na začátek dalšího řádku. Je-li zvoleno vertikální adresování V=1, kurzor se přesune dolů na další řádek a po posledním řádku se kurzor přesune o jednu vodorovnou pozici doprava a umístí se na horní řádek.
Jako mezipaměť můžete použít paměť řídicího ovladače, který bude ukládat kopii dat na displej. Před odesláním je nutné upravit data, podle toho, jaké informace jsou uloženy v mezipaměti.

Ovládací příkazy Nokia 5110

Displej se ovládá odesláním příkazového slova přes rozhraní SPI. Velikost slova je 1 bajt. Ovládací příkazy jsou rozděleny do 3 kategorií.

Nejvyšší funkce managementu

Nastavit typ funkce - označuje, s jakým typem funkcí bude modul pracovat, základní nebo pokročilé.
Nastavit režim napájení - zapne nebo vypne napájení.
Nastavit režim adresování - určuje typ adresování paměti: vertikální nebo horizontální. V prvním případě se po zapsání bajtu dat zvýší čítač adresy Y, to znamená, že záznam bude probíhat ve sloupcích. Ve druhém - čítači X-adresy půjde záznam řádek po řádku.
Funkce jsou přeneseny na Nokia 5110 LCD, když je linka D/C̅ nízká. Jsou definovány jedním příkazovým slovem. Toto slovo musí být odesláno na displej při zahájení provozu. Formát:

0 0 1 0 0 PD V H

Bit PD určuje režim napájení, nastavení na PD znamená režim vypnutí.
Režim adresování bitu V: 1 - vertikální, 0 - horizontální.
Bit H je typ funkcí, které budou použity pro další práci: 0 - normální, 1 - rozšířené.
Jak vidíte, je nutné si zapamatovat aktuální stav displeje, abyste při nastavování nové hodnoty parametru neztratili informace o hodnotách ostatních. Příkaz 00100PDVH je přítomen v obou sadách příkazů.

Základní funkce

Nastavte režim zobrazení na 00001D0E. Definuje režim zobrazení: prázdná obrazovka, všechny body zapnuté, normální zobrazení, inverzní zobrazení. E - obrazový inverzní znak, D - obrazový výstup. Pokud D=0, pak je obrazovka buď zcela čistá E=0, nebo zcela černá E=1.
Nastavte příkaz X-adresa 1xxxxxxx, nebo 0x80 + x výběr vodorovné polohy v aktuálním řádku, kde se bude obrázek zobrazovat. Kde x=0 je poloha zcela vlevo, 83 je poloha zcela vpravo.
Příkaz SetY-address 01000yyy nastavuje Y-adresu buňky, do které bude zapsán další bajt. Příkaz nebo 0x40+y vyberte číslo řádku (stránky), na kterém je obrázek zobrazen. Y=0 je horní řádek, 5 je spodní řádek. Linka je vysoká 8 bodů.

Pokročilé funkce

Rozšířená sada příkazů je vybrána po odeslání příkazu 00100PDV1.
Nastavte teplotní režim. Příkaz 000001tt, nebo 0x04 + t vyberte jeden ze čtyř režimů korekce teploty. V závislosti na režimu se bude napětí displeje měnit se změnou teploty.
Nastavte předpětí prvků LCD displeje. Příkaz 00010bbb nebo 0x10 + b vybere jeden z osmi režimů pro výpočet posunů úrovní pro ovládání LCD. Pro běžné displeje Nokia je doporučený režim 0001011 nebo 0x13.
Nastavte napájecí napětí pro prvky LCD displeje. Příkaz 1vvvvvvv nebo 0x80 + v vyberte napětí na generátoru napětí zesilovače pro LCD. Při v=0 se generátor vypne. Výstupní napětí se vypočítá pomocí vzorce VLCD = 3,06 V + v * 0,06 V. V závislosti na volbě metody korekce napětí se tato hodnota mění v závislosti na teplotě. Aby nedošlo k poškození displeje při nízkých teplotách, doporučuje se, aby tato hodnota byla nižší než 8,5 V, tj. v<=90. Для обычных дисплеев Nokia это нормальное рабочее значение этого параметра примерно равно 56, т. е. команда принимает вид 10111000, или 0xB8.
Práce se základními a pokročilými funkcemi je jednodušší, protože každá má své vlastní příkazové slovo.
Je třeba mít na paměti, že abyste mohli pracovat s určitým typem funkcí, musíte nastavit displej tak, aby s těmito funkcemi pracoval. V opačném případě povede odeslání příkazového slova k nesprávnému provedení tohoto příkazu. Více podrobností o ovládacích příkazech naleznete v dokumentaci na straně 11.

Inicializace displeje

Musí být provedeno do 30 ms poté, co se objeví napájení v následujícím pořadí:
resetujte snížením odpovídajícího vstupu po dobu 100 ns nebo déle,
zapněte displej a vyberte rozšířenou sadu příkazů odesláním 0x21,
odeslat příkaz offsetu napětí 0x13,
nastavte korekci teploty příkazem 0x04,
zapněte generátor vysokého napětí na úroveň 6,42 V pomocí příkazu 0xB8,
vrátit se ke standardní sadě příkazů odesláním 0x20,
povolte grafický režim příkazem 0x0C.
Po těchto krocích je Nokia 5110 LCD připravena k použití.

Připojení modulu LCD Nokia 5110

Výstup signálů na kontakty modulu je znázorněn na obrázku v horní části stránky. Na obrázku může být i jiné uspořádání kontaktů.

Jedna z možností umístění kontaktů.

Modulové signály a linky

Napájení VCC 3,3V
GND Společný vodič
SCE Enable, aktivní nízká
Reset Reset, aktivní nízká
D/C̅ Data/příkaz: 0 - data, 1 - příkaz
Vstup rozhraní SDIN
Hodinový signál SCLC
LED podsvícení. U modulů na červené desce připojte ke společnému, u modrých modulů připojte k napájení. V obvodu podsvícení použijte odpor 330 Ohmů. Některé modifikace již mají nainstalovaný odpor, jiné ne. Chcete-li zjistit přítomnost odporu a vybrat optimální režim podsvícení, měli byste sledovat proud modulu a proud podsvícení. Nemělo by překročit 20 mA.

Pokud k rozhraní SPI mikrokontroléru nejsou připojena žádná další zařízení, pak pro úsporu kontaktů hlavního řídicího modulu zařízení a snížení počtu komunikačních linek by měl být kolík výběru aktivního zařízení SCE připojen ke kolíku GND na modulu rada. Ale je tu nevýhoda. Pokud ovladač Nokia ztratil synchronizaci s MK, není nyní možné jej zjistit.
Tímto způsobem by mělo být provedeno spolehlivější připojení. Vytáhněte toto vedení na vysokou úroveň pomocí odporu 100-500 kOhm, abyste zabránili rušení ovlivňovat ovladač, když je MK ve stavu reset.
Při práci s mikrokontroléry AVR je vhodné použít rozhraní USART v režimu SPI master. Režim SPI-3 (CPHA=1, CPOL=1). To znamená, že zatímco nedochází k žádné výměně, linka SCLK je vysoká a kontrolér čte data z linky SDIN na náběžné hraně linky SCLK po dobu 100 ns. V tomto případě musí být nastaveny minimálně 100 ns před náběžnou hranou. Přenos se provádí v 8 bitech, nejvýznamnější první.
Úroveň na linii D/C̅ určuje, jak interpretovat přijatá data. Vysoká úroveň znamená, že mají být zobrazena přenášená data, nízká úroveň znamená, že je vysílán příkaz. Řadič čte hodnotu na tomto řádku spolu s posledním (nejnižším) bitem každého přeneseného datového bytu. To může být obtížné při použití asynchronního hardwarového přenosu. Před nastavením úrovně musíte počkat na dokončení přenosu předchozího bajtu.

Propojení LCD modulu Nokia 5110 a Arduino UNO.

Vstupní signály modulu musí odpovídat logickým úrovním obvodu napájeného napětím 3,3 V. Při práci s mikrokontrolérem s napájením 5 V je třeba použít obvody pro přizpůsobení úrovní.

Grafika

Na začátku přípravy grafického obrázku byste si měli v libovolném grafickém editoru připravit černobílý obrázek ve formátu *.bmp s rozlišením 84x48 bodů. Připravili jsme takový obrázek v Malování, tady je:

Název souboru obrázku musí být uložen latinkou. Pomocí programu

V tomto tutoriálu nejprve ukážeme některá data na obrazovce Nokia 5110 a poté na ní zobrazíme data senzoru DHT22. Chystáme se propojit Nokia 5110 LCD a Arduino. Rozhraní Nokia 5110 Arduino se seznámíte na dvou příkladech. Nejprve na obrazovce pouze zobrazíme některá data a ve druhém příkladu načteme hodnoty ze senzoru teploty a vlhkosti DHT22 a zobrazíme je na LCD obrazovce Nokia 5110.

Nokia 5110 LCD je vynikající volbou pro zobrazování dat. Je levnější než běžné LCD a velmi snadno se používá s mikrokontroléry. Stačí připojit pár vodičů a můžete začít.

Pro připojení Nokie 5110 k Arduinu budeme potřebovat samotnou obrazovku s mikrokontrolérem a řadu dalších dílů.

  • Nokia 5110 LCD × 1
  • Víceotáčkový přesný potenciometr - 1 kΩ (25 otáček) × 1
  • Rezistor 10 kOhm × 4
  • Rezistor 1 kOhm × 1
  • Rezistor 330 ohm × 1
  • Propojky × 1
  • Rozvržení (univerzální) × 1

Kromě toho budeme potřebovat software ve formě, kterou pravděpodobně znáte.

Pinout Nokia 5110

Závěry Nokia 5110 LCD vypadá takto:

RST: resetovací kolík
S.C.E.: kolík výběru čipu
D/C: (Data/Příkaz): Toto je kolík pro výběr režimu. LOW znamená příkazový režim a HIGH znamená datový režim.
DN(Datový kolík): Sériový vstup dat
SCLK: sériový hodinový signál
VCC: vstupní napětí 2,7 až 3,3 V
LED: Tato LED je podsvícení. Vstupní napětí 3,3V
GND: Země

Příklad č. 1

V prvním příkladu jednoduše zobrazíme data na LCD Nokie 5110. Schéma zapojení pro propojení Nokie 5110 a Arduina je uvedeno níže.

Schéma zapojení

Nokia 5110 LCD vyžaduje k provozu 3,3 V, takže k převodu 5 V na 3,3 V budeme muset použít odpory. Pokud budete telefon Nokia 5110 provozovat bez odporů, obrazovka bude fungovat, ale životnost LCD se sníží.

  • Připojte kolík 1 (vývod RST) ke kolíku 6 Arduina přes 10k ohmový odpor.
  • Připojte pin 2 (SCE pin) k pinu 7 Arduina přes odpor 1k ohm.
  • Připojte pin 3 (D/C pin) k pinu 5 Arduina přes 10k ohmový odpor.
  • Připojte pin 4 (pin DIN) k pinu 4 Arduina přes 10k ohmový odpor.
  • Připojte pin 5 (CLK pin) k pinu 3 Arduina přes 10k ohm odpor.
  • Připojte pin 6 (VCC pin) k 3,3V pinu Arduina.
  • Připojte pin 7 (LED pin) ke střednímu pinu 1k ohm potenciometru přes 330 ohm rezistor a připojte další dva piny k VCC a zemi.
  • Připojte pin 8 (GND pin) k zemi Arduino.

Připojený potenciometr slouží ke zvýšení nebo snížení podsvícení LCD. Můžete jej připojit na 3,3V, pokud chcete, aby bylo podsvícení neustále silné, nebo jej můžete připojit k zemi, pokud podsvícení mít nechcete.

Kód

Stáhněte si knihovnu Nokia 5110 níže.

Samotný kód prvního příkladu:

#zahrnout PCD8544 LCD; void setup() ( lcd.begin(84, 48); ) void loop() ( lcd.setCursor(0, 0); lcd.print(" VÍTEJTE "); lcd.setCursor(0, 1); lcd.print ("Komu"); lcd.setCursor(0,2);

Nejprve zařadíme knihovnu pro Nokia 5110 LCD. Knihovna bude obsahovat všechny příkazy, které budeme potřebovat pro LCD Nokia 5110. Poté jsme deklarovali proměnnou nazvanou „lcd“ typu PCD8544.
#zahrnout PCD8544 LCD;

Poté ve funkci nastavení nastavíme rozlišení pro Nokia 5110 LCD. LCD displej Nokia5110 má rozlišení 84x48, takže jsme v Arduino IDE nastavili rozlišení na 84x48.

lcd.begin(84, 48);

Poté jsme ve funkci smyčky nejprve umístili kurzor na první řádek a vytiskli "Vítejte!" (VÍTEJTE)..

Lcd.setCursor(0, 0);

lcd.print(" VÍTEJTE ");

lcd.setCursor(0, 1);

Schéma zapojení

lcd.print("Komu");

  • lcd.setCursor(0,2);
  • lcd.print("site");
  • zpoždění(200);

Kód

Příklad č. 2

Ve druhém příkladu připojíme k Arduinu snímač teploty a vlhkosti DHT22 a pomocí DHT22 odečteme teplotu, vlhkost a tepelný index. Tyto údaje pak zobrazíme na LCD displeji Nokie 5110. Schéma zapojení Nokie 5110, Arduino a rozhraní DHT22 je uvedeno níže.

#zahrnout #include "DHT.h" #define DHTPIN 8 #define DHTTYPE DHT22 PCD8544 lcd; DHT dht(DHTPIN, DHTTYPE); void setup() ( lcd.begin(84, 48); dht.begin(); ) void loop() ( lcd.clear(); plovoucí brum = dht.readHumidity(); float temp = dht.readTemperature(); //Čtení teploty ve stupních float fah = dht.readTemperature(true) //Čtení teploty ve fahrenheitu if (isnan(hum) || isnan(temp) || isnan(fah)) ( //Kontrola, zda je arduino); obdrželi hodnoty nebo ne lcd.println("Nepodařilo se přečíst ze senzoru DHT!" návrat float heat_index = dht.computeHeatIndex(fah, hukot) //Čtení tepelného indexu ve fahrenheitu float heat_indexC = dht. convertFtoC (index_tepla) lcd.setCursor(0, 0); .setCursor(0, 1); : "); lcd.print(fah) lcd.setCursor(0,3); (" *C "); lcd.setKurzor(0,4);

lcd.println(" *F ");

#zahrnout zpoždění (2000);

) Nejprve jsme zahrnuli knihovny pro Nokia 5110 LCD a senzor teploty a vlhkosti DHT22. Poté jsme inicializovali pin 8 pro DHT22 (DHTPIN 8) a určili typ DHT senzoru. Dostupné jsou i jiné modely snímačů DHT, ale my jsme použili DHT22 kvůli jeho vysoké přesnosti. Poté jsme deklarovali proměnnou „lcd“ typu PCD8544 pro LCD displej a proměnnou „dht“ typu DHT pro snímač DHT22..

#include "DHT.h" #define DHTPIN 8 #define DHTTYPE DHT22 PCD8544 lcd; DHT dht(DHTPIN, DHTTYPE);

Poté ve funkci nastavení nastavíme rozlišení pro Nokia 5110 LCD. LCD displej Nokia5110 má rozlišení 84x48, takže jsme v Arduino IDE nastavili rozlišení na 84x48. Poté jsme začali přijímat data ze senzoru DHT22 pomocí příkazu

dht.begin()

Pravděpodobně jsem, stejně jako všichni stavitelé Arduina, měl v hlavě nějaký bláznivý nápad. Všechny potřebné díly jsem objednal z Číny. Museli jsme čekat velmi dlouho, ale pak byl s předstihem doručen klon desky Arduino Uno a LCD displej Nokia 5110. Protože jsem se dříve nevyznal v elektronice a programování, rozhodl jsem se neztrácet čas a začal jsem se učit zobrazovat informace na tomto modulu.

První věc, kterou jsem udělal, byl Google a narazil jsem na publikaci „Arduino, Nokia 5110 LCD modul a azbuka“ od autora. A pak jsem si uvědomil, že všechno, co jsem předtím plánoval, nebude tak snadné.

Přišel jsem na azbuku, vše je tam jednoduché, poslední příspěvek nebudu kopírovat a vkládat, ale s obrázky je skutečný problém. Úkol zní: musíte nakreslit obrázek a nahrát jej na displej. Narazil jsem na první problém, šel jsem do programovacího prostředí Arduino a viděl jsem, že neexistuje nic takového jako „Insert - Images“, ale musíte zapsat obrázek s určitým kódem v systému hex kalkulu. Našel jsem několik redaktorů, ale nebylo tomu tak. Obraz se nezobrazuje dostatečně. Začal jsem hledat problémy, které by mohly být.

Prostřednictvím hromady experimentů, pokusů a testů jsem přišel s algoritmem, o který se s vámi podělím:

1) Potřebujete získat samotný obrázek, v černobílém formátu .bmp s příponou 84 x 48 pixelů.
To lze provést mnoha způsoby Téměř každý grafický editor má funkci „Uložit jako“, kde zadáváme potřebné parametry.
Udělal jsem to v corelDRAW. Dostáváme něco podobného. Je nutné objasnit, že název obrázku musí být uložen s latinským rozložením klávesnice, protože další program jej nebude moci otevřít.

2) V případě potřeby můžete obrázek upravit v malování, kupodivu tam je několik jednoduchých a zajímavých nástrojů.

3) Pomocí toho získáme hexadecimální kód obrázku.

4) Vložte tento kód do kódu programu Arduino a nahrajte jej na desku:

// SCK - Pin 8 // MOSI - Pin 9 // DC - Pin 10 // RST - Pin 11 // CS - Pin 12 // #include LCD5110 myGLCD(8,9,10,11,12); extern uint8_t OKO; plovoucí y; uint8_t* bm; int prostor; void setup() ( myGLCD.InitLCD(); ) void loop() ( myGLCD.clrScr(); myGLCD.drawBitmap(0, 0, OKO, 84, 48); myGLCD.update(); delay(2000); )

#zahrnout const uint8_t OKO PROGMEM=( //Zkopírováno hex kód nástroje GLCD );

Dříve v tomto blogu bylo popsáno několik LCD displejů/indikátorů a jejich použití z Arduina. Jejich významnou nevýhodou jsou poměrně velké rozměry a hmotnost. Často to není problém. Pokud například sestavujete pájecí stanici pro domácí použití v domácím pouzdře, jaksi nezáleží na velikosti displeje. Na druhou stranu, pokud potřebujete displej, řekněme, kvadrokoptéra, pak se hmotnost a velikost stanou kritickými. Dnes se proto naučíme pracovat s velmi malým a lehkým displejem z telefonu Nokia 5110.

Poznámka: Další příspěvky k tématu obrazovek - Naučili se zobrazovat text na LCD indikátoru z Arduina, O používání obrazovek 1602 s I2C adaptérem, Práce s LCD na bázi HD44780 bez knihoven a Digitální teploměr z LCD matice, TMP36 a Arduino.

Nebojte se, nebudete muset kupovat dnes prakticky neexistující Nokii 5110, vybírat z ní displej a vyhazovat všechny ostatní díly. Obrazovka Nokia 5110 je velmi běžný samostatný modul pro radioamatéry a stojí od 2 do 5 USD v závislosti na prodejně. V Rusku lze modul zakoupit například na tpai.ru, arduino-kit.ru, amperkot.ru, compacttool.ru, chipster.ru nebo electromicro.ru. A obrazovky se samozřejmě prodávají za nejnižší cenu na AliExpress, ale než dorazí z Číny, budete si muset měsíc až dva počkat.

Jak se často ve světě Arduina stává, pro modul již existují hotové knihovny, a to více než jedna. Líbila se mi knihovna LCD5110 zveřejněná na webu rinkydinkelectronics.com. Tato knihovna má dvě verze. První z nich se nazývá LCD5110_Basic. Je jednodušší a umí zobrazit pouze text ve fontech různých velikostí. Je možné vytvářet vlastní fonty. Druhá verze se nazývá LCD5110_Graph. Má všechny možnosti první knihovny a kromě nich umí kreslit segmenty, obdélníky, kruhy a tak dále.

Pro účely tohoto příspěvku bude použit LCD5110_Basic. Obě knihovny jsou dobře zdokumentovány a mají mnoho příkladů použití, takže pokud potřebujete LCD5110_Graph, můžete to snadno zjistit sami. Za zmínku však stojí, že aby se LCD5110_Basic zkompiloval bez varování, musel jsem v jeho kódu provést několik malých úprav.

Takže příklad použití knihovny:

#zahrnout

extern uint8_t BigNumbers ;
extern uint8_t MediumNumbers ;
extern uint8_t SmallFont ;

/* SCK / CLK, MOSI / DIN, DC, RST, CS */
LCD5110 lcd(2, 3, 4, 6, 5);

void setup()
{
lcd.InitLCD();
}

int ctr = 0;
void loop()
{
lcd.clrScr();

Lcd.setFont(BigNumbers) ;
lcd.printNumI(ctr, RIGHT, 0);

Lcd.setFont(MediumNumbers) ;
lcd.printNumF(12,34; 2; RIGHT; 24);

Lcd.setFont(SmallFont) ;
lcd.print ("Řádek 1" , 0 , 8 * 0 );
lcd.print("Řádek 2", 0, 8 * 1);
lcd.print ("Řádek 3" , 0 , 8 * 2 );
lcd.print ("L 4" , 0 , 8 * 3 );
lcd.print ("L 5" , 0 , 8 * 4 );
lcd.print ("0123456789ABCD" , 0 , 8 * 5 );

Ctr+ = 5;
if (ctr >= 1000)
ctr = 0;

Zpoždění(500);
}

Jak to vypadá v akci:

Doufám, že není třeba žvýkat kód. Upozorňujeme, že modul je napájen 3,3 V, ale příkazům z Arduina rozumí normálně bez jakýchkoli převodníků logické úrovně. Podle toho připojíme piny VCC (napájení) a BL (podsvícení) na 3,3 V, připojíme GND k zemi a zbývajících pět pinů připojíme k digitálním pinům Arduino. Čísla pinů předáme konstruktoru třídy LCD5110 v souladu s komentáři v daném kódu.

Jednoduché, že? Úplný zdrojový kód tohoto příspěvku najdete v tomto úložišti GitHub. Doplnění a dotazy jsou jako vždy vítány všemi možnými způsoby.

Přidání: Autorem knihovny pro práci s obrazovkou Nokia 5110 je také autor knihovny OLED_I2C, určené pro práci s neméně oblíbenými obrazovkami OLED s rozhraním I2C. Příklad použití OLED_I2C najdete v příspěvku Použití joysticku Sega Genesis v projektech Arduino. Jak můžete očekávat, obě knihovny mají podobné rozhraní.

Pamatujete na doby, kdy byly mobilní telefony „oaky“, měly samostatnou tlačítkovou klávesnici a malý monochromatický displej z tekutých krystalů?

Nyní tento trh patří všemožným iPhonům, Galaxy atd., ale displeje nacházejí nové využití: DIY projekty!

Černobílý displej 84x48 pixelů, který budeme uvažovat, byl použit v telefonech Nokia 3310 Jejich hlavní výhodou je snadné ovládání. Takový displej dokonale zapadne do vašeho projektu pro interaktivní výměnu informací s uživatelem.

V tomto článku se podíváme na ovládání tohoto grafického displeje pomocí Arduina. Jsou zohledněny všechny funkce připojení, technické vlastnosti displeje a program pro Arduino.

Požadované materiály

  • Arduino nebo jeho klon.
  • Konektory.
  • Obvodová deska.

Specifikace displeje Nokia 5110

Před připojením displeje a naprogramováním Arduina se o něm podívejme na pár obecných informací.

Pinout

Pro připojení a přenos dat na displeji slouží dvě paralelní řady po 8 konektorech. Každý kolík je označen na zadní straně displeje.


Jak již bylo zmíněno, piny jsou vzájemně propojeny paralelně. Informace o účelu každého konektoru jsou uvedeny níže.


Výživa

Již jste si všimli, že LCD displej 5110 má dva napájecí konektory. První je nejdůležitější – napájení logiky displeje. V datasheetu je uvedeno, že by se mělo volit v rozmezí 2,7 - 3,3 V. Při běžném provozu bude mít displej odběr od 6 do 7 mA.

Druhý napájecí konektor slouží pro podsvícení displeje. Pokud z desky sundáte samotný displej (není to nutné, stačí se podívat na obrázek níže), uvidíte, že podsvícení je implementováno velmi jednoduše: čtyři bílé LED diody, které jsou umístěny v rozích desky. Vezměte prosím na vědomí, že neexistují žádné odpory omezující proud.


Takže musíte být opatrnější se svou stravou. Při připojení pinu "LED" můžete použít odpor omezující proud nebo použít maximální napájecí napětí 3,3 V. Nezapomeňte, že LED mohou absorbovat vysoké proudy! Bez omezení budou při napájecím napětí 3,3 V odebírat cca 100 mA.

Ovládací rozhraní

Displej má vestavěný řadič: Philips PCD8544, který převádí masivní paralelní rozhraní na pohodlnější sériové. PCD8544 je řízen pomocí synchronního sériového protokolu, který je podobný SPI. Všimněte si, že existují piny počítadla času (SCLK) a sériového vstupu dat (DN) a také aktivní-nízká volba čipu (SCE).

Nad uvažovanými sériovými konektory je instalován další konektor - D / C, přes který se přijímá informace o tom, zda lze zobrazit přenášená data.

Seznam příkazů naleznete v části „Pokyny“ v datovém listu PCD8544 (strana 11). Existují příkazy, které vyčistí displej, invertují pixely, vypnou napájení atd.

Sestavení a připojení displeje 5110

Než nahrajete náčrt a přenesete data na displej, musíte pochopit spojení. Chcete-li to provést, musíte vyřešit problém s jeho sestavením a připojením k Arduinu.

Shromáždění

K „sestavení“ displeje budete možná potřebovat konektory. 8 kusů bude stačit. Můžete použít rovné nohy nebo 90stupňové. Záleží na dalším použití. Pokud plánujete použít obvodovou desku, bude pravděpodobně nejlepší volbou kolejnice s přímými konektory.

LCD displej z Nokie 5110 namontovaný na mini desce plošných spojů:


Adaptéry můžete také přímo připájet k displeji.

Připojení displeje 5110 k Arduinu

V tomto příkladu připojíme LCD displej k Arduinu. Podobnou techniku ​​lze snadno přizpůsobit i jiným deskám a mikrokontrolérům. Pro připojení pinů přenosu dat - SCLK a DN(MOSI) - používáme piny Arduino SPI, které zajišťují rychlý přenos dat. Piny výběru čipu (SCE), resetu (RST) a datových/kontrolních (D/C) lze připojit k libovolnému digitálnímu pinu. Výstup z LED je připojen na pin na Arduinu, který podporuje PWM modulaci. Díky tomu je možné flexibilní nastavení jasu podsvícení.

Bohužel maximální napájecí napětí displeje 5110 může dosáhnout 3,6 voltu, takže jej nelze připojit přímo na standardní 5 V výstup na Arduinu. Napětí je potřeba upravit. Podle toho se objeví několik možností připojení.

Přímé připojení k Arduinu

Nejjednodušší možností je připojit se přímo k Arduinu. V tomto případě musíte použít desky Arduino Pro 3,3V/8MHz nebo 3,3V Arduino Pro Mini.


Níže navržená možnost funguje s deskami Arduino 5V. Toto je funkční možnost, ale životnost displeje může být mírně snížena.


Piny jsou připojeny následovně:


Dobrou a levnou možností pro poskytnutí dodatečné ochrany je instalace rezistorů mezi datové piny z Arduina na LCD 5110. Pokud používáte Arduino Uno (nebo podobnou 5V desku), můžete použít 10k a 1k rezistory. Schéma zapojení displeje pomocí rezistorů je znázorněno na obrázku níže:

Zapojení je stejné jako v prvním příkladu, ale v každém signálovém obvodu je instalován rezistor. Mezi piny SCLK, DN, D/C a RST jsou instalovány odpory 10 kOhm. Mezi kolíky SCE a kolíkem 7 je odpor 1 kOhm. Mezi kolíkem 9 a kolíkem s LED zbývá 330 Ohmů. a pin 7.

Převodníky úrovní


Třetí možností připojení je použití převodníků úrovní pro přepínání mezi 5 a 3,3 V. Pro tyto účely lze použít obousměrný převodník úrovně logiky nebo moduly TXB0104.

Na displeji je bohužel pět vstupů pro signál 3,3 V, na převodnících úrovní čtyři. Výstup RTS můžete nechat vysoký (připojením pomocí 10k ohm rezistoru). V důsledku toho již nebudete moci ovládat, jak se displej restartuje, ale všechny ostatní funkce budou k dispozici.

První příklad náčrtu Arduina: LCD Demo

Program pro Arduino

Komentáře v kódu výše by vám měly pomoci pochopit program. Většina akcí se děje ve funkci lcdFunTime().

Skica v akci

Po nahrání do Arduina začne skica fungovat a spustí demo – sadu standardních animací a testování grafických funkcí. Nejprve si zobrazme několik pixelů. Poté přejdeme k zobrazení čar, obdélníků a kruhů, načtení bitmapy atd.


Po dokončení náčrtu se monitor přepne do režimu přenosu dat přes sériový protokol. Otevřete sériový monitor (s přenosovou rychlostí 9600 bps). To, co vytisknete na sériovém monitoru, se zobrazí na LCD monitoru.

Pokud vás zajímají zobrazovací možnosti rastrových obrázků, čtěte dále. Podíváme se, jak přesně můžete importovat svůj vlastní bitmapový obrázek 84x48 a zobrazit jej na obrazovce.

Druhý příklad náčrtu Arduino: načítání a zobrazování bitmap

V tomto příkladu vytvoříme novou bitmapu 84x48, integrujeme ji do kódu Arduina a odešleme na LCD monitor.


Najít/Vytvořit/Změnit bitmapu

Nejprve najděte obrázek, který chcete zobrazit na LCD obrazovce 5110. Nebudete jej moci příliš rozšířit na 84x48 pixelů, ale stále je to možné. Zde je několik příkladů:

Po výběru obrázku je třeba jej opravit: udělat jej monochromatický (2bitové barvy); zachovat velikost 84x48 pixelů. K tomu můžete použít většinu obrázkových editorů. Včetně Malování, pokud máte Windows. Uložte výsledný obrázek.

Převod bitmapy na pole

Dalším krokem je převedení tohoto souboru na pole 504 bajtů znaků. K tomu můžete použít různé programy. Například LCD asistent.

Chcete-li načíst obrázek do asistenta LCD, přejděte na Soubor > Načíst obrázek. Mělo by se otevřít okno s náhledem obrázku. Ujistěte se, že obrázek má správnou velikost – 84 pixelů na šířku, 48 pixelů na výšku a orientace Byte je nastavena na Vertical, Size endianness na Little. Zbytek výchozích nastavení by měl být nastaven správně (8 pixelů/bajt)

Poté přejděte na kartu Soubor > Uložit výstup a vygenerujte dočasný textový soubor. Otevřete tento textový soubor a zobrazte své úžasné nové pole. Změňte typ pole na char (nikoli unsigned nebo const). Také se ujistěte, že je pole správně pojmenováno (bez pomlčky, nezačíná číslem atd.).

Importujte do skici a nakreslete!

Zkopírujte vytvořené pole do skici Arduina. Můžete použít skicu z prvního příkladu. Vložte pole kamkoli. Nyní, abyste zobrazili svou skicu, nahraďte setup() a loop() ve své skice řádky níže (ostatní funkce a proměnné ponechte stejné):

// ...výše jsou definovány proměnné, konstanty a bitmapové pole

lcdBegin(); // Nastavení pinů a inicializace LCD displeje

setContrast(60); // Upravte kontrast (preferovaný rozsah je od 40 do 60)

setBitmap(flameBitmap); // flameBitmap by měl být nahrazen názvem vašeho pole

updateDisplay(); //Aktualizujte displej tak, aby zobrazoval pole

// Funkce pro ovládání a grafiku na LCD displeji jsou definovány níže...

Vážně, dopadlo to cool? Mimo jiné můžete importovat více obrázků a vytvářet malé animace! Zkuste to, jsem si jistý, že se vám to bude líbit!

Odkazy pro stažení dalších programů, knihoven a datových listů

Datové listy pro LCD displej a ovladače
  • LCD Datasheet – Není úplně stejný jako 5110, ale má velmi podobné specifikace
Arduino knihovny a skici
  • PCD8544 Arduino Library – Knihovna pro pracovní Arduino s PCD8544 LCD ovladačem
Programy pro vytváření rastrových obrázků
  • TheDotFactory – Skvělý nástroj pro vytváření vlastních polí písem

Níže zanechte své komentáře, dotazy a podělte se o své osobní zkušenosti. V diskuzích se často rodí nové nápady a projekty!




Nahoru