Zaslon je nužni dio stroja bilo da se radi o kućanskim aparatima ili industrijskim strojevima. Zaslon ne prikazuje samo mogućnosti upravljanja za upravljanje strojem, već prikazuje i status i izlaz zadatka koji taj stroj izvršava. Postoje mnoge vrste zaslona koji se koriste u elektronici poput 7-segmentnog zaslona, LCD zaslona, TFT zaslona osjetljivog na dodir, LED zaslona itd. LCD zaslon 16x2 najosnovniji je i također se koristi u maloj elektroničkoj opremi, učinili smo puno projekti koji koriste LCD 16x2, uključujući osnovno povezivanje s drugim mikrokontrolerima:
- LCD povezivanje s mikrokontrolerom 8051
- Povezivanje LCD zaslona s mikrokontrolerom ATmega32
- LCD povezivanje s PIC mikrokontrolerom
- Povezivanje LCD-a 16x2 s Arduinom
- LCD povezivanje 16x2 s Raspberry Pi pomoću Pythona
U ovom uputstvu vidjet ćemo kako povezati LCD 16x2 s mikrokontrolerom ARM7-LPC2148 i prikazati jednostavnu poruku dobrodošlice. Ako ste novi u ARM7, započnite s osnovama ARM7 LPC2148 i naučite kako se to može programirati pomoću Keil uVision
Potrebni materijali
Hardver
- ARM7-LPC2148 Ploča mikrokontrolera
- LCD (16X2)
- Potenciometar
- IC regulator napona 5V
- Breadboard
- Spajanje žica
- 9V baterija
- Mikro USB kabel
Softver
- Keil uVision 5
- Magic Flash Tool
Prije ulaska u projekt moramo znati nekoliko stvari o načinu rada LCD-a i o heksadecimalnim kodovima LCD-a.
Modul LCD zaslona 16X2
LCD 16X2 kaže da ima 16 stupaca i 2 reda. Ovaj LCD ima 16 pinova. Ispod slike i tablice prikazani su nazivi pribadača LCD zaslona i njegove funkcije.

|
IME |
FUNKCIJA |
|
VSS |
Pribadača |
|
VDD |
+ 5V ulazni pin |
|
VEE |
Pin za podešavanje kontrasta |
|
RS |
Registracija Odaberite |
|
R / W |
Čitanje / pisanje pribadače |
|
E |
Omogući prikvačivanje |
|
D0-D7 |
Pribadače za podatke (8 pribadača) |
|
LED A |
Anodni pin (+ 5V) |
|
LED K |
Katodni klin (GND) |
LCD može raditi u dva različita načina, naime u 4-bitnom i 8-bitnom načinu. U 4-bitnom načinu rada grickamo podatke grickanjem, prvo gornjim grickanjem, a zatim donjim grickanjem. Za one od vas koji ne znate što je grickanje: grickanje je skupina od četiri bita, pa donja četiri bita (D0-D3) bajta čine donji grickanje, dok gornja četiri bita (D4-D7) bajta čine višu grickalicu. To nam omogućuje slanje 8-bitnih podataka.
Dok u 8-bitnom načinu rada možemo 8-bitne podatke poslati izravno jednim potezom, jer koristimo svih 8 podatkovnih linija.
Ovdje ćemo u ovom projektu koristiti najčešće korišteni način, a to je 4-bitni način. U četverobitnom načinu možemo uštedjeti 4 pina mikrokontrolera i smanjiti troškove ožičenja.
16x2 također koristi HEX kod za preuzimanje bilo koje naredbe, postoji mnogo hex naredbi za LCD poput pomicanja kursora, odabira načina rada, prebacivanja kontrole u drugi redak itd. Da biste saznali više o 16X2 LCD zaslonu i hex naredbama, slijedite vezu.
Kružni dijagram i veze

Ispod tablice prikazane su veze kruga između LCD-a i ARM7-LPC2148.
|
ARM7-LPC2148 |
LCD (16x2) |
|
P0.4 |
RS (odabir registra) |
|
P0.6 |
E (Omogući) |
|
P0.12 |
D4 (podatkovni pin 4) |
|
P0.13 |
D5 (podatkovni pin 5) |
|
P0.14 |
D6 (podatkovni pin 6) |
|
P0.15 |
D7 (podatkovni pin 7) |
Priključci regulatora napona s LCD i ARM7 Stick
Ispod tablice prikazane su veze između ARM7 i LCD-a s regulatorom napona.
|
IC regulator napona |
Funkcija pribadače |
LCD i ARM-7 LPC2148 |
|
1.Lijeva igla |
+ Ve od ulaza 9V baterije |
NC |
|
2.Centre Pin |
- Ve od baterije |
VSS, R / W, K LCD-a GND ARM7 |
|
3. Desna pribadača |
Regulirani + 5V izlaz |
VDD, A od LCD-a + 5V ARM7 |
Potenciometar s LCD-om
Potenciometar se koristi za promjenu kontrasta LCD zaslona. Lonac ima tri pina, lijevi zatik (1) spojen je na + 5V, a središnji (2) za VEE ili V0 LCD modula, a desni zatik (3) spojen je na GND. Kontrast možemo podesiti okretanjem gumba.
Postavke kratkospojnika
U ARM7-Stick prisutan je premosnik, tako da kôd možemo napajati i prenositi putem USB-a ili pomoću ulaza od 5 V DC samo za napajanje. Slike u nastavku možete vidjeti.
Ispod slike se vidi da je kratkospojnik u DC položaju. To znači da moramo napajati ploču iz vanjskog napajanja od 5V.

A ova slika pokazuje da je kratkospojnik povezan u USB načinu. Ovdje se napajanje i kod osiguravaju putem mikro usb porta.

