Display lcd 16x2 defectuoso

Buen día.
Estoy haciendo un programa en ensamblador que requiere mostrar mensajes en un display lcd 16x2 con un pic16f84.
El caso es que los mensajes me aparecen cortados a la mitad, es decir, solo se muestra la mitad del mensaje y estoy desconfiando de un problema en el display ya que probé varios programas y en todos hace lo mismo.
Por desgracia no tengo otro display para probar.
Adjunto el código, obvié toda la otra parte del proceso solo deje la primer parte en donde muestra mensajes de inicio.
Gracias.
Código:
__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
    LIST    P=16F84A        ;Tipo de procesador
    INCLUDE    <P16F84A.INC>    ;Definiciones de registros internos
                    
        CBLOCK 0x0C        ;define direcciones de variables
        volumen            ;contador del modo "volumen"
        graves            ;contador de modo "graves"
        agudos            ;contador de modo "agudos"
        byte            ;guarda el byte generado en la tabla
        byte_reg        ;registro que guarda los bytes a enviar
        contador        ;contador multiproposito
        endc            ;termina definiciones de variables
            
#DEFINE     modo    PORTA,2    ; Línea donde se conecta el pulsador modo.
#DEFINE  incrementa PORTA,3    ; Línea donde se conecta el pulsador incrementa.
#DEFINE  decrementa PORTA,4    ; Línea donde se conecta el pulsador decrementa.

                org    0x00

        
;**aqui se realizan las primeras    configuraciones******

Inicio         
call    LCD_Inicializa        ;inicializa el display
movlw    Mensaje0            ;mueve un mensaje al lcd
call    LCD_Mensaje            ;llama a la subrutina para mostrar el mensaje
call    Retardo_500ms        ;retardos
call    Retardo_500ms
call    Retardo_500ms
call    Retardo_200ms
call    LCD_Linea2            ;se sitúa en la línea 2
movlw    Mensaje6            ;mueve el mensaje
call    LCD_Mensaje            ;llama a la subrutina para mostrar el mensaje
call    Retardo_500ms        ;retardos
call    Retardo_500ms
call    LCD_Borra            ;borra el display
call    Retardo_500ms        ;retardos
call    Retardo_500ms
call    LCD_Linea2            ;muestra otra vez el mismo mensaje para producir
movlw    Mensaje6            ;efecto de parpadeo
call    LCD_Mensaje
call    Retardo_500ms    
call    Retardo_500ms
bsf    STATUS,RP0    ;Selecciona banco 1.
bsf    modo        ; Línea del pulsador se configura como entrada.         bsf    incrementa    ; Línea del pulsador se configura como entrada.
bsf    decrementa    ; Línea del pulsador se configura como entrada.
bcf    STATUS,RP0    ;Selecciona banco 0
movlw    0x01
movwf    volumen        ;pone el contador a 1
movlw    0x08
movwf    graves        ;pone a 8 los contadores
movwf    agudos                                                                                                     goto    Inicio

        INCLUDE <BUS_I2C.INC>    
    INCLUDE <RETARDOS.INC>    
    INCLUDE <LCD_4BIT.INC>    
    INCLUDE <LCD_MENS.INC>    
    INCLUDE <BIN_BCD.INC>
    
END
 
Última edición por un moderador:
ya adjunte una porcion de código. Yo estoy casi seguro de que el problema lo tiene el display pero no se como verificar que sea eso sin tener otro para reemplazarlo
 
¿Te refieres a la mitad de que sólo se ven la mitad de los caracteres por ejemplo la A, que se ve solo ^?, si es el caso seguramente el panel LCD tiene falso, si te refieres a que sólo aparece la 1era línea seguramente es problema de tu programación
 
Buen día.
Estoy haciendo un programa en ensamblador que requiere mostrar mensajes en un display lcd 16x2 con un pic16f84.
El caso es que los mensajes me aparecen cortados a la mitad, es decir, solo se muestra la mitad del mensaje y estoy desconfiando de un problema en el display ya que probé varios programas y en todos hace lo mismo.
No mencionas que tipo de pantalla es, pero por lo que mencionas puede tratarse del LMG-162-STN
Ese tipo de pantallas inician la escritura en la línea 1 desde la posición 0x84 y en la línea 2 desde 0xC4
O sea 4 posiciones adelante de otras pantallas genéricas con el controlador HD44780.

