TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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
-
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
-
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.
-
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.
-
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
-
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.
-
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.
-
Que tal .
No te has fijado en los fuses , mas especificamente nolvp .
espero que sea eso probalo .
Saludos
Desde Cordoba Argentina
-
Escríbenos el programa para poder ayudarte más y mejor.Saludos.
-
Hola kitiara,
-
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.