LCD Con Pic16f84 y CCS

7
PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c... 1 de 7 3/5/2014 9:51 AM

Transcript of LCD Con Pic16f84 y CCS

Page 1: LCD Con Pic16f84 y CCS

PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c...

1 de 7 3/5/2014 9:51 AM

Page 2: LCD Con Pic16f84 y CCS

crear el código, compilarlo y grabarlo en el PIC para que este lo ejecute, nosotros usaremos

CCS C .

La rutina que hace esto sería esta:

#include <16f84a.h>

#use delay (clock=4000000)

#define E Pin_A0

#define RS Pin_A1

/* Declaro las funciones antes de utilizarlas en main()

para que sean reconocidas */

void print(int c);

void Enviar(int8 Dato, int1 Comando);

void Iniciar_LCD(void);

//Comienzo del programa

void main(void){

Iniciar_LCD(); // Inicio el Modulo

print ("PICROBOT"); // Escribo PICROBOT en la pantalla

}

//Funciones

void print(int8 c){

enviar (c,1); // Envio caracter c con RS a 1 (dato)

// CCS C se encarga de enviar uno a uno

} // los caracteres contenidos en c

void Enviar(int8 Dato, int1 Comando){

output_low(E); // E en bajo

output_b(Dato); // Cargo el puerto B con Dato

output_bit(RS,comando); // Pongo RS en 0 o 1 dependiendo si es

// un comando o dato lo que estoy

// enviando

output_high(E); // E en alto

delay_us(1); // Espero a estabilizar tensión

output_low(E); // E en bajo

delay_us(40); // Espero 40 uS a que el LCD trabaje

//

if (Dato < 4) delay_us(1600); // Si envio un Home o un Clear display

// espero otros 1600 uSegundos que

// sumado a los 40 uS anteriores hacen

} // 1.64 mS que es lo que tardan estas

// operaciones

void Iniciar_LCD(void){ //

delay_ms(15); // Espero a que se estabilice

// la tensión.

enviar(0b00000001,0); // Envio un CLEAR DISPLAY

// (Borra la pantalla)

delay_ms(5); // Espero 5 mS

enviar(0b00111000,0); // Envio un FUNCTION SET para bus de 8

// bits, 2 lineas y caracteres de 5x7

// pixeles.

enviar(0b00001100,0); // Envio un DISPLAY ON/OFF CONTROL

// con pantalla encendida, Cursor

// apagado y si parpadear.

enviar(0b00000110,0); // Envio un ENTRY MODE SET con

// Incrementa cursor y desplaza cursor

}

Este programa introducido en el PIC conectado al circuito anterior hace que nuestro módulo

Lo mas visitado:

Reguladores de voltaje 7805

Puente H

Control de un módulo LCD con PIC y CCS C

Matriz de 8x8 LED controlada con 2 shiftregister y PIC

Generar sonido con PIC

Fuente de alimentación y cargador de baterías.

MAX232, conectando un PIC al ordenador

Conexión y funciones de un módulo LCD

Librería para el manejo de un módulo LCD enCCS C

SHIFT REGISTER ¿que son y cómo se usan?

PIC16F84A

PIC16F87 - 88

PIC16F627A - 628A - 648A

PIC16F873A - 874A - 876A - 877A

PIC16F882 - 883 - 884 - 886 - 887

74HC14

74HC165

74HC595

74HC4040

NE555

MAX232

KA78XX

KA79XX

LM317

BD675, BD677, BD679, BD681

BD676, BD678, BD680, BD682

2N2222

2N3904

BC546, BC547, BC548

1N4001-7

1N4148

Banda 1: Banda 2: Banda 3:

PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c...

2 de 7 3/5/2014 9:51 AM

Page 3: LCD Con Pic16f84 y CCS

PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c...

3 de 7 3/5/2014 9:51 AM

Page 4: LCD Con Pic16f84 y CCS

PicRobot 25/10/10

Lo acabo de comprobar y el ejemplo funciona, lo único que encontré es que el diagrama estáexplicado con un PIC16F84A y el ejemplo en CCS C está escrito para un PIC16F876A.Debes cambiar la primera línea donde dice:

#include <16f876a.h>

por:

#include <16f84a.h>

o reemplazarla por el PIC que utilices.

Saludos.

Responder

Anónimo 17/12/10

simon lo programe en assambly para un pic16f877 y funciona al 100, valiosa informacion, primeraves que trabajo con lcd, saludos!!!!!

Responder

Anónimo 9/3/11

HOLA AMIGO, LE COMENTO QUE CUANDO LE VOY CAMBIAR DONDE DICE #include <16f876a.h> por:

#include <16f84a.h> ME DA ERROR A LA COMPILACION,O SINO ME PODRIAS REGALAR EL ESQUEMATICO PARA PODERLO GRABAR CON EL PIC 16F876A.

GRACIAS JOSE LUISDESDE BOGOTA COLOMBIA

Responder

PicRobot 10/3/11

Hola, aparte de esa línea, prueba cambiando las líneas:

#define E Pin_C0#define RS Pin_C1

por

#define E Pin_A0#define RS Pin_A1

El problema se debe a que el ejempo está escrito para el PIC16F876A y el esquema está hecho parael PIC16F84A y este último no tiene implementado el Puerto C.

De todos modos también corrijo lo errores del ejemplo. Gracias por colaborar.

Saludos.

Responder

Anónimo 14/3/11

HOLA TE COMENTO, YA EL PROGRAMA NO GENERA ERROR, PERO AL SIMULARLO, NO ME APARACENADA EN EL LCD.

JOSE LUIS

Responder

Anónimo 14/3/11

HOLA AMIGO, COMO SE PUEDE HACER QUE EL MENSAJE SE DESPLACE DE DERECHA A IZQUIERDA,IZQUIERDA A DERECHA.

