La pantalla és la part necessària de qualsevol màquina, ja sigui electrodomèstica o industrial. La pantalla no només mostra les opcions de control per fer funcionar la màquina, sinó que també mostra l'estat i la sortida de la tasca realitzada per aquesta màquina. Hi ha molts tipus de pantalles utilitzades en electrònica, com ara pantalles de 7 segments, pantalla LCD de 16x2, pantalla tàctil TFT, pantalla OLED, etc.
La pantalla LCD de 16x2 és el mòdul de visualització més bàsic i també s'utilitza en alguns equips electrònics petits, com ara calculadores, comptadors digitals, etc.
- Interfície LCD amb microcontrolador 8051
- Interfície LCD amb microcontrolador ATmega32
- Interfície LCD amb microcontrolador PIC
- Interfície LCD 16x2 amb Arduino
- Interfície LCD de 16x2 amb Raspberry Pi mitjançant Python
En aquest tutorial, veurem com connectar una pantalla LCD de 16x2 amb el microcontrolador AVR Atmega16 i mostrar un simple missatge de benvinguda.
Components necessaris
- Atmega16
- Mòdul LCD de 16x2
- Saltadors
- Taula de pa

Esquema de connexions


Programació Atmega16 per a pantalla LCD de 16x2
La programació no requereix cap llibreria externa. Aquí l' Atmega16 es programa mitjançant USBASP i Atmel Studio7.0. El programa complet i el vídeo de treball es donen al final del projecte, només cal carregar el programa a Atmega16 i girar 10k POT per ajustar la brillantor de la pantalla LCD.Definiu inicialment la freqüència de la CPU i incloeu les biblioteques necessàries que inclouen el paquet Atmel Studio, com ara per accedir a pins IO i
Definiu el pin RS i EN de la pantalla LCD al programa. Els pins RS s’utilitzen per seleccionar el registre de dades i ordres. El pin d'activació bloqueja les dades.
#define en PA3 #define rs PA2
Definiu també el PORT d'Atmega16 que s'utilitzarà per a la interfície LCD. Aquí s’utilitza el PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
El següent pas és construir una funció que accepti una ordre passant un paràmetre. Hi ha molts ordres LCD HEX. Els comandaments Hex s’utilitzen per definir la funció de la pantalla LCD. Com que fem servir el mode de LCD de 4 bits, el byte (8 bits) s'enviarà en dos paquets. Els paquets seran Upper Nibble (4 bits) i l’altre paquet serà Lower Nibble (4 bits).
void lcdCommand (ordres de caràcters sense signar) { lcdPort = (lcdPort & 0x0F) - (ordres & 0xF0); lcdPort & = ~ (1 <
El següent pas seria acceptar els caràcters i fixar-los al port de la pantalla LCD. Els caràcters rebuts s’envien al nibble LCD per nibble. La funció pren el caràcter mitjançant pass per paràmetre i, a continuació, pren el picat superior i inferior. El pin 'rs' s'estableix en alt per al registre de dades i, a continuació, s'envia un impuls ascendent per bloquejar les dades. De la mateixa manera, el picat inferior enviat canviant el valor de enable i enviant el pols ascendent de enable.
void lcdChar (cadena de caràcters sense signar) { lcdPort = (lcdPort & 0x0F) - (cadena & 0xF0); lcdPort - = (1 <
Aquesta funció només converteix el caràcter en cadena i es pot utilitzar al programa més endavant on calgui escriure cadena.
void lcdString (char * str) { int j; per a (j = 0; str! = 0; j ++) { lcdChar (str); } }
Ara s’escriu una funció només per netejar la pantalla. Només cal que envieu l’ordre 01 a HEX i, tot seguit, configureu el cursor a la posició inicial.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Ara, a la funció principal, s’inicialitza la pantalla LCD. Inicialment, configureu la direcció PORT per a la interfície LCD. Aquí, el PORT s'estableix com a SORTIDA, així es defineix FF.
lcdDirection = 0xFF; _delay_ms (20)
A continuació, configureu la pantalla LCD en mode de 4 bits enviant 02 en hexadecimal. Envieu també 28 en hexadecimal per configurar-lo en la línia de matriu de 15 x 7 píxels en mode de 4 bits.
lcdCommand (0x02); lcdCommand (0x28);
L' ordre 0c i 06 s'utilitza per controlar la posició del cursor. I, finalment, neteja la pantalla enviant 01 en hexadecimal. Això acabarà la inicialització de la pantalla LCD.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Un cop finalitzada la inicialització, només cal que proveu la pantalla LCD enviant una cadena. Aquí us enviarem una cadena " Interfacing LCD " a la primera fila.
lcdString ("Interfacing LCD");
A continuació, moveu el cursor a la fila següent enviant l'ordre c0 en hexadecimal. I, finalment, en aquesta posició, escriviu la cadena "Amb Atmega1 6".
lcdCommand (0xC0); lcdString ("Amb Atmega16");

Amb això s'acaba el tutorial complet sobre la interfície d'una pantalla LCD de 16x2 amb Atmega16. Tingueu en compte que si no obteniu cap imatge ni píxels, comproveu el cablejat segons el codi i el diagrama del circuit o canvieu el valor del POT connectat al pin V0 de la pantalla LCD. Si teniu algun dubte o suggeriment, podeu contactar amb nosaltres escrivint al nostre fòrum o fent comentaris a continuació.
