Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

30/11/2010 #1


Problema con LCD 16x2
Hola a todos, tengo un problema con la implementacion de un LCD, estoy usando un LCD de 16x2 AGENA AA16202



y un PIC16F877A con oscialador de 4MHz, utilizo PICC para la programacion y la libreria LCD.c que viene con el PICC. El problema es que puedo simularlo sin problemas en el Proteus, pero cuando lo implemento tengo que apretar varias veces el MCLR y recien me aparecen ????, por ejemplo al querer mostrar "HOLA", despues de presionar varias veces el MCLR obtengo ????/, cada vez que apreto el MCLR se mueve a la derecha.

No entiendo por que sucede eso..

¿Alguna idea de que puede estar fallando?

Gracias por su ayuda.
30/11/2010 #2


Hola, un poco raro que funcione en tu simulación y no en la implementación específicamente por lo que comentas que debes presionar varias veces el MCLR, puedo equivocarme pero podría ocurrir que estes conectando incorrectamente el MCLR en tu protoboard si es lo que usas, para el funcionamiento normal 16f877a debes conectar el pin 1 del pic a vcc mediante una resistencia limitadora (10k), ahora si deseas trabajar en reset bueno eso lo puedes hacer mediante el pulsador que implementes enviando a gnd ese pin.
Resumiendo, en mi humilde opinión, tal vez tu programa no arranque porque tienes activo el MCLR el pic(esto es que ese pin este conectado a gnd), revisa tu conexión puede que sea ese el problema.
30/11/2010 #3

Avatar de kiws

lo mas probable es que te falte poner la resistencia del MCLR a vcc pero también deberías ver la programación a lo mejor lo despliegas muy rápido o conectaste mal uno de los pines de control (RW-R-E).
01/12/2010 #4


Hola, gracias por sus respuestas, el problema se debia a que el LCD estaba fallado y la frecuencia del programa era distinta a la de mi cristal.
15/05/2013 #5


Problema pic 16F877A
tengo el mismo problema que muchos de aqui, que al encender el circuito solo muestra la fila de arriba recuadros, ya varie el contraste, lo unico que sucede es que los recuados se hacen luminosos o muy obscuros al grado de desaparecer, por alli lei que alguien lo soluciono cambiando el valor de LCD_Type = 1 por el valor LCD_Type = 2 yo alli tengo 0, igual tendria que ponerle el valor 2 ? y por que, el programa esta hecho en basic, espero me ayuden y muchas gracias
15/05/2013 #6
Moderador

Avatar de D@rkbytes

Adjunta tu programa y esquema para poder determinar en donde se encuentra el problema.
16/05/2013 #7


ahi t mando un ejemplo echo en micro basic
Archivos Adjuntos
Tipo de Archivo: rar lcd 2x16.rar (50,2 KB (Kilobytes), 143 visitas)
17/05/2013 #8


D@rkbytes dijo: Ver Mensaje
Adjunta tu programa y esquema para poder determinar en donde se encuentra el problema.

aqui dejo el programa y la imagen del circuito, quite lo demas, solo deje el display y el pic que desmonte todo y se supone que con el pic debe mostrar almenos el mensaje de Introducir clave y no lo hace, no se si el programa o las conecciones esten mal, aunque en la simulacon si funciona

El display que uso dice en la parte de abajo 1602A, dice que usa un controlador KS0066U

franklin jhonny dijo: Ver Mensaje
ahi t mando un ejemplo echo en micro basic
En este ejemplo pones un f16877 y el mio es un f16877A

al cargarlo en el pic dice...

El archivo Hex super la capacidad Maxima.
Imágenes Adjuntas
Tipo de Archivo: jpg pic16F.jpg (240,1 KB (Kilobytes), 84 visitas)
Archivos Adjuntos
Tipo de Archivo: rar CERRADURA ELECTRONICA.rar (2,3 KB (Kilobytes), 46 visitas)
17/05/2013 #9
Moderador

Avatar de D@rkbytes

Saludos.
Lo que tienes que hacer es, probar la pantalla con un programa sencillo, el clásico "Hola Mundo"
.- Verificar bien las conexiones de alimentación y reset del PIC.
.- Cerciórate que el cristal sea de la frecuencia declarada en el programa.
.- Prueba quitando los capacitores, algunos cristales los tienen internos.
.- Destina un pin para poner un LED testigo, hazlo parpadear para determinar que el oscilador funcione.

Si sigue sin funcionar, intenta cambiando de puerto, para comprobar que no sea una falla del PIC.

