Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




PIC16F84 + LCD... dudas


       



#1  PIC16F84 + LCD... dudas
skan
Registrado: 27 May 2006
Mensajes: 29
citar
buenas.. estoy con un proyecto pic16f84 y modulo LCD de una linea (16 patillas) (las 2 ultimas pq esta retroiluminado).
RESPECTO AL LCD:
-en mis programas no voy a usar la patilla E(6), ni la R/W (estara siempre en escritura).. estas las conecto a sus niveles respectivos.
-el problema la patilla RS... se que esta es necesaria para el control del LCD. mi pregunta. a que patilla del pic la conecto para que funcione correctamente? RB esta todo ocupado por el bus de datos del LCD.
-por ultimo los programas ejemplo que tengo cargan librerias con nombre "p16f84a.inc", "retardos.inc" y utiliza todo el rato rutinas contenidas en estas librerias... con ellas la utilización del LCD parece mas sencilla...alguien sabe donde puedo descargarmelas?¿?

GRACIAS POR SU ATENCIÓN.

#2  
microextremo
Ubicación: peru
Registrado: 16 May 2006
Mensajes: 7
citar
justo estaba revisando una informacion donde hay unas figuras que te pueden ayudar,
http://www.pic16f84a.com/Proteus.htm
aunque los ejemplos hacen trabajar al LCD con 4 pines y tu quieres con 8... bueno no creo que eso sea tan dificil de encontrar 8)

#3  
tiopepe123
Colaborador
Ubicación: Barcelona (Espanya)
Registrado: 14 May 2006
Mensajes: 2878
citar
Ve con cuidado, primero haz el proyecto con todas las lineas de control Rw... aunque utilices el formato de cuatro lineas de datos. Lo digo porque si te pasas al "c" es un poco problematico, una vez verificado que la LCD rula bien, pues pruebas de quitarselo y crear una libreria.
Yo lo probe y no funciono del todo correcto y como utilizaba un pic16f876 no me veria de esas tres patillas.

Te recomiendo encarecidamente te pases al pic16f876/877, funcionan y valen casi lo mismo y son mas versatiles sobretodo el bootloader

#4  
Ehecatl
Ubicación: Mexico, D.F.
Registrado: 18 Mar 2005
Mensajes: 158
citar
No puedes dejar inactivada la terminal E del LCD. Sin ésta no podrás cargar ni datos ni comandos al mismo. La única que puedes dejar siempre fija es la R/W.

#5  Como controlar un LCD
akyles
Ubicación: MX
Registrado: 02 Jun 2006
Mensajes: 20
citar
En esta pagina hay un mini-tutorial como usar los LCD http://www.josepino.com/pic_projects/indexsp.pl?hitachi_displays.jps - Incluso te indica paso a paso como inicializar el display LCD.

#6  lcd..
skan
Registrado: 27 May 2006
Mensajes: 29
citar
gracias por sus contestaciones..

alfinal necesito conectarlo con 8 patillas...ya que el LCD que tengo, DB0-DB3 controla 40 segmentos del LCD, y las otras 4.. los otros 40 segmentos (es de una línea)...

tengo librerias de las que hechar mano... lo que no tengo ninguna para el control del LCD a 8 bits (usaba una; LCD_4BIT.INC) y todos los programas ejemplos q tenia usaban esa... ¿alguien sabe donde puedo encontrar una?

#7  
tiopepe123
Colaborador
Ubicación: Barcelona (Espanya)
Registrado: 14 May 2006
Mensajes: 2878
citar
utiliza 4 bits si no tienes prisa, que no te sobran pines para tirar.
Recuerda que es inteligente,, no hables de segmentos, eso lo hace el chip, solo precupate de enviarle los datos.

con 4 bits puedes manejar todo el display.
la primera linea va desde 00 a 39 y la segunda linea 40-79 si no me equivoco.

me explico solo hay un tipo de chip esta diseñado para controlar 4x40 caracteres, el fabricante le mete la lcd que le interese 1x16 o 2x16 .... las filas que sobran simplemente no se ven(no hay cristal lcd), pero existen si escribes y lees en una posicion que no hay nada veras como lo retiene, como si lo quieres para guardar datos por que no te caven en el micro, eso se puede hacer.

