Programacion PIC en Lenguaje C Parte 2

14
1 Vss Tierra 2 Vdd Alimentación +5V 3 Vo Ajuste de Voltaje de Contraste Selección Datos/Control Rs = 0 à Control Rs = 1 à Datos Lectura/Escritura R/W = 0 à Escritura R/W = 1 à Lectura Habilitación E= 0 deshabilita E= 1 habilita 7 D0 8 D1 9 D2 10 D3 11 D4 12 D5 13 D6 14 D7 BUS DE PALABRA DE DATOS 6 E 4 RS 5 R/W LCD - Display de Cristal Liquido

Transcript of Programacion PIC en Lenguaje C Parte 2

Page 1: Programacion PIC en Lenguaje C Parte 2

1 Vss Tierra

2 Vdd Alimentación +5V

3 Vo Ajuste de Voltaje de Contraste

Selección Datos/Control

Rs = 0 à Control

Rs = 1 à Datos

Lectura/Escritura

R/W = 0 à Escritura

R/W = 1 à Lectura

Habilitación

E= 0 deshabilita

E= 1 habilita

7 D0

8 D1

9 D2

10 D3

11 D4

12 D5

13 D6

14 D7

BUS DE PALABRA DE DATOS

6 E

4 RS

5 R/W

LCD - Display de Cristal Liquido

Page 2: Programacion PIC en Lenguaje C Parte 2

DATOS DISPLAYDDRAM

CGRAM(Caracteres Generados)

USUARIO

CGROM(Caracteres Generados )

FABRICANTE

CIRCUITO DE

CONTROL

RS

RW

E

8

D7-D0

Diagrama de bloques del Sistema interno del LCD

Page 3: Programacion PIC en Lenguaje C Parte 2

DDRAM: En esta memoria se almacenan los caracteres que se visualizan en

la pantalla, el tamaño y distribución de esta memoria depende del tamaño del

display.

1 2 3 4 5 6 7 8 9 10 11 . . . . 76 77 78 79 80

0 1 2 3 4 5 6 7 8 9 A 4B 4C 4D 4E 4F

Display de 1 Línea ( 1 x 80) :

Area Visible Area no visible

DDRAM Datos del display

Page 4: Programacion PIC en Lenguaje C Parte 2

1 2 3 4 5 6 7 8 9 10 11 . . . . 36 37 38 39 40

0 1 2 3 4 5 6 7 8 9 A 23 24 25 26 27

40 41 42 43 44 45 46 47 48 49 4A 63 64 65 66 67

Display de 2 Líneas ( 2 x 40) :

Area Visible Area no visible

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

0 1 2 3 4 5 6 7 8 9 A B C D E F

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F

50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F

Display de 2 Líneas ( 4 x 16) :

Direcciones de la memoria DDRAM

Page 5: Programacion PIC en Lenguaje C Parte 2

Tabla 1.

CARACTERESGENERADOS

POR EL FABRICANTE

Códigos ASCII

Page 6: Programacion PIC en Lenguaje C Parte 2

El compilador C incluye un fichero (driver ) que permite trabajar con un LCD . El archivo es LCD.c y debe llamarse de la siguiente forma :

#include <lcd.c>

Este archivo dispone de varias funciones ya definidas:

lcd_init();

Es la primera función que debe ser llamada. Y contiene la siguiente secuencia de inicialización:

Bus a 4 bits, dos líneas caracteres 5x8Lcd encendido, Cursor Apagado y sin parpadeoIncrementar cursor, sin desplazamiento .

Lcd_gotoxy(byte x, byte x);

Indica la posición de acceso al LCD. Por ejemplo, (1,1) indica la primera posición de la primer línea y (1,2) indica la primer posición de la segunda línea.

Lcd_getc(byte x. byte x);

Lee el carácter de la posición (x,y).

Lcd_putc(char s);

S es una variable de tipo char . Esta función escribe la variable en la posición correspondiente.

lcd_send_byte( RS, n )

RS: es 0 si lo enviado es para configurar el LCDRS: es 1 si lo enviado es para mostrar un carácter N: es un byte de 8 bits que representa la palabra de configuración o el código ASCII del carácter.

Librería: #include <lcd.c>

Page 7: Programacion PIC en Lenguaje C Parte 2

Códigos de Configuración del LCD

Page 8: Programacion PIC en Lenguaje C Parte 2

Antes de escribir cualquier carácter en el LCD se debe realizar una secuencia de inicialización de Display con una serie

de palabras de control, este procedimiento se puede hacer de dos formas:

forma 1: (enviando cada comando de forma individual):

lcd_send_byte(0,0x02);

lcd_send_byte(0,0x38);

lcd_send_byte(0,0x06);

lcd_send_byte(0,0x0C);

lcd_send_byte(0,0x01);