Nota: El ejemplo de franklin jhonny es para un PIC16F887, no para un PIC16F877

Suerte.
17/05/2013 #10


D@rkbytes dijo: Ver Mensaje
Saludos.
Lo que tienes que hacer es, probar la pantalla con un programa sencillo, el clásico "Hola Mundo"
.- Verificar bien las conexiones de alimentación y reset del PIC.
.- Cerciórate que el cristal sea de la frecuencia declarada en el programa.
.- Prueba quitando los capacitores, algunos cristales los tienen internos.
.- Destina un pin para poner un LED testigo, hazlo parpadear para determinar que el oscilador funcione.

Si sigue sin funcionar, intenta cambiando de puerto, para comprobar que no sea una falla del PIC.

Nota: El ejemplo de franklin jhonny es para un PIC16F887, no para un PIC16F877

Suerte.
pues las conecciones ya estan verificadas
tambien ya quite los capacitores
tiene declarado el valor del cristal que es de 10

Aqui esta el mensaje de introducir la clave unicamente

Código:
Device=16F877A

 Xtal=10

Reminders = FALSE
     Config HS_OSC, PWRTE_ON, CPD_OFF, WDT_OFF, BODEN_OFF, LVP_OFF
Reminders = TRUE


    LCD_DTPin = PORTD.4
    LCD_RSPin = PORTD.2
    LCD_ENPin = PORTD.3
    LCD_Interface = 4
    LCD_Lines = 2
    LCD_Type = 0

      
        


                                 ' por flanco de subida.

All_Digital = TRUE               ' Todas las entradas y salidas son digitales.
                                                                              




TRISA  = %00000000
TRISB  = %11111111               ' Puerto A y B todo entradas.
TRISC  = %00000000               ' Puerto C como salida para visualizar a través de los LED.
TRISD=0
 OPTION_REG.7=0  
 PORTC=255        
inicializa:
 
   
   
    
    Cls
     Print At 1,1,"Teclee Clave:"
se uso Proton ide
18/05/2013 #11
Moderador

Avatar de D@rkbytes

El problema no es por código, te dije que cambiaras de puerto para probar.

Prueba con este programa...
Código:
; Definir el PIC a utilizar
Device 16F877A
Reminders = 0
; Definir los fuses que usaremos en la palabra de configuración
Config HS_OSC,PWRTE_ON,WDTE_OFF,LVP_OFF,BOREN_OFF
Reminders = 1
; Establecer que trabajaremos con 10MHz
Xtal = 10MHz

; Configuración de los pines del LCD
Declare LCD_Type    Alpha       ; Alfanumérico
Declare LCD_DTPin   PORTB.4     ; Bus de datos de RB4 a RB7
Declare LCD_RSPin   PORTB.2     ; Pin RS en RB2
Declare LCD_ENPin   PORTB.3     ; Pin E en RB3
Declare LCD_Interface   4       ; Modo 4 Bits
Declare LCD_Lines       2       ; Pantalla de dos líneas

MainStart:
    Cls                         ; Limpiar e inicializar la pantalla LCD
    Print At 1,1,"16F877A LCD 16x2" ; Escribir en la primer línea
    Print At 2,4,"Hola Mundo"       ; Escribir en la segunda línea
    
MainProgram:
    Toggle PORTD.1              ; Parpadear un LED por el pin 20 cada segundo
    DelayMS 1000
    GoTo MainProgram
    
    End
Suerte.
18/05/2013 #12


asi es tu programa funciona,ya lo puse y esta de 10, crees que me podrias ayudar a acomplar mi codigo completo con este tuyo ??
19/05/2013 #13
Moderador

Avatar de D@rkbytes

carl69 dijo: Ver Mensaje
asi es tu programa funciona,ya lo puse y esta de 10, crees que me podrias ayudar a acomplar mi codigo completo con este tuyo ??
Lo que tienes que hacer es cambiar de puerto, obviamente tanto en código cómo en diseño.
Por ahora no tengo el PIC16F877A para hacer pruebas con Proton.
Sin embargo tuve problemas con Proton y PICBasic al tratar de usar la pantalla por el puerto D.
Incluso tampoco lo pude hacer funcionar en un PIC18F4550 por el puerto D, ni usando LATD.

Si quieres, y así salimos de dudas los dos, puedes probar con un ejemplo en PICC (PCWHD Compiler)
En el compilador que menciono, al seleccionar el tipo de PIC, hace el cambio de puertos.
Y al seleccionar un 16F877A, direcciona los pines de control y datos, al puerto D.

