Hola tengo una consulta para mandar datos en tiempo real a una pantalla LCD paralelo asi como se puede mandar con el comando debug.
el programa que tengo es solo para mandar la información que pongo en Data eso se visualiza en la LCD pero son mensajes ya guardados.
Si alguien puede ayudarme gracias.

' {$STAMP BS2}
' {$PBASIC 2.5}
' ************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ===============
' *                            DISPLAY LCD                               *
' -----[ I/O Definitions ]-------------------------------------------------
E               PIN     0               ' Pin de habilitacion para el Lcd
RW              PIN     2               ' R/W lectura/escritura selector H(read) L(write)
RS              PIN     3               ' LCD selector operacion
                                        ' 0 = Instruccion, 1 = Texto
' -----[ Variables ]-------------------------------------------------------
char            VAR     Byte            ' caracter a enviar al LCD
inst            VAR     char            ' Instruccion a enviar al LCD
index           VAR     Word            ' Character Pointer
temp            VAR     Byte            ' Temp Variable
' -----[ EEPROM Data ]-----------------------------------------------------
DATA "noooooooooooooooooooooooooooo"     ' Mesage a enviar al lcd
' -----[ INICIALIZACIÓN ]--------------------------------------------------
Initialize:
  LOW RW                                ' pone el lcd en modo escritura
  OUTS = %0000000000000000              ' pone a 0 todas las salidas
  DIRS = %0000000011111111              ' pone del pin 15 a 7 como salida
  GOSUB Init_Lcd                        ' Initialize The LCD Display
' -----[ PROGRAMA ]----------------------------------------------------
Main:
  FOR temp = 0 TO 28                    ' 16 Characters
    IF temp = 16 THEN                   ' Comprobar fin de línea
      GOSUB Next_Line                   ' Saltar a la siguiente línea
    ENDIF
    READ temp, char                     ' lee el siguiente caracter de la EEPROM
    GOSUB Send_Text                     ' envia el caracter al  LCD Display
  NEXT
END
' -----[ SUBRUTINAS ]-----------------------------------------------------
Init_Lcd:
  PAUSE 200
  OUTS = %00110000                      ' reinicia el LCD
  PULSOUT E,1                           'envia el comando en 3 tiempos
  PAUSE 10
  PULSOUT E,1
  PAUSE 10
  PULSOUT E,1
  PAUSE 10
  OUTS = %00100000                      ' modo lcd de 4 bits
  PULSOUT E,1
  Inst = %00101000                      ' Function Set (2-Line Mode)
  GOSUB Send_Inst
  Inst = %00001110                      ' Turn On Cursor
  GOSUB Send_Inst
  Inst = %00000110                      ' Set Auto-Increment
  GOSUB Send_Inst
  Inst = %00000001                      ' Clears LCD
  GOSUB Send_Inst
  Inst = 14                             ' Set Cursor To Underline
  GOSUB Send_Inst
  RETURN
Send_Inst:
  LOW RS                                ' Establecer el modo de instrucciones
  OUTB = Inst.HIGHNIB                   ' Send High Nibble
  PULSOUT E,1
  OUTB = Inst.LOWNIB                    ' Send Low Nibble
  PULSOUT E,1
  HIGH RS                               ' Establecer LCD Volver al modo de texto
  RETURN
Send_Text:
  OUTB = Char.HIGHNIB                   ' envia Nibble de mayor peso
  PULSOUT E,1
  OUTB = char.LOWNIB                    ' envia Nibble de menor peso
  PULSOUT E,1
  PAUSE 100
  RETURN
Next_Line:
  Inst = 128+64                         ' mueve el cursor a la linea 2
  GOSUB Send_Inst
  RETURN

Visitas: 166

Responde a esto

Respuestas a esta discusión

Ya sé que partimos de la utilización de un LCD en paralelo, pero si pudieras trabajarlo con una interface serial (sólo 3 conexiones) el código para representar valores sería algo tan fácil como:

------------------------------------------------
' Muestra valores numericos con la LCD Serial Parallax.
' {$STAMP BS2} ' Dispositivo Objeto = BASIC Stamp 2
' {$PBASIC 2.5} ' Lenguaje = PBASIC 2.5

counter VAR Byte ' Variable del ciclo FOR...NEXT
SEROUT 14, 84, [22, 12] ' Inicializa la LCD
PAUSE 5 ' Retraso 5 ms para limpiar la pantalla
FOR counter = 0 TO 12 ' Cuenta hasta 12; incrementa cada 1/2 s
SEROUT 14, 84, [DEC counter, " "]
PAUSE 500
NEXT
END ' Programa end
------------------------------------------------

Si optas por este tipo de conexión, tienes en el manual "Sensores inteligentes y sus aplicaciones" todo un mundo de posibilidades para manejar un LCD.

Y la diferencia de precio no es mucha, a parte de que no te "roba" tantas conexiones del BS...
Piénsatelo...
Parece un display tipo HD44780 si es asi los caracteres se definen con una correspondencia en asci
y el dato entregado por el high nib y lownib con lo cual puedes poner cualquier mensaje hay amplia bibliografia de manejo de este chip y con el basic stamp esta chupao
Un saludo

Responder a debate

RSS

Cursos online y tutoriales


(se requiere registro previo gratuito en PortalArduino.com)

Mantenimiento del sitio

© 2024   Creado por Lorenzo M. Oliver.   [Imágenes licenciadas por Depositphotos.com] Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio