Mostrar mensajes en LCD usando C18

Que ta l, estoy aprendiendo a programar el poderoso pic 18f4550, pero tengo dudas en como hacer para mostrar msj en la pantalla lcd usando el c18, el caso es que se que el c18 ya tiene una libreria que contiene la configuraciones para usar la pantalla, pero no se y no entiendo, que pines son los que se utilizan, sabiendo que deben haber unos para el envio de datos y otro para el control de la pantalla, y otra duda es si encaso de que quiero utilizar otros pines que no son los que trae establecidos ya, como hacerlo que debo cambiar. esa es mi duda ya se manejar el pic mas muchas cosas pero esta parte todavia no la he comprendido por mi mismo, asi que si hayy alguien que me podria ayudar explicarme detalladamente como hacerlo se lo agradeceria mucho, espero sus respuestas, pueden responderme por aqui. o enviarme un correo.........
 
Hola , te recomiendo bajes unos archivos de la pagina de la microchip donde están las librerias para LCD (MPLAB - c18 libraries), y otro que indica como crear el proyecto (MPlab c18 getting started). Bueno no tiene nada del otro mundo, lo único que tienes q hacer es utilizar las librerias, además una vez creado tu proyecto debes agregar además del archivo. C en el cual está tu programa, los siguientes:

busyXLCD.c
openXLCD.c
Readaddr.c
readdata.c
setcgram.c
writdata.c

estos estan ubicados en la ruta donde guardaste tu programa MCC18, me imagino que en archivos de programa, en mi caso está en la ruta

archivos de programa/MCC18/src/extended/pmc/XLCD

también te adjunto un programita que tengo en donde muestro dos mensajes en el LCD

para que te guies como usar las rutinas para LCD.. espero te sea de ayuda ..

saludos
 

Adjuntos

  • lcd_187.txt
    4 KB · Visitas: 1,069
pana tambien te recomiendo entres a los foros de la microchip, que hablan mucho sobre este tema!, para mi me fue de mucha ayuda mientras andaba como tu, intentando mostrar mensajes con el c18
 
Hola que tal, veo que este post es antiguo, pero el tema que iba a postear es el mismo :)

La diferencia es que ya he logrado conectar el LCD y funciona, pero con el puerto por default del C18, es decir el puerto B, pero como también estoy utilizando el módulo I2C del PIC (que está en RB0 y RB1) quiero cambiar de puerto. Estoy intentando colocarlo en el PuertoD pero no se porque no me lo permite.

He modificado las definiciones de los pines y aún así sigue mandando las señales por el puertoB

#define DATA_PORT PORTD
#define TRIS_DATA_PORT DDRD

#define E_PIN PORTDbits.RD0
#define TRIS_E DDRDbits.RD0
#define RW_PIN PORTDbits.RD1
#define TRIS_RW DDRDbtis.RD1
#define RS_PIN PORTDbits.RD2
#define TRIS_RS DDRDbits.RD2

Me pregunto si alguien ha utilizado el LCD con la libreríz XLCD del C18 en un puerto distinto al puertoB?

De antemano muchas gracias.
 
Muchas gracias cracking_12hmn por tu aporte, estoy revisando el blog y está muy interesante, afortunadamente ya he resuelto el problema con el LCD,

de nuevo, muchas gracias

Saludos.
 
por nada mr.brett y que bueno que ya resolviste tu problema, ahora yo tengo otro problema, lo que pasa es que tengo un codigo lcd para desplegar información por el puerto b del microcontrolador pic18f4550, ya ves que el modulo lcd tiene 2 lineas de 16 caracteres, y ps solamente me muestra 10 lineas, y no se porque, ya intente cambiar los tipos de datos, la posicion, etc, y me hace lo mismo, te muestro los codigos q tengo, utilizo el compilador mplab c18.

adjunto los archivos necesarios para q el programa funcione, espero q me puedan ayudar, y de antemano gracias.
 

Adjuntos

  • lcd_617.c
    1.4 KB · Visitas: 148
  • lcd_18_141.c
    2.5 KB · Visitas: 199
  • lcd_18_149.h
    710 bytes · Visitas: 224
que tal cracking?

