Download pptx - ccs lcd 2f y 4f

Transcript
Page 1: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

COMPILADOR C CCS SISTEMAS EMBEBIDOS

DIGITALES III: 1

Page 2: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

PIC18F4550

LCD 2 filas por 16 columnas

DIGITALES III: 2

Page 3: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

3

LCDLas pantallas LCD permiten visualizar la información de un sistema digital. Existen diferentes tipos de pantallas, se caracterizan por la cantidad de columnas y filas, de ellas la más sencilla es la LM016l con 2 filas y 16 columnas, sin embargo existen otras como la LM041l la cual cuenta con 4 filas y 16 columnas.

Existen pantallas para visualizar un mayor numero de caracteres como la LM044l la cual cuenta con 4 filas por 20 columnas. Pero para otras aplicaciones existen pantallas lcd graficas las cuales se trataran en el presente segmento.

CCS cuenta con la librería para comunicarse con una pantalla LCD de 16 filas por 4 columnas.

Page 4: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 4

Ejemplos de definición:

Para utilizarla es necesario mencionarla en el inicio del programa para ello se escribe:#include <LCD.C>

Esta librería cuenta con las siguientes funciones:Lcd_init():Esta función permite inicializar la pantalla LCD, esta configurada para utilizar la 4 bits en el bus de datos, 4 lineas y 5 x 8 puntos, en modo encendido, el cursor esta apagado y sin parapadeo del cursor.

Cada carácter que se escriba avanza una posición.Recuerde que esta es la primer función que se debe llamar y no debe pasar las de 100 ms después del encendido del micro para que la pantalla conozca su modo de funcionamiento.

Page 5: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 5

Lcd_gotoxy(byte x, byte y)Indica la posición de acceso a la pantalla LCD, el sitio donde se escribe un carácter. Byte x hace referencia a la columna y el byte Y hace referencia a la fila.

Por ejemplo lcd_gotoxy(10,1) ubica en la primera fila posición de columna 10.

Lcd_getc(byte x, byte y)Lee el contenido de la posición en columna x y fila y

lcd_putc(char s)Permite escribir un carácter en la posicion establecida, cuenta con unos modificadores como:

Page 6: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 6

\f Limpia la LCD y se ubica en la primera fila y primera columna.

\n El cursor se ubica en la segunda fila y columna 1.

\b El cursor retrocede una posición

Ejemplos de su uso:lcd_putc("\fMensaje prueba“);Ubica el mensaje en la primera fila y borra la pantalla.También se cuenta con funciones especiales como printf en ese caso la instrucción anterior se puede escribir como:Printf(lcd_putc,"\fMensaje prueba“);

Page 7: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 7

