Les unitats de visualització són els dispositius de sortida més importants en projectes incorporats i productes electrònics. La pantalla LCD de 16x2 és una de les unitats de visualització més utilitzades. La pantalla LCD de 16x2 significa que hi ha dues files en què es poden mostrar 16 caràcters per línia i que cada caràcter ocupa espai de matriu 5X7 a la pantalla LCD. En aquest tutorial connectarem el mòdul LCD 16X2 al microcontrolador 8051 (AT89S52). La interfície LCD amb el microcontrolador 8051 pot semblar bastant complex per als novells, però després d’entendre el concepte semblaria molt senzill i fàcil. Tot i que pot trigar molt de temps, ja que heu d’entendre i connectar 16 pins de pantalla LCD al microcontrolador. Per tant, primer entenem els 16 pins del mòdul LCD.
El podem dividir en cinc categories: pins d’alimentació, pins de contrast, pins de control, pins de dades i pins de retroiluminació.
|
Categoria |
Pin NO. |
Nom del pin |
Funció |
|
Pins d'alimentació |
1 |
VSS |
Pin de terra, connectat a terra |
|
2 |
VDD o Vcc |
Pin de tensió + 5V |
|
|
Pin de contrast |
3 |
V0 o VEE |
Configuració del contrast, connectat a Vcc mitjançant una resistència variable. |
|
Pins de control |
4 |
RS |
Registre Seleccioneu Pin, RS = 0 Mode d'ordres, RS = 1 Mode de dades |
|
5 |
RW |
Pin de lectura / escriptura, RW = 0 mode d'escriptura, RW = 1 mode de lectura |
|
|
6 |
E |
Activa, un pols d’alç a baix ha d’habilitar la pantalla LCD |
|
|
Pins de dades |
7-14 |
D0-D7 |
Pins de dades, emmagatzema les dades que es mostraran a la pantalla LCD o les instruccions d’ordre |
|
Pins de llum de fons |
15 |
LED + o A |
Per alimentar la llum de fons + 5V |
|
16 |
LED- o K |
Terra de llum de fons |
Tots els pins s’entenen clarament pel seu nom i funcions, excepte els pins de control, per la qual cosa s’expliquen a continuació:
RS: RS és el pin de selecció del registre. Hem d’establir-lo a 1, si enviem algunes dades perquè es mostrin a la pantalla LCD. I l’establirem a 0 si enviem instruccions d’ordre com ara esborrar la pantalla (codi hexadecimal 01).
RW: es tracta d'un pin de lectura / escriptura, el posarem a 0, si anem a escriure algunes dades a la pantalla LCD. I configureu-lo a 1, si llegim des del mòdul LCD. Generalment, s'estableix a 0, perquè no necessitem llegir dades de la pantalla LCD. Només cal llegir algunes instruccions "Obteniu l'estat de la pantalla LCD".
E: Aquest pin s'utilitza per habilitar el mòdul quan se li dóna un impuls de baix a alt. S'hauria de donar un pols de 450 ns. Aquesta transició d’ALTA a BAIXA fa que el mòdul ENABLE.
Hi ha algunes instruccions de comandes predefinides a LCD, les hem utilitzat al nostre programa següent per preparar la pantalla LCD (a la funció lcd_init ()). A continuació es donen algunes instruccions d’ordres importants:
|
Codi hexadecimal |
Ordre al registre d'instruccions LCD |
|
0F |
LCD activat, cursor activat |
|
01 |
Esborra la pantalla |
|
02 |
Tornar a casa |
|
04 |
Redueix el cursor (desplaça el cursor cap a l'esquerra) |
|
06 |
Incrementa el cursor (desplaça el cursor cap a la dreta) |
|
05 |
Canviar la pantalla cap a la dreta |
|
07 |
Majúscules a l'esquerra |
|
0E |
Pantalla ACTIVADA, el cursor parpelleja |
|
80 |
Força el cursor al començament de la primera línia |
|
C0 |
Força el cursor al començament de la segona línia |
|
38 |
2 línies i matriu 5 × 7 |
|
83 |
Posició 3 de la línia 1 del cursor |
|
3C |
Activeu la segona línia |
|
08 |
Visualització OFF, cursor OFF |
|
C1 |
Saltar a la segona línia, posició 1 |
|
OC |
Pantalla ON, cursor OFF |
|
C1 |
Saltar a la segona línia, posició 1 |
|
C2 |
Saltar a la segona línia, posició 2 |
Diagrama del circuit i explicació

A la figura anterior es mostra el diagrama de circuits per a la interfície LCD amb el microcontrolador 8051. Si teniu coneixement bàsic de 8051, heu de saber sobre EA (PIN 31), XTAL1 i XTAL2, pin RST (PIN 9), Vcc i Ground Pin del microcontrolador 8051. He utilitzat aquests pins al circuit superior. Si no en teniu cap idea, us recomano que llegiu aquest article Interfície LED amb microcontrolador 8051 abans de passar per la interfície LCD.
Així, a més d’aquests pins anteriors, hem connectat els pins de dades (D0-D7) de la pantalla LCD al microcontrolador Port 2 (P2_0 - P2_7). I controleu els pins RS, RW i E al pin 12,13,14 (pin 2,3,4 del port 3) del microcontrolador respectivament.
El PIN 2 (VDD) i el PIN 15 (subministrament de llum de fons) de la pantalla LCD estan connectats a la tensió (5v) i el PIN 1 (VSS) i el PIN 16 (terra de llum de fons) estan connectats a terra.
El pin 3 (V0) està connectat a la tensió (Vcc) mitjançant una resistència variable de 10 k per ajustar el contrast de la pantalla LCD. La pota mitjana de la resistència variable està connectada al PIN 3 i altres dues potències estan connectades a la font de tensió i a la terra.
Explicació del codi
He intentat explicar el codi mitjançant comentaris (al mateix codi).
Com he explicat anteriorment sobre el mode d’ordres i el mode de dades, podeu veure que mentre s’envia l’ordre (funció lcd_cmd) hem definit RS = 0, RW = 0 i es dóna un pols ALTA a BAIX a E fent-lo 1, llavors 0 També a l’hora d’enviar dades (funció lcd_data) a la pantalla LCD, hem definit RS = 1, RW = 0 i es dóna un impuls d’ALTA a BAIX a E fent-lo d’1 a 0. La funció msdelay () s’ha creat per crear un retard en mil·lisegons i anomenat amb freqüència al programa, es diu perquè el mòdul LCD tingui temps suficient per executar l'operació i les ordres internes.
S'ha creat un bucle while per imprimir la cadena, que crida a la funció lcd_data cada vegada per imprimir un caràcter fins a l'últim caràcter (terminador nul- '\ 0').
Hem utilitzat la funció lcd_init () per preparar la pantalla LCD mitjançant les instruccions d’ordres predefinides (explicades més amunt).