Primero tengo una duda de como haces tus includes, veo que en el lcd_18.h estás escribiendo #include "lcd_18.c", según yo tienes que ponder #include "lcd_18.h" en el archivo lcd_18.c,

Esa librería de donde la sacaste?
Estás escribiendo en el LCD en modo de puerto completo? Porque no utilizas la librería que viene en el C18?

Te adjunto una librería para manejar el LCD, está chida porque todo viene incluido en un sólo archivo H,


Saludos, me avisas como te fue
 

Adjuntos

  • lcd_980.h
    30.6 KB · Visitas: 352
hola mr.brett, pues mira, esta libreria nos la paso el maestro, me imagino que es una modificacion de la libreria de lcd de c18, segun el profesor nos habia comentado que las librerias lcd de c18 no funcionaban por algunos retardos de tiempo que incluian que habia que cambiar, y en fin, la verdad no me he puesto a investigar como funcionan las librerias de c18, ahora las veo y te cuento que tal. con respecto al la libreria lcd_18.h esta libreria conntiene los llamados de las funciones para inicializar el lcd, imprimir cadenas desde la rom, imprimir caracteres ascci, etc.. pero solamente las llama, y para eso incluye el archivo lcd_18.c que es en donde estan dichos codigos de las funciones.
otra cosa, este problema que tengo no es problema ahora si que de los codigos, porque en el laboratorio, use un lcd diferente y si imprime en los 16 espacios del lcd, cosa que con el lcd que yo tengo no lo hace, , me imagino que va a ser problema del driver hitachi del lcd, pero ahi si no se como puedo repararlo, apenas estoy cursando la materia de microcontroladores y no se mucho del tema.
bueno, de antemano gracias por la información, e intentare hacer funcionar el lcd con las librerias del c18.
saludos

ah, el lcd lo estoy usando en modo de 4 bits, usando los bits rb0,rb1,rb2,rb3 a los pines d11..d14 del lcd
 
Que tal cracking, tu profesor tiene razón en las librerías de c18 es necesario modificar los tiempos de delay, pero si funcionana. Te anexo un proyecto funcionanado. Sólo tiene que modificar el #define CLOCK_FREQ a la velocidad de tu crystal para que funcione.

Saludos y suerte.

Mr.Brett
 

Adjuntos

  • lcd_project_290.rar
    49.1 KB · Visitas: 779
Hola, lamento revivir el tema pero tengo un problema. tambien estoy tratando de hacer funcionar la rutina xlcd en el puerto d, ya que usare las interrupciones del puerto b, y tampoco puedo usar el puerto c porque usare spi. ya intente con la pagina de encaminandoc, pero sigue sin funcionar. podria alguien ayudarme y detallarme los pasos a seguir?
gracias.
 
Que tal cracking, tu profesor tiene razón en las librerías de c18 es necesario modificar los tiempos de delay, pero si funcionana. Te anexo un proyecto funcionanado. Sólo tiene que modificar el #define CLOCK_FREQ a la velocidad de tu crystal para que funcione.

Saludos y suerte.

Mr.Brett

Obrigado Mr. Brett, seu projeto de LCD resolveu os meus problemas, me ajudou muito. Valeu, abço.
 
por nada mr.brett y que bueno que ya resolviste tu problema, ahora yo tengo otro problema, lo que pasa es que tengo un codigo lcd para desplegar información por el puerto b del microcontrolador pic18f4550, ya ves que el modulo lcd tiene 2 lineas de 16 caracteres, y ps solamente me muestra 10 lineas, y no se porque, ya intente cambiar los tipos de datos, la posicion, etc, y me hace lo mismo, te muestro los codigos q tengo, utilizo el compilador mplab c18.

adjunto los archivos necesarios para q el programa funcione, espero q me puedan ayudar, y de antemano gracias.


hola, que pena molestar, pero queria saber si saben como desplegar informacion en la LCD queno quepa en una lcd de 16 caracteres, el problema es q necesito mostrar una palabra de mas de 16 caracteres en la lcd que recibo desde netbeans pero sinceramente no he podido lograr que el mensaje se vaya corriendo y permita ver todo el mensaje
 
necesito un ejemplo para hacer aparecer un mensaje en el lcd pero con c30.

