- IC HD44780 de controlador LCD de matriu de punts de 16x2:
- Visualització d'un caràcter personalitzat a la pantalla LCD de 16 x 2:
- Programació i explicació de treball:
- Connexions de circuits i proves:
En el nostre tutorial anterior, hem après a fer interfícies amb un LCD de 16 * 2 amb microcontrolador PIC. Us recomanem que la passeu abans d’anar més enllà, si sou principiant en el microcontrolador PIC. Anteriorment, també hem après els conceptes bàsics del PIC mitjançant el programa de parpelleig de LED i temporitzadors del microcontrolador PIC. Podeu consultar aquí tots els tutorials sobre l’aprenentatge de microcontroladors PIC mitjançant el compilador MPLABX i XC8.
En aquest tutorial, fem-ho més interessant creant els nostres propis personatges personalitzats i mostrant-los a la pantalla LCD mitjançant el microcontrolador PIC PIC16F877A. També hi ha alguns caràcters personalitzats predefinits que s’utilitzen principalment donats pel propi IC HD44780A, també veurem com els podem utilitzar. Tal com s’explica al nostre tutorial anterior, la nostra pantalla LCD té un controlador Hitachi HD44780 incrustat que ens ajuda a mostrar els caràcters. Cada caràcter que mostrem ja està predefinit a la ROM de l'IC HD44780. Coneixerem el controlador LCD IC HD44780 abans de mostrar el caràcter a la pantalla LCD.
IC HD44780 de controlador LCD de matriu de punts de 16x2:
Per tal de mostrar un caràcter personalitzat, d’alguna manera hem d’indicar a l’IC que serà el caràcter personalitzat. Per fer-ho, hem de conèixer els tres tipus de memòries presents a l’IC del controlador LCD HD44780:
ROM Generador de Caràcters (CGROM): és la memòria de només lectura que, com es va dir anteriorment, conté tots els patrons dels caràcters predefinits al seu interior. Aquesta ROM variarà segons cada tipus d’IC d’interfície, i alguns podrien tenir algun caràcter personalitzat predefinit.
Display Data RAM (DDRAM): és una memòria d'accés aleatori. Cada vegada que mostrem un caràcter, el seu patró serà recuperat del CGROM i transferit al DDRAM i després es col·locarà a la pantalla. Per simplificar-ho, DDRAM tindrà els patrons de tots els caràcters que es mostren actualment a la pantalla LCD. D'aquesta manera, per a cada cicle, l'IC no necessita obtenir dades de CGROM i ajuda a obtenir una freqüència d'actualització curta
Generador de caràcters RAM (CGRAM): també és una memòria d’accés aleatori, de manera que podem escriure i llegir-ne dades. Com el seu nom indica, aquesta memòria serà la que es pot utilitzar per generar el caràcter personalitzat. Hem de formar un patró per al personatge i escriure'l al CGRAM, aquest patró es pot llegir i mostrar a la pantalla quan sigui necessari.
Ara, ja que tenim una comprensió bàsica dels tipus de memòria presents a la IC de la interfície HD44780. Fem una ullada al seu full de dades per entendre una mica més.

Com ho indica el full de dades, l’IC HD44780 ha proporcionat 8 ubicacions per emmagatzemar els nostres patrons personalitzats a CGRAM, també a la dreta podem veure que hi ha alguns caràcters predefinits que també es poden mostrar a la nostra pantalla LCD. Vegem com podem fer-ho.
Visualització d'un caràcter personalitzat a la pantalla LCD de 16 x 2:
Per mostrar un caràcter personalitzat, primer hem de generar-ne un patró i després desar-lo al CGRAM. Com que ja tenim les funcions de biblioteca amb nosaltres, hauria de ser fàcil fer-ho amb algunes ordres simples. Aquí hi ha la Biblioteca per a funcions LCD, però aquí hem copiat totes les funcions de Biblioteca al propi programa, de manera que no cal incloure aquest fitxer de capçalera al nostre programa. Consulteu també aquest article per veure si funciona el LCD bàsic i els seus pinouts.
El primer pas és generar un patró o el caràcter personalitzat. Com sabem, cada personatge és una combinació de 5 * 8 punts. Hem de seleccionar quin punt (píxel) ha d’anar més alt i quin ha de romandre baix. Simplement dibuixa un quadre com a sota i ombra les regions segons el teu personatge. El meu personatge aquí és un home pal (espero que sembli un). Un cop ombrejat, escriviu senzillament el valor binari equivalent de cada byte com es mostra a continuació.

