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
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
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
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
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
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
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
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
Top Related