Autor Tema: Duda sobre los LCD"S solicito Ayuda  (Leído 1223 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MISTRELO

  • PIC10
  • *
  • Mensajes: 6
Duda sobre los LCD"S solicito Ayuda
« en: 10 de Marzo de 2005, 22:30:00 »
Hola, me estoy iniciando en lo de los PIC"s, y conforme avanzo en su estudio y aplicación
me surgen nuevas dudas que hasta ahora había podido resolver.  Sin embargo lo que les voy a
plantear no he podido encontar la razón por lo que sucede, espero que alguno de ustedes me
pueda decir que es lo que pasa, y darme una solución al respecto.
Tengo un LCD de 2 líneas con 16 caracteres por línea lo he inicializado de la siguiente forma:
(estoy usando un PIC16F873, con un reloj de 4 MHz.)
*****************************************************************************************
inicDSP      call   pausa
      call   pausa
      call   pausa
      movlw   0x38   
      movwf   PORTC
      call   HabilitaLCD
      call   pausa
      movlw   0x38
      movwf   PORTC
      call   HabilitaLCD
      call   pausa
      movlw   0x38
      movwf   PORTC
      call   HabilitaLCD
      call   pausa
      movlw   0x0E
      call   comdoLCD
      movlw   0x06
      call   comdoLCD
      return
*********************************************************
pausa      clrf   DELAY1
      movlw   0X07
      movwf   DELAY2
bucle      decfsz   DELAY1,1
      goto   bucle
      decfsz   DELAY2,1
      goto   bucle
      return
***********************************************************
comdoLCD
      bcf   PORTA,0      ; LCD MODO COMANDOS
      movwf   BUFFER
      movwf   PORTC
      call   HabilitaLCD
      return
;*******************************************************
HabilitaLCD
      bsf   PORTA,1   
      nop
      call   pausa
      bcf   PORTA,1
      return
;*******************************************************
datoLCD
      bsf   PORTA,0   
      movwf   PORTC
      call   HabilitaLCD
      return
********************************************************
Y pretendo que aparezca el siguiente mensaje
(así es como lo tengo)
mensaje1
   movlw   0x01   ;limpia el LCD y regresa el cursor a la primera posición
   call   comdoLCD
   movlw   0x80   ;es la primera dirección de la línea superior
   call   comdoLCD
   movlw   0x7F
   call   datoLCD
   movlw   "P"
   call   datoLCD
   movlw   "R"
   call   datoLCD
   movlw   "O"
   call   datoLCD
   movlw   "G"
   call   datoLCD
   movlw   "."
   call   datoLCD
   movlw   " "
   call   datoLCD
   movlw   " "
   call   datoLCD
   movlw   "A"
   call   datoLCD
   movlw   "R"
   call   datoLCD
   movlw   "R"
   call   datoLCD
   movlw   "A"
   call   datoLCD
   movlw   "N"
   call   datoLCD
   movlw   "C"
   call   datoLCD
   movlw   "A"
   call   datoLCD
   movlw   0x7E
   call   datoLCD
   movlw   0xC0   ;aquí inicia la línea inferior, es la primera dirección
   call   comdoLCD
   movlw   " "
   call   datoLCD
   movlw   "M"
   call   datoLCD
   movlw   "E"
   call   datoLCD
   movlw   "D"
   call   datoLCD
   movlw   "I"
   call   datoLCD
   movlw   "D"
   call   datoLCD
   movlw   "A"
   call   datoLCD
   movlw   "="
   call   datoLCD
   movf   Dato3,W
   addlw   0x30
   andlw   0x3F
   call   datoLCD
   movf   Dato2,W
   addlw   0x30
   andlw   0x3F
   call   datoLCD
   movf   Dato1,W
   addlw   0x30
   andlw   0x3F
   call   datoLCD
   movlw   " "
   call   datoLCD
   movlw   "C"
   call   datoLCD
   movlw   "m"
   call   datoLCD
   movlw   "."
   call   datoLCD
   return
*************************************************************
La llamo con un call (call mensaje1) inmediatamente después de que
se inicializa el LCD.
Sin embargo aparece el mensaje pero cortado del lado izquierdo.
O sea que debería verse:
 
   <-PROG.  ARRANCA->
     MEDIDA=136 Cm.

y aparece así

    G.  ARRANCA->
    IDA=136 Cm.

Es decir no aparecen las primeras 4 direcciónes de las dos líneas
o el "display real" está desplazado hacia la derecha con respecto
al "display Virtual" 4 posiciónes.
Una forma de resolver este problema sería colocando en la dirección
de inicio de la primera línea en lugar de 0x80 poner 0x84 y en lugar
de 0xC0 poner 0xC4 para la línea inferior. Pero creo que no es la mejor
manera de hacerlo, creo que algo me falta para configurar adecuadamente
el LCD.
Mucho agradeceré cualquier comentario y ayuda al respecto
Saludos a todos y de antemano ¡Gracias!










Desconectado fer_zone

  • PIC12
  • **
  • Mensajes: 74
RE: Duda sobre los LCD"S solicito Ayuda
« Respuesta #1 en: 12 de Marzo de 2005, 08:39:00 »
Hola, algunas sugerencias al inicializar el display, envia el primer 38h como un comando, es decir movlw 038h, call  comdoLCD. no lo envies tres veces, y agrega al final de la configuración: movlw 02h, call comdoLCD  (cursor y "display" a casa, es decir, si el problema es un desplazamiento de ram, esto debería solucionarlo)
Espero que esto te sirva, comentanos luego que paso. Saludos

Desconectado MISTRELO

  • PIC10
  • *
  • Mensajes: 6
RE: Duda sobre los LCD"S solicito Ayuda
« Respuesta #2 en: 14 de Marzo de 2005, 22:47:00 »
Gracias fer_zone por contestarme y te comento que hice lo que me sugeriste pero el resultado fue el mismo, es decir sigue el desplazamiento.
Agradezco tu sugerencia

Saludos

Desconectado sebaskace

  • PIC10
  • *
  • Mensajes: 3
RE: Duda sobre los LCD"S solicito Ayuda
« Respuesta #3 en: 24 de Marzo de 2005, 08:18:00 »
Hola amigos como estan queria saber si me podrian ayudar soy un estudiante de secundaria que necesito terminar mi tesis y no se como hacer.

Mi tesis consiste en el manejo de un LCD 240 x 128B con un pic 16f871 el problema es que yo no conozco mucho de programación en Pic y menos con este LCD. Les agradeceria un mundo si me ayudaran por favor. Nesecito la inicialización del LCD.

Mi tesis es la de manejar con este LCD un dispositivo de votación electronica.

Enfurruñado


 

anything