NAPOMENA: Ovdje smo u ovom vodiču prenijeli kôd pomoću USB-a postavljanjem kratkospojnika na USB, a zatim smo kratkospojnik promijenili u DC način rada kako bismo napajali LPC2148 s 5v ulaza regulatora. To možete provjeriti u videu datom na kraju.
Završni krug za povezivanje 16x2 LCD-a s ARM7 mikrokontrolerom izgledat će ovako:

Programiranje ARM7-LPC2148
Za programiranje ARM7-LPC2148 potreban nam je alat keil uVision & Flash Magic. Koristimo USB kabel za programiranje ARM7 Stick putem mikro USB priključka. Napisujemo kod pomoću Keila i stvaramo hex datoteku, a zatim se HEX datoteka bljeska na ARM7 stick pomoću Flash Magic. Da biste saznali više o instaliranju keil uVision i Flash Magic, te kako ih koristiti, slijedite vezu Početak rada s mikrokontrolerom ARM7 LPC2148 i programirajte ga pomoću Keil uVision.
Kompletni kod za povezivanje LCD-a s ARM 7 dan je na kraju ovog vodiča, ovdje objašnjavamo nekoliko njegovih dijelova.
Prije svega moramo uključiti potrebne datoteke zaglavlja
#include
Inicijalizacija LCD modula vrlo je važan korak. Ovdje koristimo određene HEX kodove, koji su zapravo naredbe, kako bismo LCD-u rekli o načinu rada (4-bitni), vrsti LCD-a (16x2), početnoj liniji itd.
void LCD_INITILIZE (void) // Funkcija pripreme LCD-a { IO0DIR = 0x0000FFF0; // postavlja pin P0.4, P0.6, P0.12, P0.13, P0.14, P0.15 kao IZLAZ kašnjenja_ms (20); LCD_SEND (0x02); // Inicijalizirajte lcd u 4-bitnom načinu rada LCD_SEND (0x28); // 2 retka (16X2) LCD_SEND (0x0C); // Prikaz na pokazivaču isključen LCD_SEND (0x06); // Kursor za automatsko povećanje LCD_SEND (0x01); // Prikažite jasan LCD_SEND (0x80); // Prva pozicija prvog retka }
Za 4-bitni način rada imamo različitu funkciju pisanja na pinove, to jest pomoću gornjeg i donjeg grickanja. Da vidimo, kako se to radi
void LCD_SEND (naredba char) // Funkcija slanja hex naredbi grickajući grickajući { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((naredba & 0xF0) << 8)); // Pošaljite gornji grickanje naredbe IO0SET = 0x00000040; // Omogućavanje HIGH IO0CLR = 0x00000030; // Izrada RS & RW LOW delay_ms (5); IO0CLR = 0x00000040; // Omogućavanje LOW delay_ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((naredba & 0x0F) << 12)); // Pošalji donji grickanje naredbe IO0SET = 0x00000040; // Omogući visoki IO0CLR = 0x00000030; // RS & RW LOW delay_ms (5); IO0CLR = 0x00000040; // ONABLE LOW delay_ms (5); }
Grickanje logike slanja
IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((naredba & 0x0F) << 12)); // Pošaljite donji grickanje naredbe IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((naredba & 0xF0) << 8)); // Pošaljite gornji grickanje naredbe
Gore navedene dvije izjave igraju važnu ulogu u ovom programu. Prva naredba šalje donji grickanje, a druga šalje gornji grickanje. To je bez utjecaja na ostale igle koje radimo. Pogledajmo kako se to događa prije nego što prvo upoznamo ovu logiku
ORING- (A-0 = A), (A-1 = 1) ANDing- (A & 0 = 0), (A & 1 = A)
Dakle, koristimo koncept maskiranja i logičku operaciju pomaka bez utjecaja na ostale igle. Znači da se koriste samo pribadače (P0.12-P0.15) i da to ne utječe na ostale pribadače poput P0.4, P0.6. To će se učiniti pomicanjem podataka u četiri bita i izrađivanjem gornjeg grickanja na mjestu donjeg grickanja i maskiranjem gornjeg grickanja. A onda donje bitove činimo nulom (0XF0) i ORed s podacima o grickanju kako bismo dobili gornje podatke o grickanju na izlazu.
Sličan postupak koristi se i za podatke koji se manje grickaju, ali ovdje ne moramo podatke pomicati.
Tijekom zapisivanja podataka na izlaz, to jest, u naredbenom načinu RS treba biti NISKA, a za izvršavanje omogućavanje mora biti VISOKO, a u podatkovnom načinu RS mora biti VISOKO, a za izvršavanje omogućavanje mora biti VISOKO.
Sada se za slanje string podataka koji se ispisuju na izlazu, koristi isti princip grickajući po grickanje. Ovdje je važan korak REGISTRACIJA ODABIRA (RS) mora biti VISOKO za podatkovni način.
void LCD_DISPLAY (char * msg) // Funkcija ispisa jednog po jednog poslanog znaka { uint8_t i = 0; while (msg! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0) << 8)); // šalje gornji grickanje IO0SET = 0x00000050; // RS HIGH & Omogući HIGH za ispis podataka IO0CLR = 0x00000020; // RW LOW kašnjenje načina pisanja ms (2); IO0CLR = 0x00000040; // EN = 0, RS i RW nepromijenjeni (tj. RS = 1, RW = 0) kašnjenje ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0x0F) << 12)); // šalje donji grickanje IO0SET = 0x00000050; // RS & EN HIGH IO0CLR = 0x00000020; kašnjenje ms (2); IO0CLR = 0x00000040; kašnjenje ms (5); i ++; }
Kompletan video kodiranje i demonstracija dat je u nastavku.
