Ekranas yra būtina bet kurios mašinos dalis, nesvarbu, ar tai buitinė, ar pramoninė mašina. Ekrane rodomos ne tik valdymo parinktys valdant mašiną, bet ir rodoma tos mašinos atliktos užduoties būsena ir išvestis. Elektronikoje naudojama daugybė ekranų, tokių kaip 7 segmentų ekranas, 16x2 LCD ekranas, TFT jutiklinio ekrano ekranas, OLED ekranas ir kt.
16x2 skystųjų kristalų ekranas yra pats pagrindinis ekrano modulis, taip pat naudojamas kai kuriose mažose elektronikos įrangose, tokiose kaip skaičiuoklė, skaitmeninis skaitiklis ir kt. Mes atlikome daugybę projektų naudodami 16x2 skystųjų kristalų ekraną, įskaitant pagrindinę sąsają su kitais mikrovaldikliais:
- LCD sąsaja su 8051 mikrovaldikliu
- Sąsajos skystųjų kristalų ekranas su „ATmega32“ mikrovaldikliu
- LCD sąsaja su PIC mikrovaldikliu
- Susijęs 16x2 LCD ekranas su „Arduino“
- 16x2 LCD sąsaja su „Raspberry Pi“ naudojant „Python“
Šioje pamokoje pamatysime, kaip susieti 16x2 skystųjų kristalų ekraną su „Atmega16 AVR“ mikrovaldikliu ir parodyti paprastą pasveikinimo pranešimą.
Būtini komponentai
- 16. „Atmega“
- 16x2 LCD modulis
- Džemperiai
- Bandomoji Lenta
Grandinės schema
„Atmega16“ programavimas 16x2 LCD ekranui
Programuojant nereikia jokių išorinių bibliotekų. Čia „ Atmega16“ užprogramuojamas naudojant USBASP ir „Atmel Studio7.0“. Visa programa ir darbinis vaizdo įrašas pateikiami projekto pabaigoje. Tiesiog įkelkite programą į „Atmega16“ ir pasukite 10 k. POT, kad sureguliuotumėte LCD ryškumą.Iš pradžių nustatykite procesoriaus dažnį ir įtraukite reikalingas bibliotekas, kurios pateikiamos kartu su „Atmel Studio Package“, pvz., Norint pasiekti IO kaiščius ir
Programoje apibrėžkite LCD ir EN kaiščius. „RS Pins“ naudojami duomenų ir komandų registrui pasirinkti. Įgalinimo kaištis fiksuoja duomenis.
#define lt PA3 #define rs PA2
Taip pat apibrėžkite, kuris „Atmega16“ Uostas bus naudojamas sąsajai su LCD. Čia naudojama PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
Kitas žingsnis - sukonstruoti funkciją, kuri priims komandą perduodama parametrą. Yra daugybė LCD HEX komandų. „Hex“ komandos naudojamos LCD funkcijai apibrėžti. Kadangi mes naudojame 4 bitų LCD režimą, baitas (8 bitų) bus siunčiamas dviem paketais. Vieni paketai bus „Upper Nibble“ (4 bitų), o kiti paketai bus „Lower Nibble“ (4 bitų).
void lcdCommand (nepasirašytos char komandos) { lcdPort = (lcdPort & 0x0F) - (komandos & 0xF0); lcdPort & = ~ (1 <
Kitas žingsnis būtų simbolių priėmimas ir pririšimas prie LCD prievado. Gauti simboliai yra išsiunčiami į LCD skystį. Funkcija paima simbolį, naudodama „ pass by“ parametrą , tada ima viršutinį ir apatinį nagus. Duomenų registrui „rs“ kaištis yra nustatytas aukštai, o tada fiksuojamas duomenys siunčiami kylančiu impulsu. Panašiai apatinis nubraukimas, siunčiamas keičiant įgalinimo vertę ir siunčiant kylantį impulsą įgalinimui.
void lcdChar (nepasirašyta simbolių eilutė) { lcdPort = (lcdPort & 0x0F) - (eilutė & 0xF0); lcdPort - = (1 <
Ši funkcija tiesiog paverčia simbolį į eilutę ir gali būti naudojama programoje vėliau, kai reikia rašymo eilutės.
void lcdString (char * str) { int j; už (j = 0; str! = 0; j ++) { lcdChar (str); } }
Dabar funkcija parašyta tik norint išvalyti ekraną. Jums tiesiog reikia nusiųsti komandą 01 HEX ir tada tiesiog nustatyti žymeklį į pradinę padėtį.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); „lcdCommand“ (0x80); }
Dabar pagrindinė funkcija LCD yra inicializuota. Iš pradžių nustatykite LCD sąsajos PORT kryptį. Čia Uostas nustatomas kaip IŠĖJIMAS, taigi nustatykite FF.
lcdDirection = 0xFF; _delay_ms (20)
Tada nustatykite skystųjų kristalų ekraną 4 bitų režimu, nusiųsdami 02 šešiakampiu. Taip pat nusiųskite 28 šešiakampiais, kad nustatytumėte 2 eilutes, 15x7 matricos pikselius 4 bitų režimu.
„lcdCommand“ (0x02); „lcdCommand“ (0x28);
Komanda 0C ir 06 yra naudojami siekiant kontroliuoti žymeklio padėtį. Ir galiausiai tiesiog išvalykite ekraną, nusiųsdami 01 šešioliktainę. Tai užbaigs LCD inicializavimą.
lcdCommand (0x0c); „lcdCommand“ (0x06); „lcdCommand“ (0x01);
Baigę inicijavimą, tiesiog išbandykite skystųjų kristalų ekraną siųsdami eilutę. Čia mes siunčiame String " sąsajos LCD " į 1 -ojo eilės.
„lcdString“ („sąsajos skystųjų kristalų ekranas“);
Tada perkelkite žymeklį į kitą eilutę, išsiųsdami komandą c0 šešiakampiu. Ir galiausiai šioje pozicijoje užrašykite eilutę „With Atmega1 6“.
lcdCommand (0xC0); „lcdString“ („Su Atmega16“);
Pabaigta visa pamoka, kaip susieti 16x2 LCD ekraną su „Atmega16“. Atkreipkite dėmesį, kad jei negaunate jokio vaizdo ar pikselių, patikrinkite laidus pagal kodą ir grandinės schemą arba pakeiskite POT, pritvirtinto prie LCD V0 kaiščio, vertę. Jei turite kokių nors abejonių ar pasiūlymų, galite susisiekti su mumis parašydami mūsų forume arba komentuodami žemiau.