Näyttö on koneen välttämätön osa, olipa kyseessä sitten kodinkone tai teollisuuskone. Näyttö ei ainoastaan näytä koneen ohjausvaihtoehtoja, vaan näyttää myös koneen suorittaman tehtävän tilan ja ulostulon. Elektroniikassa käytetään monen tyyppisiä näyttöjä, kuten 7-segmenttinen näyttö, LCD-näyttö, TFT-kosketusnäyttö, LED-näyttö jne. 16x2 LCD-näyttö on perusnäyttö ja sitä käytetään myös joissakin pienissä elektroniikkalaitteissa, olemme tehneet paljon projektit, joissa käytetään 16x2 LCD-näyttöä, mukaan lukien perusliitäntä muihin mikrokontrollereihin:
- LCD-liitäntä 8051-mikrokontrolleriin
- Liitettävä LCD-näyttö ATmega32-mikrokontrollerilla
- LCD-liitäntä PIC-mikrokontrolleriin
- Liitäntäinen 16x2 LCD-näyttö Arduinon kanssa
- 16x2 LCD-liitäntä Raspberry Pi: n kanssa Pythonilla
Tässä opetusohjelmassa näemme, kuinka 16x2-nestekidenäyttö liitetään ARM7-LPC2148-mikrokontrolleriin ja näytetään yksinkertainen tervetuloviesti. Jos olet uusi ARM7: n kanssa, aloita ARM7 LPC2148: n perusteista ja opi, kuinka se voidaan ohjelmoida Keil uVisionin avulla
Tarvittavat materiaalit
Laitteisto
- ARM7-LPC2148-mikrokontrollerikortti
- LCD (16X2)
- Potentiometri
- 5 V: n jännitesäätimen IC
- Leipälauta
- Johtojen liittäminen
- 9 V: n akku
- Mikro-USB-kaapeli
Ohjelmisto
- Keil uVision 5
- Magic Flash -työkalu
Ennen projektiin pääsemistä meidän on tiedettävä muutama asia LCD-näytön toimintatiloista ja LCD Hex -koodeista.
16X2 LCD-näyttömoduuli
16X2-nestekidenäytössä sanotaan, että siinä on 16 saraketta ja 2 riviä. Tässä LCD-näytössä on 16 nastaa. Kuvan ja taulukon alla näkyvät LCD-näytön pin-nimet ja toiminnot.
NIMI |
TOIMINTA |
VSS |
Maadoitettu tappi |
VDD |
+ 5 V: n tulotappi |
VEE |
Kontrastin säätötappi |
RS |
Rekisteröidy Valitse |
R / W |
Lue / kirjoita tappi |
E |
Ota PIN-koodi käyttöön |
D0-D7 |
Data-nastat (8 Pin-lisäystä) |
LED A |
Anoditappi (+ 5 V) |
LED K |
Katoditappi (GND) |
LCD-näyttö voi toimia kahdessa eri tilassa, nimittäin 4-bittisessä tilassa ja 8-bittisessä tilassa. 4-bittisessä tilassa lähetämme datanipun napauttamalla, ensin ylemmän ja sitten alemman napostuksen. Niille teistä, jotka eivät tiedä mitä napostella on: napostelu on neljän bitin ryhmä, joten tavun alemmat neljä bittiä (D0-D3) muodostavat alemman napin, kun taas neljä ylempää bittiä (D4-D7) tavun muotoinen ylempi napata. Tämän avulla voimme lähettää 8-bittistä dataa.
Kun taas 8-bittisessä tilassa voimme lähettää 8-bittisen datan suoraan yhdellä iskulla, koska käytämme kaikkia 8 tietoriviä.
Tässä projektissa käytämme yleisimmin käytettyä tilaa, joka on 4-bittinen tila. Neljän bittisessä tilassa voimme säästää 4 nastaa mikro-ohjainta ja vähentää myös johdotusta.
16x2 käyttää myös HEX-koodia minkä tahansa komennon ottamiseen, LCD: lle on olemassa monia hex-komentoja, kuten kursorin siirtäminen, tilan valitseminen, ohjauksen siirtäminen toiselle riville jne. Jos haluat tietää enemmän 16X2 LCD -näyttömoduulista ja hex-komennoista, seuraa linkkiä.
Piirikaavio ja liitännät
Alla olevassa taulukossa on esitetty LCD-liitännät ja ARM7-LPC2148.
ARM7-LPC2148 |
LCD (16x2) |
P0.4 |
RS (Rekisteröi valinta) |
P0.6 |
E (Ota käyttöön) |
P0.12 |
D4 (tietotappi 4) |
P0.13 |
D5 (tietotappi 5) |
P0.14 |
D6 (tietotappi 6) |
P0.15 |
D7 (tietotappi 7) |
Jännitesäätimen liitännät LCD- ja ARM7-tikkuilla
Alla olevassa taulukossa on esitetty ARM7: n ja LCD: n väliset liitännät jännitesäätimellä.
Jännitteen säätimen IC |
Pin-toiminto |
LCD & ARM-7 LPC2148 |
1. vasen tappi |
+ Ve akun 9 V: n tulosta |
NC |
2. keskuksen tappi |
- Ve akusta |
LCD-näytön VSS, R / W, K ARM7: n GND |
3.Oikea tappi |
Säädetty + 5 V: n lähtö |
LCD: n VDD, A + 5 V ARM7: stä |
Potentiometri LCD-näytöllä
Potentiometriä käytetään nestekidenäytön kontrastin muuttamiseen. Potissa on kolme nastaa, vasen nasta (1) on kytketty + 5 V: een ja keskiosa (2) LCD-moduulin VEE: hen tai V0: een ja oikea nasta (3) on kytketty GND: hen. Voimme säätää kontrastia kääntämällä nuppia.
Hyppääjän asetukset
ARM7-Stickissä on hyppytappi, jotta voimme virtaa ja ladata koodin USB: n avulla tai käyttämällä vain 5 V: n DC-tuloa. Näet alla olevat kuvat.
Kuvan alapuolella näkyy, että hyppääjä on DC-asennossa. Tämä tarkoittaa sitä, että meidän on syötettävä levy ulkoisesta 5 V: n virtalähteestä.
Ja tämä kuva osoittaa, että hyppääjä on kytketty USB-tilassa. Tässä virta ja koodi toimitetaan mikro-USB-portin kautta.
HUOMAUTUS: Tässä opetusohjelmassa olemme ladanneet koodin USB: n avulla asettamalla hyppyjohdon USB: ksi ja vaihtaneet sitten hyppääjän DC-tilaan virran saamiseksi LPC2148: lle säätimen 5 V: n tulosta. Voit tarkistaa tämän lopussa olevasta videosta.
Viimeinen piiri 16x2 LCD: n liittämiseksi ARM7-mikrokontrolleriin näyttää tältä:
ARM7-LPC2148: n ohjelmointi
ARM7-LPC2148: n ohjelmointiin tarvitaan keil uVision & Flash Magic -työkalu. Ohjelmoimme ARM7 Stick USB-kaapelilla mikro-USB-portin kautta. Kirjoitamme koodin Keilillä ja luomme heksatiedoston ja sitten HEX-tiedosto välitetään ARM7-tikkuun Flash Magicilla. Jos haluat tietää enemmän Keil uVisionin ja Flash Magicin asentamisesta ja niiden käytöstä, seuraa linkkiä Aloittaminen ARM7 LPC2148 -mikrokontrollerilla ja ohjelmoi se Keil uVisionin avulla.
Täydellinen koodi LCD: n ja ARM 7: n liittämiseen on tämän opetusohjelman lopussa, tässä selitämme muutamia osia siitä.
Ensinnäkin meidän on sisällytettävä vaaditut otsikkotiedostot
#sisältää
LCD-moduulin alustaminen on erittäin tärkeä vaihe. Tässä käytämme tiettyjä HEX-koodeja, jotka ovat todella komentoja, kertomaan nestekidenäytölle toimintatilasta (4-bittinen), LCD-tyypistä (16x2), aloituslinjasta jne.
void LCD_INITILIZE (void) // Toiminto LCD-näytön valmistelemiseksi { IO0DIR = 0x0000FFF0; // Asettaa tapit P0.4, P0.6, P0.12, P0.13, P0.14, P0.15 OUTPUT delay_ms (20); LCD_SEND (0x02); // Alusta LCD 4-bittisessä toimintatilassa LCD_SEND (0x28); // 2 riviä (16X2) LCD_SEND (0x0C); // Näyttö kohdistimen kohdalla pois päältä LCD_SEND (0x06); // Automaattinen lisäyskohdistin LCD_SEND (0x01); // Näytä selkeä LCD_SEND (0x80); // Ensimmäisen rivin ensimmäinen sijainti }
4-bittisessä tilassa meillä on erityyppinen kirjoitusfunktio nastoille, toisin sanoen käyttämällä ylempää ja alempaa napautusta. Katsotaanpa, miten se tehdään
void LCD_SEND (char-komento) // Toiminto, jolla lähetetään kuusiokomentoja, jotka napostellaan napauttamalla { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((komento & 0xF0) << 8)); // Lähetä komennon ylempi napautus IO0SET = 0x00000040; // Enable HIGH IO0CLR = 0x00000030; // RS & RW LOW delay_ms (5); IO0CLR = 0x00000040; // LOW delay_ms: n käyttöönotto (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((komento & 0x0F) << 12)); // Lähetä komennon alempi näyte IO0SET = 0x00000040; // ENABLE HIGH IO0CLR = 0x00000030; // RS & RW LOW -viive_ms (5); IO0CLR = 0x00000040; // ENABLE LOW delay_ms (5); }
Napsauta lähetyslogiikkaa
IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((komento & 0x0F) << 12)); // Lähetä komento IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((komento & 0xF0) << 8)); // Lähetä komennon ylempi otelma
Kahden edellä mainitun väitteen avulla on tärkeä rooli ohjelmassa. Ensimmäinen komento lähettää alemman naputuksen ja toinen lähettää ylemmän napin. Tämä ei vaikuta muihin tekemiemme nastoihin. Katsotaanpa, miten se tapahtuu, ennen kuin tutustumme ensin tähän logiikkaan
ORing- (A-0 = A), (A-1 = 1) ANDing- (A & 0 = 0), (A & 1 = A)
Joten käytämme peitekonseptia ja loogista siirtotoimintaa vaikuttamatta muihin nastoihin. Tarkoittaa, että käytetään vain nastoja (P0.12-P0.15), eikä muut nastat kuten P0.4, P0.6 vaikuta. Se tehdään siirtämällä tietoja neljässä bitissä ja tekemällä ylempi napata alemman napin tilalle ja peittämällä ylempi napata. Ja sitten teemme alemmat bitit nollaksi (0XF0) ja ORed nibble-datan kanssa saadaksemme ylemmän nibble-datan lähtöön.
Samanlaista prosessia käytetään alemman naposteltavan datan suhteen, mutta tässä meidän ei tarvitse siirtää tietoja.
Kun kirjoitat dataa lähtöön, toisin sanoen komentotilassa, RS: n tulisi olla MATALA ja käyttöönoton suorittamisen on oltava KORKEA, ja datatilassa RS: n tulisi olla KORKEA ja käyttöönoton suorittamisen on oltava KORKEA.
Nyt lähdettäessä merkkijonodataa, joka on tarkoitus tulostaa tulostettaessa, käytetään samaa periaatetta napostellen. Tärkeä vaihe tässä on, että REGISTER SELECT (RS) on oltava HIGH datatilaa varten.
void LCD_DISPLAY (char * msg) // Toiminto yksitellen lähetettyjen merkkien tulostamiseen { uint8_t i = 0; kun (msg! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0) << 8)); // Lähettää ylemmän näytteen IO0SET = 0x00000050; // RS HIGH & ENABLE HIGH tulostamaan tietoja IO0CLR = 0x00000020; // RW LOW Kirjoitustilan viive ms (2); IO0CLR = 0x00000040; // EN = 0, RS ja RW muuttumattomina (ts. RS = 1, RW = 0) viive ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((viesti & 0x0F) << 12)); // Lähettää alemman naposteltavan IO0SET = 0x00000050; // RS & EN KORKEA IO0CLR = 0x00000020; viive ms (2); IO0CLR = 0x00000040; viive ms (5); i ++; }
Täydellinen koodaus- ja esittelyvideo on annettu alla.