#8  Eliminando problemas!!
skan
Registrado: 27 May 2006
Mensajes: 29
citar
PORFIN pude visualizar algo coherente y bien escrito en el LCD!!!!!!!...
lo conseguí mandando yo caracter a caracter, sin utilizar la libreria para enviar la palabra entera como hacia antes...esta es un poco la estructura...
--------------
ORG 0
Inicio
call LCD_Inicializa
Principal
movlw 'H'
call LCD_Caracter
call Retardo_500ms
movlw 'o'
call LCD_Caracter
call Retardo_500ms
movlw 'l'
call LCD_Caracter
call Retardo_500ms
movlw 'a'
call LCD_Caracter
call Retardo_500ms
call LCD_Borra ; Borra la pantalla.
call Retardo_500ms
goto Principal
-----------------
EL PROBLEMA QUE PERSISTE:: sigo controlando tan solo la parte izquierda de la pantalla... e probado de subir temporizaciones, desactivar el watchdog, verificar que no hay ninguna interrupción activa que altere el programa...y nada sigue igual..

Recuerdo que el control lo realizo de DB7-DB4 del LCD a RB7-RB4 del pic, RS=RA0, R/W=RA1, E=RA2...

alguna idea¿¿ al- ya es algo lo que puedo enseñar..!

#9  
Ehecatl
Ubicación: Mexico, D.F.
Registrado: 18 Mar 2005
Mensajes: 158
citar
Aclaremos. De los 16 caracteres que se pueden mostrar en la pantalla ¿sólo puedes mostrar 8?
¿qué sucede al intentar escribir el noveno?
¿podrías poner la rutina lcdcaracter para ver si no hay algo extraño en ella? lo dudo pero hay que estar 100% seguros.

#10  lcd..
skan
Registrado: 27 May 2006
Mensajes: 29
citar
lo e probado de dos maneras... mandando los 8 caracteres y despues la llamada a LCD_posicionLinea1 y situandolo en la posicion 08 (la 9a del LCD), y también sin llamar a la subrutina mandar 11 caracteres,,,
simplemente escribe hasta el 8, y lo otro no se ve (nada ningun segmento se enciende) pero si realiza el proceso, por que las temporizaciones de escribir esas 3 letras si se cumplen..y la temporización final (matengo el msg 1seg en pantalla) también.

ESTA ES LA SUBRUTINA LCDPOSICIONLINEA1;
---------------
LCD_PosicionLinea1 ; Cursor a posición de la Línea 1, a partir de la
iorlw b'10000000' ; dirección 00h de la DDRAM más el valor del
goto LCD_EnviaComando ; registro W.

esta la LCD_EnviaCOmando
-----------------------------
LCD_EnviaComando
bcf LCD_PinRS ; Activa el Modo Comando, poniendo RS=0.
goto LCD_Envia
LCD_Caracter
bsf LCD_PinRS ; Activa el "Modo Dato", poniendo RS=1.
call LCD_CodigoCGROM ; Obtiene el código para correcta visualización.
LCD_Envia
movwf LCD_GuardaDato ; Guarda el dato a enviar.
call LCD_EscribeLCD ; Primero envía el nibble alto.
swapf LCD_GuardaDato,W ; Ahora envía el nibble bajo. Para ello pasa el
; nibble bajo del dato a enviar a parte alta del call LCD_EscribeLCD ; Se envía al visualizador LCD.
btfss LCD_PinRS ; Debe garantizar una correcta escritura manteniendo
call Retardo_10ms ; 2 ms en modo comando y 50 µs en modo cáracter.
call Retardo_100micros
return
------------------
y mi manera de llamar a LCD_posicionlinea1:
movlw b'00001001'
call LCD_PosicionLinea1
call Retardo_20ms

 Responder





 Otros temas de interés 
No hay mensajes nuevos Adquisicion de datos a traves de serial o puerto paralelo
No hay mensajes nuevos Adquisicion de datos con JK3 (motorola)
No hay mensajes nuevos Adquisición de datos por Tarjeta de audio
No hay mensajes nuevos Anchos de banda (Transmisión de datos VoIP videoconferencia)
No hay mensajes nuevos Datos de Norma PAL N (Television)

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||