Donde cada código se tiene una configuración de terminada según como aparece en la diapositiva anterior y

como se explica a continuación:

Palabra de control Código Ejemplo Significado

Display & Cursor Home: 0x02 hubica el cursor en la posición 1 del la primera

linea

Función Set: 0x48 bus de datos a 4 bits, caracteres de 5x7 A dos

líneas

Entry Mode Set 0x06 Incrementar cursor, no desplazar visualización

Display ON/OFF 0x0C Display en ON, cursor en off, no parpadeo

Clear Display 0x01 Borra display y se ubica la linea 1 carácter 1

Comandos de inicializacióndel LCD

Forma 2:Estas 5 instrucciones se pueden remplazarPor la función: Lcd_init();

Page 9: Programacion PIC en Lenguaje C Parte 2

#include <16F877.h>#fuses XT,NOWDT,NOPROTECT,NOLVP#use delay(clock=4000000)#define use_portd_lcd_TRUE //configura LCD para trabajar usando PORTD #include <lcd.c>

void main() {

lcd_send_byte(0, 0x02 ); //secuencia de lcd_send_byte(0, 0x28 ); //inicialización del lcd_send_byte(0, 0x06 ); //LCDlcd_send_byte(0, 0x0C );lcd_send_byte(0, 0x01 );

lcd_send_byte(1, 'A' ); //Envía el carácter Alcd_send_byte(1, 'E‘); //Envía el carácter Alcd_send_byte(1, 'I' ); //Envía el carácter Alcd_send_byte(1, 'O' ); //Envía el carácter A lcd_send_byte(1, 'U' ); //Envía el carácter Awhile(1) { //CICLO INFINITO}

}

Visualización de caracteres usando display de cristal Liquido

El siguiente programa envía los caracteres AEIOU usando las funciones lcd_send_byte() :

Page 10: Programacion PIC en Lenguaje C Parte 2

#include <16F877.h>#fuses XT,NOWDT,NOPROTECT,NOLVP#use delay(clock=4000000)#define use_portd_lcd_TRUE //configura LCD para trabajar usando PORTD #include <lcd.c>

void main() {

lcd_init( ); //secuencia de inicialización

lcd_putc(“AEIOU”); //Envía el carácter Awhile(1)

{ //CICLO INFINITO}

}

Visualización de caracteres usando display de cristal Liquido

El siguiente programa envía los caracteres AEIOU usando las funciones lcd_init() y lcd_putc() :

Page 11: Programacion PIC en Lenguaje C Parte 2

CONTROL DEL LCD USANDO PRINTF

El compilador C ofrece una función mas versátil para trabajar el LCD denominada printf()

Printf(string)Printf(cstring, values…)Printf(fname, cstring, values …)

Donde:

String : es una cadena o arreglo de caracteresvalues: es una lista de variables separadas por comas fname : es una función.

Ejemplo 1:

Int z;z= 0x89; Printf(lcd_putc,“Temperatura: %2x\n\r”,z);

%2x = 2 caracteres tipo entero hexadecimal \n = el cursor va a la posicion (1,2) primera posicion de la segunda linea\r = deja un espacio

Page 12: Programacion PIC en Lenguaje C Parte 2

Ejemplo 2:

Int z;z= 0x89; Printf(lcd_putc,“Temperatura: %2u\n\r”,z);

%2u = 2 caracteres tipo entero decimal \n = el cursor va a la posición (1,2) primera posición de la segunda línea \r = deja un espacio

Ejemplo 3:

float z;z= 0x89; Printf(lcd_putc,“Temp: %.3f\n\r”,z);

%.3f = muestre el valor de tipo float con 3 decimales \n = el cursor va a la posición (1,2) primera posición de la segunda línea \r = deja un espacio

Page 13: Programacion PIC en Lenguaje C Parte 2

Formato %nt

%n es opcional y especifica el numero de caracteres a mostrar:

1-9: para especificar cuantos caracteres se deben mostrar01-09: para especificar la cantidad de ceros a la izquierda1.1 – 9.9: para como flotante

Int z;z= 0x9; Printf(lcd_putc,“Temperatura: %03u\n\r”,z);%03u = muestre el valor de tipo entero con 3 dígitos \n = el cursor va a la posición (1,2) primera posición de la segunda línea \r = deja un espacio

Page 14: Programacion PIC en Lenguaje C Parte 2

Formato %nt

t indica:

c Carácters Cadena o carácteru Entero sin signo d Entero Con signoLu Entero Largo sin signoLd Entero Largo con signox Entero Hexadecimal(minuscula)X Entero Hexadecimal (Mayúscula)Lx Entero Largo Hexadecimal(minuscula)LX Entero Largo Hexadecimal (Mayúscula)f Flotante con truncadog Flotante con redondeoe Flotante con formato exponencial