Per establir una bona comunicació entre el món humà i el món de la màquina, els visualitzadors tenen un paper important. Per tant, són una part important dels sistemes incrustats. Els visualitzadors, grans o petits, funcionen segons el mateix principi bàsic. A més d'unitats de visualització complexes, com ara pantalles gràfiques i despeses 3D, cal saber treballar amb pantalles senzilles com 16x1 i 16x2. La pantalla de 16x1 tindrà 16 caràcters i es troben en una línia. La pantalla LCD de 16x2 tindrà 32 caràcters en total en la primera línia i 16 en la segona línialínia. Aquí cal entendre que a cada caràcter hi ha 5x10 = 50 píxels, de manera que per mostrar un caràcter tots els 50 píxels han de treballar junts. Però no ens hem de preocupar d’això perquè hi ha un altre controlador (HD44780) a la unitat de pantalla que fa la feina de controlar els píxels. (el podeu veure a la unitat LCD, és l'ull negre a la part posterior).
Components necessaris
Maquinari:
Microcontrolador ATmega32
Font d'alimentació (5v)
Programador AVR-ISP
JHD_162ALCD (LCD de 16x2)
Condensador de 100uF.
Programari:
Atmel studio 6.1
Progisp o màgia flash
Diagrama del circuit i explicació

Com es mostra a la interfície LCD amb el circuit ATmega32, podeu veure que la PORTA d'ATMEGA32 està connectada al port de dades LCD. Aquí s'ha de recordar desactivar la comunicació JTAG a PORTC d'ATMEGA canviant els bytes del fusible, si es vol utilitzar el PORTC com a port de comunicació normal. A la pantalla LCD de 16x2 hi ha 16 pins, si hi ha llum de fons, si no hi ha llum de fons hi haurà 14 pins. Es pot alimentar o deixar els passadors de llum de fons. Ara en els 14 pins hi ha 8 pins de dades (7-14 o D0-D7), 2 clavilles d'alimentació d'alimentació (1 i 2 o VSS i VDD o GND i + 5V), 3 rd pin per al control de contrast (Vee-controla com de gruix dels caràcters han d'estar mostrat), 3 pins de control (RS & RW & E)
Al circuit anterior per a la interfície LCD de 16x2 amb microcontrolador AVR, podeu observar que només he pres dos pins de control. Això proporciona la flexibilitat d'una millor comprensió. El bit de contrast i READ / WRITE no s’utilitzen sovint, de manera que es poden reduir a terra. D’aquesta manera, la pantalla LCD té un contrast i un mode de lectura més alts. Només hem de controlar els pins ENABLE i RS per enviar caràcters i dades en conseqüència.
Les connexions entre el microcontrolador ATmega32 i el LCD 16x2 es donen a continuació:
PIN1 o VSS: terra
PIN2 o VDD o VCC - + 5v d'alimentació
PIN3 o VEE: terra (proporciona el màxim contrast possible per a principiants)
PIN4 o RS (Selecció del registre) - PD6 del microcontrolador
PIN5 o RW (lectura / escriptura): terra (posa la pantalla LCD en mode lectura facilita la comunicació per a l'usuari)
PIN6 o E (Habilita): PD5 del microcontrolador
PIN7 o D0 - PA0 del microcontrolador
PIN8 o D1 - PA1
PIN9 o D2 - PA2
PIN10 o D3 - PA3
PIN11 o D4 - PA4
PIN12 o D5 - PA5
PIN13 o D6 - PA6
PIN14 o D7 - PA7
Al circuit podeu veure que hem utilitzat la comunicació de 8 bits (D0-D7), però això no és obligatori i també podem utilitzar la comunicació de 4 bits (D4-D7), però amb el programa de comunicació de 4 bits es fa una mica complex per als principiants, així que només hem anat amb Comunicació de 8 bits.
Així doncs, a partir de la simple observació de la taula superior, connectem 10 pins de pantalla LCD al controlador en què 8 pins són pins de dades i 2 pins per al control.
Treball
Ara per començar heu de conèixer les funcions de 10 pins de 16x2 LCD (8 pins de dades + 2 pins de control). Els 8 pins de dades serveixen per enviar dades o ordres a la pantalla LCD. En dos pins de control:
1. El pin RS (selecció de registre) és per indicar a la pantalla LCD si li estem enviant dades o comandant-hi.
Per exemple:


A la taula anterior, un valor de port de dades (D7-D0) de "0b0010 1000 o 0x28" indica a la pantalla LCD que mostri el símbol "(". A la taula dos, el mateix valor de 0x28 indica a la pantalla LCD "que és un LCD de 5 x 7 punts i comporteu-vos com un ", de manera que per al mateix valor l'usuari pot definir dues coses, ara aquesta situació es neutralitza mitjançant el pin de selecció de registre, si el pin RS està baix, el LCD entén que estem enviant l'ordre. Si posem el pin RS a alt, llavors El LCD entén que estem enviant les dades, de manera que en ambdós casos el LCD respecta el valor del port de dades segons el valor del pin RS.
2. El pin E (Habilita) és simplement indicar al "LED d'indicació d'alimentació d'un PC"; aquest pin està configurat com a alt per indicar a la pantalla LCD que "rebi el port de dades del formulari de dades del controlador". Un cop aquest pin es redueix després de l'alt, el LCD processa les dades rebudes i mostra el resultat corresponent. Per tant, aquest pin està configurat com a alt abans d’enviar dades i es tira cap a terra després d’enviar-les.
Ara, després de connectar el maquinari, inicieu Atmel studio i inicieu un nou projecte per escriure el programa, ara obriu la pantalla de programació i inicieu el programa de gravació. El programa ha de seguir-se com es mostra a continuació.
Primer, informem al controlador de quins ports estem utilitzant per a les dades i el control de la pantalla LCD. A continuació, indiqueu al controlador quan ha d’enviar dades o una ordre en conseqüència jugant amb els pins RS i E.
Breu explicació dels conceptes utilitzats al programa:
1. E es defineix com a alt (indicant a la pantalla LCD que rebi dades) i RS es posa baix (indicant a la pantalla LCD que estem donant ordres)
2. Donar valor 0x01 al port de dades com a ordre per esborrar la pantalla
3. E s’estableix (indicant a la pantalla LCD que rebi dades) i RS s’estableix (indicant a la pantalla LCD que estem donant dades)
4. Agafar una cadena de caràcters enviant cada caràcter en una cadena un per un.
5. E es posa baix (indicant a la pantalla LCD que hem acabat d'enviar dades)
6. Després de l'última ordre, la pantalla LCD finalitza la comunicació i processa les dades i mostra la cadena de caràcters a la pantalla.
En aquest escenari, enviarem els personatges un darrere l’altre. Els caràcters es donen a LCD mitjançant codis ASCII (American Standard Code for Information Interchange).
La taula de codis ASCII es mostra a la part superior. Aquí perquè la pantalla LCD mostri un caràcter "@", hem d'enviar un codi hexadecimal "64". Si enviem "0x62" a la pantalla LCD es mostrarà el símbol ">". Així, enviarem els codis adequats a la pantalla LCD per mostrar un nom.

La forma de comunicació entre el microcontrolador LCD i ATmega32 AVR s’explica millor pas a pas del codi C que es mostra a continuació,