como se utiliza la libreria xlcd en c30, necesito ayuda
 
Última edición:
Hola a todos,

estoy intentando hacer funcionar un LCD powertip pc1602f b 2x16 con PIC18F45K20, uso MPLAB C18 Compiler.
he descargado ya dos códigos de ejemplo y configurado pero en los dos tengo el mismo error.
En cada uno de ellos configuro las salidas de puerto como los conecto.
El LCD no muestra nada, aunque si muevo la resistencia variable de 10k que he puesto a la entrada de ajuste contraste aparecen cuadros negros.
Os explico: lo alimento a 5v, he puesto resistencia de 50ohms entre 15-2 (A-VDD). DB0:DB3 a masa y DB4:DB7 al pic. RS-RW-E al pic en puestro diferende del de los datos.
Esta placa en el lateral tiene preprarado para soldar la resistencia R8 y R9 que no vienen y no he puesto por no saber para que son, tambien al lado de ellas hay unos puntos de soldar que ponen A y K. Puede ser que no se vea por no haber puesto estas resistencias? La pantalla no se ilumina, creo que es por esto del A-K...
Otra duda, cuando el programa de microchip que uso para esta rutina hace refernecia al nibble bajo, se refiere solo al dato o el del puerto, yo lo tengo configurado nibble bajo y uso puerto RC0:RC3 aunque despues en el LCD va a 7:4.
Muchas gracias por cualquier comentario que me ayude a salir de este encayo.

pd: Datasheet: http://www.google.es/url?sa=t&rct=j...7oaJsE80Pi-U91nnA&sig2=vbRcdlycoLnCor4xPfKedQ
 
Última edición:
estoy intentando hacer funcionar un LCD powertip pc1602f b 2x16 con PIC18F45K20
he descargado ya dos códigos de ejemplo y configurado pero en los dos tengo el mismo error
Prueba con este otro ejemplo, quizás el tercero sea el que funcione.
Como no mencionas el lenguaje de programación, lo escribí en PICC de CCS.
Conecta la pantalla tal cual y se muestra en el diagrama adjunto.

Nota:
Para determinar que tipo de controlador usa esa pantalla, descargue otra hoja de datos (PC 1602-H)
Y menciona que usa el controlador Hitachi HD44780.
Así que posiblemente sea compatible con el ejemplo que adjunto.

Suerte.
 

Adjuntos

  • 18F45K20 LCD 16x2.rar
    17 KB · Visitas: 72
  • LCD_16x2_18F45K20.jpg
    LCD_16x2_18F45K20.jpg
    229 KB · Visitas: 51
Última edición:
Hola Darkbytes,

gracias, uso MPLAB C18 Compiler. Podrías convertir tu código a este compilador?
Con tu datasheet ya veo mi pregunta sobre los pines A y K, que solo son para el backlight, de momento los tengo sin conectar. Aunque no veo que valores de R8 o R9 usar, supongo que pondré un variable y buscaré el valor.
Gracias.
 
uso MPLAB C18 Compiler.
OK. Ya vi que editaste tu primer mensaje para especificar el lenguaje. (y)
Podrías convertir tu código a este compilador?
No programo en C18, pero en el ejemplo que subí viene el archivo *.hex para que hagas pruebas.

Ahora que mencionas el lenguaje de programación, muevo aquí los mensajes.
En este tema hay mas ejemplos.

Sobre las resistencias R8 y R9, puedes usar solo una. Yo he usado de 220Ω solo para reducir el brillo.

Suerte.
 
Hola Darbytes,

puse la R 220ohms y la pantalla no se ilumina, debería, verdad?
tambien hize la prueba de dar valor al pin de Enable, por si era eso y nada.
Como puedo saber que el LCD funciona? era nuevo. Tocanda la variable de contraste si que se nota que aparecen o desaparecen los recuadros negros.

Adjunto el proyecto para usar el lcd, es el de microchip pero con los puertos modificados para datos C0-C3 y control B1,B2,B3. A ver si alguien quiere darle un vistazo para ver si hay algún error. Gracias
 

Adjuntos

  • LCD PIC18F45K20.rar
    41.3 KB · Visitas: 16
Última edición:
Atrás
Arriba