Simplement poseu un "1" a la regió ombrejada i un "0" a la regió no ombrejada per a cada byte, i això és el nostre patró personalitzat a punt. De la mateixa manera, he creat 8 codis de patrons personalitzats per als nostres 8 espais de memòria que presenten el CGROM. Es detallen a la taula següent.
|
S. NO: |
Personatge personalitzat |
Codi de patró |
|
1 |
|
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
|
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
|
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
|
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
|
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
|
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
|
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
|
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Nota: No és obligatori carregar tots els 8 espais proporcionats al CGRAM.
Programació i explicació de treball:
Ara els nostres codis de patrons estan preparats, només hem de carregar-los al CGRAM de la pantalla LCD i mostrar-los mitjançant un microcontrolador PIC. Per carregar-los al CGRAM podem formar una matriu d’elements 5 * 8 i carregar cada byte mitjançant un bucle for . A continuació es mostra la matriu de codi de patró:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Codi d'espai de memòria CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00000, Espai de memòria CGRAM 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Codi per a espai de memòria CGRAM 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00AM, // Codi espai 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Codi per a espai de memòria CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Codi per a espai de memòria CGRAM 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Codi per a espai de memòria CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Codi per a espai de memòria CGRAM 8};
Cada espai de memòria es carrega amb el seu patró de caràcter respectat. Per carregar aquest patró a l'IC HD44780, cal referir-se a la fitxa tècnica de l'HD44780, però només es poden utilitzar línies de comandament per establir l'adreça del CGRAM
// *** Carregueu caràcters personalitzats al CGROM *** ////// Lcd_Cmd (0x04); // Estableix l'adreça CGRAM Lcd_Cmd (0x00); //.. defineix l'adreça CGRAM per a (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Torna a la pàgina d'inici Lcd_Cmd (2); //.. torna a Inici // *** S'està carregant el caràcter personalitzat complet *** //////
Aquí, dins del bucle for, cada valor binari es carrega al CGROM. Un cop carregat el patró, es poden mostrar els caràcters personalitzats simplement trucant a la ubicació del patró mitjançant la funció void Lcd_Print_Char (dades de caràcters) com es mostra a continuació.
Lcd_Print_Char (0); // Mostra el caràcter personalitzat 0 Lcd_Print_Char (1); // Mostra el caràcter personalitzat 1 Lcd_Print_Char (2); // Mostra el caràcter personalitzat 2 Lcd_Print_Char (3); // Mostra el caràcter personalitzat 3 Lcd_Print_Char (4); // Mostra el caràcter personalitzat 4 Lcd_Print_Char (5); // Mostra el caràcter personalitzat 5 Lcd_Print_Char (6); // Mostra el caràcter personalitzat 6 Lcd_Print_Char (7); // Mostra el caràcter personalitzat 7
Imprimeix caràcter especial predefinit:
El HD44780 IC té alguns caràcters especials predefinits emmagatzemats al DDROM. Aquests caràcters es poden imprimir directament a la pantalla fent referència al seu valor binari al full de dades.
Per exemple: el valor binari del caràcter "ALPHA" és 0b11100000. La forma d’obtenir-la es pot entendre a la figura següent, de la mateixa manera que podeu obtenir valor per a qualsevol caràcter especial que estigui predefinit a l’IC.

Un cop conegut el valor binari, el caràcter corresponent es pot imprimir a la pantalla simplement utilitzant la funció void Lcd_Print_Char (dades de caràcters) com es mostra a continuació, Lcd_Print_Char (0b11100000); // valor binari d'alfa del full de dades
A continuació, es mostra el codi complet d’aquest projecte a la secció Codi. Consulteu també l’ explicació detallada del vídeo al final d’aquest tutorial.
Connexions de circuits i proves:
Aquest projecte no requereix cap requisit de maquinari addicional, simplement hem utilitzat les mateixes connexions del tutorial d’interfície LCD anterior i hem utilitzat la mateixa placa que hem creat al tutorial de parpelleig de LED. Com sempre, simulem el programa amb Proteus per verificar la nostra sortida.

Un cop tinguem, la simulació s’executarà com s’esperava, permetem gravar directament el codi a la configuració del maquinari. La sortida del programa hauria de ser una cosa així:

Així és com podeu mostrar qualsevol caràcter personalitzat a la pantalla LCD de 16x2 mitjançant un microcontrolador PIC amb compilador MPLABX i XC8. Consulteu també la nostra sèrie completa d’aprenentatge de microcontroladors PIC.