Printf le permite enviar datos a la pantalla y transformarlos al formato requerido.printf(LCD_PUTC, "n=%u”,n);

La línea anterior indica que n es una variable de tipo entero; observe que aparece el símbolo porcentaje seguido de un carácter , este lleva una estructura: %NT , N es opcional y corresponde al numero de caracteres a visualizar y T es el tipo de datos.

N:1-9: Indica cuantos caracteres se deben especificar01-99: Indica la cantidad de ceros a la izquierda1.1-9.9 Para indicar caracteres flotantes

Page 8: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 8

T el tipo de variable:c: Caracters: Cadena de caracteres

u: Entero sin signod: Entero con signo

Lu: Entero largo sin signoLd: Entero largo con signo

x: Entero Hexadecimal en minúsculasX: Entero Hexadecimal en mayúsculas

Lx: Entero largo Hexadecimal en minúsculasLX: Entero largo Hexadecimal en mayúsculas

Page 9: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 9

T el tipo de variable:f: Flotante con truncadog: Flotante con redondo

e: Flotante con formato exponencial

w: Entero sin signo con decimales insertados, la primer cifra indica el total y la segunda los decimales

Ejemplo 1: valor=5; printf(lcd_putc,"\fformato datos"); printf(lcd_putc,"\nN=%03u",valor);

Page 10: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 10

Ejemplo 2:

pi=3.14159265; printf(lcd_putc,"\fformato datos"); printf(lcd_putc,"\nPI=%f",pi);Recuerde que f es truncado para flotantes . Si coloca un parámetro \nPI=%f", el valor es redondeadEjemplo 3:

pi=3.14159265; printf(lcd_putc,"\fformato datos"); printf(lcd_putc,"\nPI=%e",pi);Recuerde que e es en formato exponencial.

Page 11: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 11

Observe los siguientes ejemplos que aparecen en la ayuda de CCS:

Page 12: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 12

Observe la tabla residente en la CGROM de la pantalla LCD:

Page 13: ccs lcd 2f y 4f

La librería LCD permite una conexión de 4lineas en el bus de datos. La siguiente es la configuración:

PORTD,0: EnabledPORTD,1: RS PORTD,2: RW

PORTD,4: D4PORTD,5: D5 PORTD,6: D6PORTD,7: D7

La configuración depende de la versión, pero la librería se puede modificar, para ello se debe ingresar a la librería y establecer como uso para la pantalla LCD el puerto D.

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 13

Page 14: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 14

La configuración depende de la versión, pero la librería se puede modificar, esta por defecto puede trabajar en el puerto B o en el puerto D, el inicio de la librería indica su configuración:

Page 15: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 15

Si se desea cambiar de puerto entonces se puede modificar en la librería los puertos de configuración, para ello modifique las líneas correspondientes en el segmento

#define LCD_DATA_PORT getenv("SFR:PORTD") //portd #else #define LCD_DATA_PORT getenv("SFR:PORTB") //portb

Por otro puerto diferente, puede ser el puerto C.

Page 16: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 16

Un programa para la pantalla LCD debe iniciar mencionando la librería a utilizar:

En el segmento void se inicializa y se procede a trabajar:

Page 17: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 17

Observe el siguiente diagrama de conexión de una aplicación con RS232, LCD y teclado:

Ejercicio en clase:Construya una aplicación que permita visualizar por medio de una secuencia de 1 a 10 diferentes visualizaciones de un mismo dato, utilice los formatos de PRINTF.

Page 18: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

PIC18F4550

LCD 4 filas por 16 columnas

DIGITALES III: 18

Page 19: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

19

LCD de 4 filasExisten otras pantallas como la LM041l la cual cuenta con 4 filas y 16 columnas, también la LM044l la cual cuenta con 4 filas por 20 columnas.

CCS cuenta con la librería para comunicarse con una pantalla LCD de 16 filas por 4 columnas y que pasa con estas nuevas pantallas?.

Rta/ Como Usted conoce ensamblador puede crear su propia librería para trabajar con una pantalla de este tipo. Pero es más facil modificar una librería existente.

Page 20: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

20

LCD de 4 filasObserve el siguiente montaje y recuerde que esta pantalla LCD trae otra configuración para ubicarse en las filas:

Page 21: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

21

Distribución de la memoria de la LM041L

La distribución de la memoria es importante para conocer la posición de memoria donde inicia cada fila.

Page 22: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

22

LCD de 4 filas1. Lo primero es construir una librería similar a la LCD.C, para ello se debe ubicar en la ruta:

C:\Program Files\PICC\Drivers 2. Se copia la librería LCD.C y se pega con el nombre LCD_4F.C

3. Cree un nuevo proyecto y una vez pasado el asistente llama a la librería de la LCD de 4 filas#include <LCD_4F.C>

4. Es necesario modificar la librería, se debe tener en cuenta las filas y sus posiciones de inicio. Hasta el momento la librería funciona para 2 filas.

Page 23: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

23

LCD de 4 filas5. Ahora debemos agregar la programación para ubicarse en la tercera y en la cuarta fila. Observe el siguiente segmento de código en la librería:void lcd_putc(char c){ switch (c) { case '\f' : lcd_send_byte(0,1); delay_ms(2); // este código borra la pantalla y se break; // ubica en fila 1 case '\n' : lcd_gotoxy(1,2); break; case '\b' : lcd_send_byte(0,0x10); break; default : lcd_send_byte(1,c); break; }}

Page 24: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

24

LCD de 4 filas6. Si se observa esta hace uso de LCD_gotoxy, es necesario observar su estructura y modificarla.Es necesario crear nuevas constantes así:

Esta nuevas etiquetas deben modificar la función LCD_GOTOXY, para ello es necesario agregar las nuevas opciones. Esto se observa en el siguiente texto:

Page 25: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

25

LCD de 4 filas7. La nueva función lcd_gotoxy es :

8. Finalmente se puede modificar la función void lcd_putc(char c) así:

9. Después de unas pruebas fue necesario crear una función adicional la cual se denomina lcd_gotoxysolo

Page 26: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

26

LCD de 4 filaslcd_gotoxysoloComo se menciono, después de unas pruebas fue necesario crear una función adicional la cual se denomina lcd_gotoxysolo, esta permite indicar la posición a partir de la cual empieza a escribir en la memoria de datos de la LCD. Se la puede utilizar de forma directa para ubicarse en una posición específica.

lcd_gotoxy solo es valida para ubicarse en la fila 1 y la fila 2.

Digite el siguiente código en la librería:

void lcd_gotoxysolo(BYTE x){ lcd_send_byte(0,X);}

Page 27: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

27

La librería se debe grabar en la carpeta y por ello es necesario cambiar su ubicación cuando se la llama, si Usted la deja en las librerías de C estas no se actualizan si Usted cambia su código.La nueva ubicación puede ser:

Los códigos que se pueden digitar para hacer uso de esta librería son: lcd_init(); pi=3.14159265; printf(lcd_putc,"\fFORMATO DATOS"); printf(lcd_putc,"\npi=%e",pi); lcd_putc("\tdigita");//solo escribe 6 caracteres lcd_gotoxysolo(0x96); lcd_putc("l");

Page 28: ccs lcd 2f y 4f

GAMA ALTA DE MICROCONTROLADORES

Digitales 3 - 28

lcd_gotoxysolo(0x97); lcd_putc('e'); lcd_gotoxysolo(0x98); lcd_putc('s'); lcd_gotoxysolo(0x99); lcd_putc(' '); lcd_gotoxysolo(0x9a); lcd_putc('3'); lcd_gotoxysolo(0x9b); lcd_putc('.'); lcd_gotoxysolo(0x9c); lcd_putc('0'); lcd_gotoxysolo(0x9d); lcd_putc('0'); lcd_gotoxysolo(0x9e); lcd_putc('0'); printf(lcd_putc,"\l2011 pasto co");

Aun es necesario depurar la librería para evitar la utilización de funciones de cadena, escritura de carácter a carácter para completar la fila 3 y en las ultimas columnas de fila 4.

Este tipo de librerías no se incluyen en CCS y es una necesidad construir sus propias librerías. La siguiente imagen ilustra la aplicación.

Page 29: ccs lcd 2f y 4f

29

PANTALLA LCD DE 4 FILAS

Page 30: ccs lcd 2f y 4f

30


Recommended