TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Kitiara en 29 de Mayo de 2006, 12:15:17

Título: PIC 16F876 con LCD
Publicado por: Kitiara en 29 de Mayo de 2006, 12:15:17
Hola, a ver si podeis echarme una mano porque ya no se que narices hacer...
En fin, tengo ´que conectar un pic 16F876 a una LCD, el programa esta simulado en PROTEUS, donde va a las mil maravillas, el problema surge en el montaje físico de este. He conectado la LCD como indicabais en otros posts pero nada de nada, ya no se en que narices puede pender... :?
Utilizo una lcd Hitachi 44780 con los 8 bits y los puertos B y C.
Gracias
Título: Re: PIC 16F876 con LCD
Publicado por: maunix en 29 de Mayo de 2006, 14:59:47
Hola, a ver si podeis echarme una mano porque ya no se que narices hacer...
En fin, tengo ´que conectar un pic 16F876 a una LCD, el programa esta simulado en PROTEUS, donde va a las mil maravillas, el problema surge en el montaje físico de este. He conectado la LCD como indicabais en otros posts pero nada de nada, ya no se en que narices puede pender... :?
Utilizo una lcd Hitachi 44780 con los 8 bits y los puertos B y C.
Gracias

1. El display no hace nada nunca? El display ni siquiera enciende?

2. Has esperado el tiempo de inicializacion necesario? digamos, no se, algunos 100 o 200mseg antes de mandarle algo? Esto sirve para que la electronica del display se inicialice correctamente.

3. Puedes revisar y/o postear el pinout que has utilizado?

4. El display funciona en otro circuito?

Saludos
Título: Re: PIC 16F876 con LCD
Publicado por: M.C_Barquin en 29 de Mayo de 2006, 15:34:17
Describe como hiciste todas las conexiones.Acuerdate que RS o E deben ir al menos uno de ellos al puerto donde tienes conectado los datos DB0-DB7.Saludos.
Título: Re: PIC 16F876 con LCD
Publicado por: jfh900 en 29 de Mayo de 2006, 15:37:28
Citar
Acuerdate que RS o E deben ir al menos uno de ellos al puerto donde tienes conectado los datos DB0-DB7

Me lo puedes explicar por favor.

Un saludo.
Título: Re: PIC 16F876 con LCD
Publicado por: Kitiara en 29 de Mayo de 2006, 16:31:24
Bueno, en primer lugar gracias por vuestras prontas respuestas, y en segundo os comento...
Como m deciais es necesario darle tiempo para k se inicialice,asi k puse un delay de unos ms. La conexión k he realizado es de todos los pines de datos D0 a D7 al puerto B, mientras que RS, R/W y E los he conectado a los tres primeros pines del puerto C.
La lcd si k funciona o por lo menos eso creo, la backlight si k se enciende y en ocasiones muestra cuadritos negros en las posiciones del cursor, pero no se mantienen, sale a veces...
En fin si teneis alguna ligera idea...  uso la libreria lcd2.c
Título: Re: PIC 16F876 con LCD
Publicado por: jfh900 en 29 de Mayo de 2006, 16:49:10
Podrias poner el código y la libreria para echarle un vistazo, Tambien ayudaria pusieras el esquema electrico tal y como lo tienes montado.

Un saludo.
Título: Re: PIC 16F876 con LCD
Publicado por: Chaly29 en 29 de Mayo de 2006, 16:52:19
Hola Kitiara, esos mseg de demora que pones al pricipio del programa, no son algunos, deben ser 15 o más, si le colocas menos es probable que no se inicialice de manera correcta.

Un saludo.

Atte. CARLOS.

Título: Re: PIC 16F876 con LCD
Publicado por: quirogaareal en 29 de Mayo de 2006, 21:14:51
Que tal .
No te has fijado en los fuses   , mas especificamente  nolvp  .
espero que sea eso  probalo .


Saludos

Desde Cordoba Argentina
Título: Re: PIC 16F876 con LCD
Publicado por: M.C_Barquin en 30 de Mayo de 2006, 11:14:36
Escríbenos el programa para poder ayudarte más y mejor.Saludos.
Título: Re: PIC 16F876 con LCD
Publicado por: Picavid en 02 de Junio de 2006, 02:22:27
Hola kitiara,

Título: Re: PIC 16F876 con LCD
Publicado por: Picavid en 02 de Junio de 2006, 02:33:20
Hola kitiara, soy muy novato con el 876, y aunque creo que programas en C, te paso la parte principal de mi libreria en ASM por si te sirviera de algo. Lo uso a 4 bits, y el pin RW a masa. La parte alta del LCD conectada a la parte baja del puerto C (DB4-RC0; DB5-RC1, ... PIN RS-RC4; PIN E-RC5). Mi LCD no tiene iluminacion asi que en eso.... Si necesitas la libreria entera te la paso por email.
   CBLOCK
   LCD_Dato
   LCD_GuardaDato
   LCD_GuardaTRISC
   LCD_Auxiliar1
   LCD_Auxiliar2
   ENDC

LCD_CaracteresPorLinea   EQU   .16   ; Número de caracteres por línea de la pantalla.

#DEFINE  LCD_BusDatos   PORTC

LCD_Inicializa

   bcf   PINE      
   bcf    PINRS      
   call   Retardo_20ms
   movlw   b'00110000'   
   call   LCD_EscribeLCD      
   call   Retardo_5ms   
   movlw   b'00110000'   
   call   LCD_EscribeLCD
   call   Retardo_200micros
   movlw   b'00110000'   
   call   LCD_EscribeLCD
   movlw   b'00100000'      
   call   LCD_EscribeLCD

   call   LCD_2Lineas4Bits5x7   
   call   LCD_Borra      
   call   LCD_CursorOFF   
   call   LCD_CursorIncr      
   return

LCD_EscribeLCD
   andlw   b'11110000'      
   movwf   LCD_Dato      
   swapf   LCD_Dato,F
   movf   LCD_BusDatos,W   
   andlw   b'11110000'      
   iorwf   LCD_Dato,F      
   bsf   STATUS,RP0      
   movf   PORTC,W      
   movwf   LCD_GuardaTRISC
   movlw   b'11110000'      
   andwf   PORTC,F      
   bcf   STATUS,RP0      
   movf   LCD_Dato,W      
   movwf   LCD_BusDatos   
   bsf   PINE      
   bcf   PINE      
   bsf   STATUS,RP0      
   movf   LCD_GuardaTRISC,W   
   movwf   PORTC      
   bcf   STATUS,RP0      
   return

LCD_EnviaComando
   bcf   PINRS   
   goto   LCD_Envia

LCD_Caracter
   bsf   PINRS   
   call   LCD_CodigoCGROM

LCD_Envia
   movwf   LCD_GuardaDato   
   call   LCD_EscribeLCD   
   swapf   LCD_GuardaDato,W   
            
   call   LCD_EscribeLCD   
   btfss   PINRS   
   call   Retardo_2ms      
   call   Retardo_50micros
   return

Un saludo.