JOSE LUIS

Responder

http://picrobot.blogspot.com/

© 2007-2012 GAR

Todas las marcas y/o páginas mencionadas en este sitio web

pertenecen a sus respectivos dueños.

ATENCION:

Todos los diseños mostrados en este sitio han sido probados.

No obstante queda bajo la responsabilidad del lector el uso

adecuado de los mismos y ni este sitio ni su o sus autores

tienen responsabilidad por los daños materiales o civiles que

estos puedan provocar.

Página en construcción,

diseñada para una

resolución de pantalla de

1024x768px.

La fuente de este blog

ha sido modificada para

una mejor comprensión

en Mozilla Firefox.

Cualquier consulta,

crítica o comentario

serán bienvenidos,

pueden comentar en

cualquier entrada o

enviar un correo

electrónico a

[email protected].

Trataré de responderlo a

la brevedad.

Muchas gracias por su

visita.

PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c...

4 de 7 3/5/2014 9:51 AM

Page 5: LCD Con Pic16f84 y CCS

PicRobot 14/3/11

En la entrada http://picrobot.blogspot.com/2008/11/display-lcd-cmo-se-controlan.html estáexplicado el comando CURSOR OR DIPLAY SHIFT.

Debes implementarlo con el bit D3 en 1 (Mover display) y el bit D2 a 0 para mover el display a laderecha o en 1 para moverlo a la izquierda.

Supongo que has solucionado el problema por el cual no aparecía nada en pantalla...

Saludos.

Responder

Anónimo 14/3/11

hola amigo, le entendi su mensaje, pero en que parte del programa va esa funcion de mover elmesnaje, de izquierda a derecha viceversa, y lo del mensaje ya lo solucione, era que no habiacolocado la resistencia de 1k a positivo, por eso no me aparecia.

y como se hace para colocar mas caracteres, por que tu en tu programa solo admite 8 caracteres.

jose luis

Responder

PicRobot 15/3/11

Envíame un mail a [email protected] y te aclararé las dudas por ese medio. Para no cargar demensajes el post.

Saludos.

Responder

Anónimo 11/4/11

hola por favor me interesa saber si si "print" y "enviar" son funciones predefinidas porquenormalmente solemos utilizar el "printf" y de "enviar" no se ni de donde sale.

UN SALUDO

Responder

PicRobot 11/4/11

No, ENVIAR se encarga de gestionar los comandos o datos a "enviar" al display. PRINT "envía" unaserie de ENVIAR al display, son funciones creadas.

ENVIAR "envia" un caracter; PRINT("HOLA");, es como hacer:

Enviar("H", 1);Enviar("O", 1);Enviar("L", 1);Enviar("A", 1);

printf envía datos preformateados a una salida que en este caso podría ser print, es una "función"del lenguaje.

Para usar printf aquí deberías usar:

printf(print,"texto formateado",...);

con la sintaxis de printf, en la ayuda de CCS C encontrarás todo lo necesario para continuar.

saludos.

Responder

Anónimo 1/7/11

Una pregunta, que software utilizas para programar ya que programe en MICKROC pero hay algunasinstrucciones que no encuentro como int8, una pregunta más que modelo de LCD utiliza ya que yoprobe con un LCD SC162A3 y pues no puedo hacer ke despliege caracteres

Responder

PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c...

5 de 7 3/5/2014 9:51 AM

Page 6: LCD Con Pic16f84 y CCS

PicRobot 2/7/11

Te contesté en la otra entrada, donde haz hecho la misma pregunta.

Saludos.

Responder

Anónimo 11/10/12

hola!alguien me ayude! quiero controlar una lcd lm016l con un pic16f84a necesito el codigo heprobado algunos pero no me ha funcionadoalguien puede ayudarme!!!!

Responder

PicRobot 18/10/12

http://picrobot.blogspot.com.es/2010/03/lcdgar.htmlEn esta entrada de este mismo blog tienes mi librería para controlar ese tipo de displays con casicualquier microcontrolador.Échale un vistazo, la puedes modificar a tu gusto aunque no haría falta.Solo tienes que configurarla para que funcione co ese microcontrolador.

Saludos.

Responder

Josafat Villa 25/10/12

HOLA UNA GRANDIZIMA DUDA COMO PODRIA ROTAR EL TEXTO YA SEA A LA DERECHA O A LAIZQUIERDA?

Responder

PicRobot 26/10/12

http://picrobot.blogspot.com.es/2008/11/display-lcd-cmo-se-controlan.html

En esa entrada tienes todos los comandos que soporta el display.

Con la librería podrías usar el comando enviar(), con 5 o 7 como parámetro:

enviar(5,0);yenviar(7,0);

Para hacer que el display se mueva a la derecha o a la izquierda.

Examina bien la entrada para aprender mas comandos, de todos modos el comando enviar();comunica directamente al display.

Saludos.

Responder

daniel caballero 3/11/12

hola me podrias sacar una duda, que diferencia hay entre init_LCD(); y iniciar_lcd()

Responder

PicRobot 3/11/12

Ninguna, simplemente que en este ejemplo llamé a la función que inicia el display de ese modo,podría haberla llamado init_LCD(); o de cualquier otra forma.

Saludos.

Responder

mayde escribano 1/12/12

hice el esquema en proteus pero solo enciende la pantalla y no aparece nada si me podrías ayudarel porquela causa del error

PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c...

6 de 7 3/5/2014 9:51 AM

Page 7: LCD Con Pic16f84 y CCS

PICs, Electrónica y Robótica: Control de un módulo LCD con PIC y CCS C http://picrobot.blogspot.mx/2008/12/controlar-de-un-lcd-con-pic-y-ccs-c...

7 de 7 3/5/2014 9:51 AM