Esta es la imagen de la pantalla que te menciono. LMG-162-STN

Mira por aquí: Datasheet pantalla lmg-162-stn
 
gracias por responder.se muestra la primer y segunda línea solo que hasta la mitad del display. adjunto hoja de datos del display y fotos



No mencionas que tipo de pantalla es, pero por lo que mencionas puede tratarse del LMG-162-STN
Ese tipo de pantallas inician la escritura en la línea 1 desde la posición 0x84 y en la línea 2 desde 0xC4
O sea 4 posiciones adelante de otras pantallas genéricas con el controlador HD44780.

Esta es la imagen de la pantalla que te menciono. LMG-162-STN

Mira por aquí: Datasheet pantalla lmg-162-stn



aparentemente no es la misma que me sugeriste, pero te agradezco la información
 

Adjuntos

  • foto0040.jpg
    foto0040.jpg
    66.7 KB · Visitas: 28
  • foto0041.jpg
    foto0041.jpg
    62.8 KB · Visitas: 16
  • wh1602b-yyh-etk_specification_en.pdf
    506.1 KB · Visitas: 3
Última edición:
aparentemente no es la misma que me sugeriste, pero te agradezco la información
Entonces al parecer es el mismo problema que mencionaste por aquí: Post #26 (Sensor de temperatura DS1820)

Pero sobre ese mismo tema en el post #29 dijiste que ya funcionaba. :unsure:

¿Ya probaste con un código sencillo de escritura en la pantalla?

Algo así:
Código:
    list    p=16f84a
    include    p16f84a.inc
    __config    _XT_OSC & _PWRTE_ON & _WDTE_OFF
    errorlevel    -302


    cblock    0x0C
    
    endc

    org        0x00

Inicio
    bsf        STATUS,RP0
    bcf        TRISB,3
    call    LCD_Inicializa
    movlw    Mensaje1
    call    LCD_Mensaje
    call    LCD_Linea2
    movlw    Mensaje2
    call    LCD_Mensaje

Programa
    bsf        PORTB,3
    call    Retardo_500ms
    bcf        PORTB,3
    call    Retardo_500ms
    goto    Programa

Mensajes
    addwf    PCL,f
Mensaje1
    DT    "Hola Mundo",0x00
Mensaje2
    DT    "Hello World",0x00

  
    include RETARDOS.INC    
    include LCD_4BIT.INC    
    include LCD_MENS.INC    
    
    end
 

Adjuntos

  • DSC00056.JPG
    DSC00056.JPG
    56.8 KB · Visitas: 24
si el mismo problema. en realidad, en esa ocasión no solucione nada sino que corrí las palabras y como no son largas parecía que andaba , pero en realidad solo disimulé la falla. Probé con un código sencillo y me hace lo mismo. Es el mismo display que utilicé esa vez.Yo creo que el display esta fallado pero no lo puedo asegurar hasta que pruebe con otro, que no tengo por cierto. Voy a probar con el código que me diste por las dudas, muchas gracias.
 
Hola, Yo tengo unos display de 16x2 que funcionan como 16x4.
La primera linea es 1 y 3, la segunda es 2 y 4. esto complica bastante la programacion.

atte
jvk85321
 
Hola, Yo tengo unos display de 16x2 que funcionan como 16x4.
La primera linea es 1 y 3, la segunda es 2 y 4. esto complica bastante la programacion.

atte
jvk85321

hola. No se si entendí bien, pero creo que lo que querés decir es que me toma la linea 1 como la 3 y la 2 como la 4? fijate en las fotos que puse, el problema me aparece en la mitad de cada linea .
O me toma la mitad de la primer linea como 1 y la segunda mitad como 3? Haceme el favor de explicarme un poco eso ya que si lo pienso bien es una posibilidad de falla. gracias
 
Última edición:
Atrás
Arriba