Näyttö on kaikkien koneiden välttämätön osa, olipa kyseessä sitten kodinkone tai teollisuuskone. Näyttö näyttää paitsi koneen ohjausvaihtoehdot, mutta myös kyseisen koneen suorittaman tehtävän tilan ja lähdön. Elektroniikassa käytetään monenlaisia näyttöjä, kuten 7-segmenttinen näyttö, 16x2 LCD-näyttö, TFT-kosketusnäyttö, OLED-näyttö jne.
16x2 LCD-näyttö on perusnäyttömoduuli ja sitä käytetään myös joissakin pienissä elektroniikkalaitteissa, kuten laskin, digitaalinen mittari jne. Olemme tehneet paljon projekteja 16x2 LCD -näytöllä, mukaan lukien perusliitännät muiden mikro-ohjainten kanssa:
- 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 LCD-näyttö liitetään Atmega16 AVR -mikrokontrolleriin ja näytetään yksinkertainen tervetuloviesti.
Tarvittavat komponentit
- Atmega16
- 16x2 LCD-moduuli
- Neulepuserot
- Leipälauta
Piirikaavio
Atmega16: n ohjelmointi 16x2 LCD-näytölle
Ohjelmointi ei vaadi ulkoisia kirjastoja. Tässä Atmega16 ohjelmoidaan USBASP: n ja Atmel Studio7.0: n avulla. Täydellinen ohjelma ja toimiva video annetaan projektin lopussa, lataa vain ohjelma Atmega16: een ja säädä nestekidenäytön kirkkautta kääntämällä 10k POT.Määritä ensin suorittimen taajuus ja sisällytä tarvittavat kirjastot, jotka tulevat Atmel Studio -paketin mukana, kuten IO-nastojen ja
Määritä ohjelmassa RS- ja EN-nasta. RS-nastoja käytetään tietojen ja komentorekisterin valitsemiseen. Aktivointitappi lukitsee tiedot.
#define fi PA3 #define rs PA2
Määritä myös, mitä Atmega16-porttia käytetään LCD-liitäntään. Tässä käytetään PORTAa.
#define lcdDirection DDRA #define lcdPort PORTA
Seuraava vaihe on rakentaa funktio, joka hyväksyy komennon välittämällä parametrin. LCD HEX -komentoja on paljon. Hex-komentoja käytetään määrittelemään LCD-näytön toiminto. Koska käytämme 4-bittistä LCD-tilaa, tavu (8-bittinen) lähetetään kahdessa paketissa. Yksi paketti on Ylempi Nibble (4-bittinen) ja toinen paketti on Lower Nibble (4-bittinen).
void lcdCommand (allekirjoittamattomat merkkikomennot) { lcdPort = (lcdPort & 0x0F) - (komennot & 0xF0); lcdPort & = ~ (1 <
Seuraava askel olisi hyväksyä merkit ja kiinnittää se LCD-porttiin. Vastaanotetut merkit lähetetään sitten LCD-näytteelle napostella. Funktio ottaa merkin käyttämällä parametria pass by by ja ottaa sitten ylemmän ja alemman naposteltavan. Rs-tappi asetetaan korkeaksi tietorekisteriä varten ja sitten nouseva pulssi lähetetään tietojen lukitsemiseksi. Vastaavasti alempi napostelu lähetetään muuttamalla aktivointiarvoa ja lähettämällä nouseva pulssi aktivointia varten.
void lcdChar (allekirjoittamaton merkkijono) { lcdPort = (lcdPort & 0x0F) - (merkkijono & 0xF0); lcdPort - = (1 <
Tämä toiminto muuntaa merkin vain merkkijonoksi ja sitä voidaan käyttää ohjelmassa myöhemmin, kun merkkijonoa tarvitaan.
void lcdString (char * str) { int j; for (j = 0; str! = 0; j ++) { lcdChar (str); } }
Nyt toiminto kirjoitetaan vain näytön tyhjentämiseksi. Sinun tarvitsee vain lähettää komento 01 HEX: ssä ja asettaa sitten kohdistin alkuasentoon.
void lcdClear () { lcdCommand (0x01); _viive_ms (2); lcdCommand (0x80); }
Nyt päätoiminnossa nestekidenäyttö alustetaan. Aseta aluksi LCD-portin PORT-suunta liittymään. Tällöin PORTTI on asetettu OUTPUT-muotoon, joten asetetaan FF.
lcdDirection = 0xFF; _viive_ms (20)
Sitten asettaa LCD 4-bittisessä tilassa lähettämällä 02 hex. Lähetä myös 28 heksadesimaalisena, jotta se asetetaan 2 riviin, 15x7 matriisipikseliä 4-bittisessä tilassa.
lcdCommand (0x02); lcdCommand (0x28);
Komento 0c ja 06 käytetään ohjaamaan kursorin sijainti. Ja lopuksi vain tyhjennä näyttö lähettämällä 01 heksadesimaalina. Tämä viimeistelee LCD-näytön alustamisen.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Kun alustus on valmis, testaa vain nestekidenäyttö lähettämällä merkkijono. Annamme nyt String " Liitännät LCD " in 1 s rivi.
lcdString ("Interfacing LCD");
Sitten siirrä kursori seuraavalle riville lähettämällä komento c 0 hex. Kirjoita lopuksi tähän kohtaan merkkijono " Atmega1 6: lla".
lcdCommand (0xC0); lcdString ("Atmega16: n kanssa");
Tämä viimeistelee täydellisen opetusohjelman 16x2 LCD: n liittämisestä Atmega16: een. Huomaa, että jos et saa kuvaa tai pikseleitä, tarkista joko johdot koodin ja piirikaavion mukaan tai muuta nestekidenäytön V0-nastaan kiinnitetyn POT-arvon arvoa. Jos sinulla on epäilyksiä tai ehdotuksia, voit tavoittaa meidät joko kirjoittamalla foorumillemme tai kommentoimalla alla.