Displej je nevyhnutnou súčasťou každého stroja, či už je to akýkoľvek domáci spotrebič alebo priemyselné zariadenie. Displej zobrazuje nielen možnosti ovládania stroja, ale aj stav a výstup úlohy vykonanej strojom. V elektronike sa používa veľa druhov displejov, ako napríklad 7-segmentový displej, 16x2 LCD displej, TFT dotykový displej, OLED displej atď.
16x2 LCD displej je najzákladnejší zobrazovací modul a tiež sa používa v niektorých malých elektronických zariadeniach, ako sú kalkulačky, digitálne merače atď. Urobili sme veľa projektov pomocou 16x2 LCD vrátane základného prepojenia s inými mikrokontrolérmi:
- Rozhranie LCD s mikrokontrolérom 8051
- Prepojenie LCD s mikrokontrolérom ATmega32
- Rozhranie LCD s mikrokontrolérom PIC
- Prepojenie 16x2 LCD s Arduino
- 16x2 LCD prepojenie s Raspberry Pi pomocou Pythonu
V tomto tutoriále uvidíme, ako prepojiť 16x2 LCD s mikrokontrolérom Atmega16 AVR a zobraziť jednoduchú uvítaciu správu.
Súčasti sú povinné
- 16. Atmega
- 16x2 LCD modul
- Skokani
- Nepál
Schéma zapojenia
Programovanie Atmega16 pre 16x2 LCD displej
Programovanie nevyžaduje žiadne externé knižnice. Tu je Atmega16 programovaný pomocou USBASP a Atmel Studio7.0. Kompletný program a pracovné video je uvedené na konci projektu, stačí nahrať program do Atmega16 a otočiť 10k POT na nastavenie jasu LCD.Spočiatku definujte frekvenciu CPU a zahrňte potrebné knižnice, ktoré sa dodávajú s balíkom Atmel Studio, napríklad na prístup k IO pinom a
V programe definujte pin RS a EN LCD. Kolíky RS sa používajú na výber registra údajov a príkazov. Aktivačný kolík zaistí údaje.
#define en PA3 #define rs PA2
Tiež definujte, ktorý PORT Atmega16 sa použije na prepojenie LCD. Tu sa používa PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
Ďalším krokom je zostrojenie funkcie, ktorá prijme príkaz odovzdaním parametra. Existuje veľa LCD HEX príkazov. Hex príkazy sa používajú na definovanie funkcie LCD. Pretože používame 4-bitový režim LCD, bude byt (8-bitový) odosielaný v dvoch paketoch. Jeden paket bude Upper Nibble (4-bitový) a druhý paket bude Lower Nibble (4-bitový).
void lcdCommand (nepodpísané char príkazy) { lcdPort = (lcdPort & 0x0F) - (príkazy & 0xF0); lcdPort & = ~ (1 <
Ďalším krokom by bolo prijatie znakov a ich prichytenie k portu LCD. Prijaté znaky sa potom pošlú na displej LCD okusovaním. Funkcia vezme znak pomocou parametra pass by a potom vezme horný a dolný obrus. Kolík „rs“ je pre dátový register nastavený na vysokú hodnotu a potom sa na zvýšenie údajov pošle rastúci impulz. Podobne sa odosiela aj spodný výbežok zmenou hodnoty povolenia a odoslaním stúpajúceho impulzu pre povolenie.
void lcdChar (nepodpísaný znakový reťazec) { lcdPort = (lcdPort & 0x0F) - (reťazec & 0xF0); lcdPort - = (1 <
Táto funkcia iba prevedie znak na reťazec a môže byť použitá v programe neskôr, kde je potrebný zápis reťazca.
void lcdString (char * str) { int j; pre (j = 0; str! = 0; j ++) { lcdChar (str); } }
Teraz je napísaná funkcia iba na vyčistenie obrazovky. Musíte len poslať príkaz 01 v HEX a potom len nastaviť kurzor do počiatočnej polohy.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Teraz je v hlavnej funkcii inicializovaný LCD. Najskôr nastavte smer PORT pre rozhranie LCD. Tu je PORT nastavený ako VÝSTUP, takže nastavený FF.
lcdDirection = 0xFF; _delay_ms (20)
Potom nastavte LCD na 4-bitový režim odoslaním 02 in hex. Pošlite tiež 28 v hexadecimálnom formáte, aby ste ich nastavili na dvojriadkový maticový pixel 15 x 7 v 4-bitovom režime.
lcdCommand (0x02); lcdCommand (0x28);
Príkaz 0C a 06 sa používa na riadenie pozície kurzora. A nakoniec iba vyčistite obrazovku odoslaním 01 v hexadecimálnom formáte. Týmto sa ukončí inicializácia LCD.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Po dokončení inicializácie len otestujte LCD zaslaním reťazca. Sem posielame reťazec „ Interfacing LCD “ v 1. rade.
lcdString ("Rozhranie LCD");
Potom posuňte kurzor na ďalší riadok odoslaním príkazu c0 v hexadecimálnom tvare. A nakoniec na túto pozíciu napíšte reťazec „With Atmega1 6“.
lcdCommand (0xC0); lcdString ("S Atmega16");
Týmto sa dokončuje kompletný tutoriál o prepojení 16x2 LCD s Atmega16. Ak nezískate žiadny obraz alebo pixely, skontrolujte zapojenie podľa kódu a schémy zapojenia alebo zmeňte hodnotu POT pripojeného na pin V0 LCD. Ak máte akékoľvek pochybnosti alebo návrhy, môžete nás kontaktovať písomnou formou na našom fóre alebo v komentári nižšie.