Adjunto el ejemplo por si lo quieres probar, y nos cuentas si funciona por el puerto D.
Por lo mientras, veré si puedo hacer funcionar en PICC, o ensamblador, el LCD por el puerto D, en un 18F4550.

Suerte.
Imágenes Adjuntas
Tipo de Archivo: jpg LCD 16x2 PORTD (SCH).jpg (97,3 KB (Kilobytes), 42 visitas)
Archivos Adjuntos
Tipo de Archivo: rar 16F877A LCD 16x2 Test PCWHD.rar (105,0 KB (Kilobytes), 45 visitas)
19/05/2013 #14


mi teclado lo tenia conectado en los pines RB4 a RB7 y en Rc0 a RC3 como se cambio el display a los pines RB4 a RB7 a que pines puedo mandar mi display ? se podra usar RB0 a RB3 ?
19/05/2013 #15


Si tu teclado utiliza interrupciones por puerto B, no puedes ponerlo en el RB0-RB3, ya que esos pines no tienen interrupciones por cambio de estado.

Si no es el caso, si puedes utilizar los pines mencionados, pero recorda ponerlo en el programa.

PD: No se del lenguaje que usas...
19/05/2013 #16
Moderador

Avatar de D@rkbytes

carl69 dijo: Ver Mensaje
mi teclado lo tenia conectado en los pines RB4 a RB7 y en Rc0 a RC3 como se cambio el display a los pines RB4 a RB7 a que pines puedo mandar mi display ? se podra usar RB0 a RB3 ?
Sube tu proyecto completo para ver la forma de re acomodar los pines.

PD. No logré que funcionara la pantalla con el 18F4550 por el puerto D en PICC.
Probé de todo y nada, ya me cansé de leer la hoja de datos y no encontré nada extraño.
Algo debo estar pasando por alto, pero ya no se me ocurre que pueda ser.
19/05/2013 #17


D@rkbytes dijo: Ver Mensaje
PD. No logré que funcionara la pantalla con el 18F4550 por el puerto D en PICC.
Probé de todo y nada, ya me cansé de leer la hoja de datos y no encontré nada extraño.
Algo debo estar pasando por alto, pero ya no se me ocurre que pueda ser.
Subí el código, y me fijo qué puedo encontrar... De última lo simulo en ISIS, porque solo tengo el 2550...
19/05/2013 #18


D@rkbytes dijo: Ver Mensaje
Sube tu proyecto completo para ver la forma de re acomodar los pines.

PD. No logré que funcionara la pantalla con el 18F4550 por el puerto D en PICC.
Probé de todo y nada, ya me cansé de leer la hoja de datos y no encontré nada extraño.
Algo debo estar pasando por alto, pero ya no se me ocurre que pueda ser.
listo, aqui esta
Archivos Adjuntos
Tipo de Archivo: rar CERADURA.rar (42,4 KB (Kilobytes), 23 visitas)
19/05/2013 #19
Moderador

Avatar de D@rkbytes

DJ T3 dijo: Ver Mensaje
Subí el código, y me fijo qué puedo encontrar... De última lo simulo en ISIS, porque solo tengo el 2550...
Gracias por el interés.
Quiero hacer unos comentarios...
.- El problema es al tratar de usar la pantalla por el puerto D, por el puerto B funciona correctamente.
.- He configurado algunas cosas... Fuses, registros (SPPCON, SPPCFG)
.- El puerto D es un puerto paralelo (Streaming Parallel Port) sólo disponible en los PIC de 40/44 pines.
.- En la simulación funciona sin problemas, físicamente la pantalla muestra los clásicos cuadros negros. (Primer línea)

Adjunto el programa básico, sólo escribe en la pantalla, y hace parpadear un LED testigo (pin 40)

Nota: Utilizo el oscilador interno a 8MHz.

Saludos.
Archivos Adjuntos
Tipo de Archivo: rar 18F4550 LCD 16x2 PORTD.rar (39,2 KB (Kilobytes), 37 visitas)
19/05/2013 #20
Moderador

Avatar de D@rkbytes

carl69 dijo: Ver Mensaje
listo, aqui esta
OK.
Disculpas por no haber dado respuesta antes, estuve algo ocupado.

Hice algunas modificaciones tanto al código cómo al diseño para adaptar la pantalla al puerto C.
Ésto con el motivo de utilizar el puerto B para el teclado, y poder usar las resistencias pull-up internas.

Pruébalo con las nuevas modificaciones y nos comentas el resultado.

Suerte.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.