' {$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