' ========================================================================= ' File...... Parallel_LCD_2X16.bs2 ' Purpose... Parallel LCD Display Demo ' Author.... Parallax, Inc. ' E-mail.... support@parallax.com ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Program Description ]--------------------------------------------- ' This program demonstrates using a Hitachi-compatible Parallel LCD Display ' This code works with the BS2, BS2e and BS2sx ' -----[ I/O Definitions ]------------------------------------------------- E PIN 0 ' Enable Pin For LCD RW PIN 2 ' R/W Pin For LCD RS PIN 3 ' LCD Register Select ' 0 = Instruction, 1 = Text ' -----[ Variables ]------------------------------------------------------- char VAR Byte ' Character To Send To LCD inst VAR char ' Induction To Send To LCD index VAR Word ' Character Pointer temp VAR Byte ' Temp Variable ' -----[ EEPROM Data ]----------------------------------------------------- DATA "Hello, My name is Parallel LCD." ' Message To Send To LCD ' -----[ Initialization ]--------- ----------------------------------------- Initialize: LOW RW ' Set LCD To Write Mode OUTS = %0000000000000000 ' Set All Output Low DIRS = %0000000011111111 ' Set I/O Direction GOSUB Init_Lcd ' Initialize The LCD Display ' -----[ Program Code ]---------------------------------------------------- Main: FOR temp = 0 TO 30 ' 28 Characters IF temp = 15 THEN ' Check For End Of Line GOSUB Next_Line ' Jump To Next Line ENDIF READ temp, char ' Read Next Character From EEPROM GOSUB Send_Text ' Send Character To LCD Display NEXT END ' -----[ Subroutines ]----------------------------------------------------- Init_Lcd: PAUSE 200 OUTS = %00110000 ' Reset The LCD PULSOUT E,10 ' Send Command Three Times PAUSE 10 PULSOUT E,10 PAUSE 10 PULSOUT E,10 PAUSE 10 OUTS = %00100000 ' Set To 4-bit Operation PULSOUT E,10 Inst = %00001100 ' Clear DDRAM, Shift Home GOSUB Send_Inst Inst = %00101000 ' Function Set (2-Line Mode) GOSUB Send_Inst Inst = %00001100 ' Cursor command GOSUB Send_Inst Inst = %00000001 ' Clears LCD GOSUB Send_Inst RETURN Send_Inst: LOW RS ' Set Instruction Mode OUTB = Inst.HIGHNIB ' Send High Nibble PULSOUT E,10 OUTB = Inst.LOWNIB ' Send Low Nibble PULSOUT E,10 HIGH RS ' Set LCD Back To Text Mode RETURN Send_Text: OUTB = Char.HIGHNIB ' Send High Nibble PULSOUT E,10 OUTB = char.LOWNIB ' Send Low Nibble PULSOUT E,10 PAUSE 50 RETURN Next_Line: Inst = 128+64 ' Move Cursor To Line 2 GOSUB Send_Inst RETURN