Poner mensaje en un LCD

En un LCD 2x16 con el famoso controlador hitachi de siempre quiero poner un mensaje en la primera línea y otro en la segunda línea.

¿Cómo se hace?

Ejemplo.

HOLA
Amigo
 
Hola Meta te dejo el ejemplo de como lo puede hacer
espero que te sirva.
suerte :)
 

Adjuntos

  • ej_lcd_617.asm
    3.1 KB · Visitas: 151
  • lcd_161.gif
    lcd_161.gif
    11.1 KB · Visitas: 490
Hola Meta disculpe la demora te dejo el ejemplo que necesitas espero te sirva
chao :)
 

Adjuntos

  • ej_lcd_4_bits_190.png
    ej_lcd_4_bits_190.png
    5 KB · Visitas: 404
  • ej_lcd_203.asm
    3.2 KB · Visitas: 84
Que tal amigos, tengo una duda, como funciona internamente un lcd 2x16 de los comunes, porque tengo un problema, por medio de un pic envio un texto al lcd, el texto aparece sin problemas pero lo dejo por varias horas y el texto empieza a desvanecerse y se pierde, si envio de nuevo el texto vuelve a funcionar sin problemas, mi duda es si el lcd mantiene el texto que se le envia en alguna memoria?, o alguien sabe poruqe se desvanece con el tiempo... muchas gracias por su ayuda... saludos
 
Debe ser un error del LCD.... por que el controlador debe mantener el texto indefinidamente hasta que reciba un comando que ordene otra cosa....

Posiblemente le falla el contraste...
 
Que tal muchachos. De verdad que toda esta información nos sirve a todos. tengo un duda: cual es la dirección de cada digito? se que la primera es 0x80 pero he probado con las sucesivas ( 0x81) y no me ha funcionado. Alguien sabe? Desde ya gracias
 
QUE TAL mordorman, efectivamente es como dices reviza bien tu programa por se inicias desde 080h y vas incrementando debe colocarte el caracter en esa posicion de la columna, si no chequea este ejemplo y cambia la direcion justo:

MENSAJES: MOVLW 082H , justo aqui cambia la direcion en el adjunto
CALL CONTROL_LCD
MOVLW "H"
CALL DATO_LCD
MOVLW "O"
CALL DATO_LCD
MOVLW "L"
CALL DATO_LCD
MOVLW "A"
CALL DATO_LCD

RETURN

Saludos
 

Adjuntos

  • EJEMPLO.rar
    29 KB · Visitas: 36
Muchas gracias jairosaw, entonces debo tener un error porque he probado en la 0x80 , 0x81.... 0x8f para la primer fila y luego 0x40 a 0x4f para la segunda y no me funciono. Voy a probar con el ejemplo. Muchas Gracias
 
Hola si vas a escribir en la segunda fila prueba lo siguiente:

MOVLW 0C0H ;primer caracter de la segunda fila
CALL CONTROL_LCD
MOVLW "M"
CALL DATO_LCD
MOVLW "U"
CALL DATO_LCD
MOVLW "N"
CALL DATO_LCD
MOVLW "D"
CALL DATO_LCD
MOVLW "O"
CALL DATO_LCD
RETURN
 
OK. A ver si entiendo. El primer caracter de la primer fila esta en 0x80 y el siguiente en 0x81?
Y el primer caracter de la segunda en 0xC0 y el siguiente en 0xc1? O no ?
Si en el ejemplo que me has propuesto cambio la dirección de 0x82 por 0x80 debería cambia el texto de lugar no?
Te consulto esto porque cuando lo simulo me escribe siempre en el mismo lugar...
Desde ya millon de gracias. Ya con lo que has enseñado he avanzado muchísimo.

Perdón jairosaw ha sido un error mio en la simulación- Funciona correctamente:aplauso:. Voy a probar enviar distintos caracteres en distintas posiciones e incluir retardos para dar efectos.
Muchisimas gracias(y)
 
Última edición:
te sigieron que uses las librerias del mismo MPLAB
con esta libreria no tendras problemas LCD_MENS.INC
el cual ya tiene las subrutinas , para que asi solo las llames con un CALL y hagan tu pedido..
asi lo pones en tu MPLAB para que lo reconosca INCLUDE <LCD_MENS.INC>

.. . . por sierto alguien sabe si se puede poner mas de 12 mensajes diferentes en un LCD .. por que al parecer a mi no me sale solo puedo controlar 12 mensajes diferentes aproximados.. si alguien sabe algo referente por favor me ayude..

Saludos. .

este ejemplo espero te ayude:

movlw Mensaje3 - - - - - > con esto cargo el valor del mensaje3 = _Option 1_
call LCD_Mensaje - - - - - > pertenece a la libreria LCD_MENS , que permite visualizar el mensaje

call LCD_Linea2 - - - - > me voy a la segunda linea del LCD
movlw Mensaje0 - - - > cargo el valor del mensaje0
call LCD_Mensaje - - - -> y lo visualizo




Mensajes addwf PCL,F
Mensaje0 DT "* Start", 0x00; Posición inicial del mensaje 0.
Mensaje1 DT "* Start Time", 0x00 ; Posición inicial del mensaje 1.
Mensaje2 DT "* Load Current", 0x00 ; Posición inicial del mensaje 2.
Mensaje3 DT " _Option 1_ ", 0x00 ; Posición inicial del mensaje 3.
 
Última edición:
Atrás
Arriba