16x2 Parallel LCD, Displays incorrect chars.
I just recieved my 16x2 LCD Parallel, and got the demo to show up correctly, but I am trying to display charecters I store in an array and they show asian charecters or something like that.
' =========================================================================
' File...... Parallel_LCD_2X16.bs2
' Purpose... Parallel LCD Display Demo
' Author.... Parallax, Inc.
' E-mail.... [url=mailto:support@parallax.com]support@parallax.com[/url]
' {$STAMP BS2}
' {$PBASIC 2.5}
' -----[noparse][[/noparse] Program Description ]---------------------------------------------
' This program demonstrates using a Hitachi-compatible Parallel LCD Display
' This code works with the BS2, BS2e and BS2sx
' -----[noparse][[/noparse] 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
' -----[noparse][[/noparse] Variables ]-------------------------------------------------------
char VAR Word ' Character To Send To LCD
time VAR Byte(5)
inst VAR char ' Induction To Send To LCD
index VAR Word ' Character Pointer
temp VAR Byte ' Temp Variable
gpstime VAR Word
' -----[noparse][[/noparse] EEPROM Data ]-----------------------------------------------------
'DO
SERIN 15,16572,[noparse][[/noparse]WAIT("RMC,"),DEC gpstime]
gpstime = gpstime
FOR temp = 0 TO 4
time(temp)= gpstime DIG temp
NEXT
'GOSUB Main
'GOSUB Initialize
'LOOP
'DATA "Goodbye, this is the LCD demo." ' Message To Send To LCD
' -----[noparse][[/noparse] 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
' -----[noparse][[/noparse] Program Code ]----------------------------------------------------
Main:
FOR temp = 0 TO 4 ' 28 Characters
char= time(temp)
DEBUG DEC time(temp) ' Read Next Character From EEPROM
GOSUB Send_Text ' Send Character To LCD Display
NEXT
RETURN
END
' -----[noparse][[/noparse] Subroutines ]-----------------------------------------------------
Init_Lcd:
OUTS = %00110000 ' Reset The LCD
PULSOUT E,1 ' Send Command Three Times
PAUSE 10
PULSOUT E,1
PAUSE 10
PULSOUT E,1
PAUSE 10
OUTS = %00100000 ' Set To 4-bit Operation
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 ' Set Instruction Mode
OUTB = Inst.HIGHNIB ' Send High Nibble
PULSOUT E,1
OUTB = Inst.LOWNIB ' Send Low Nibble
PULSOUT E,1
HIGH RS ' Set LCD Back To Text Mode
RETURN
Send_Text:
OUTB = Char.HIGHNIB ' Send High Nibble
PULSOUT E,1
OUTB = char.LOWNIB ' Send Low Nibble
PULSOUT E,1
RETURN
Next_Line:
Inst = 128+64 ' Move Cursor To Line 2
GOSUB Send_Inst
RETURN

Comments
What type of custom character are you trying to make?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Quit buying all those fixed voltage regulators, and·get an Adjustable Power Supply·for your projects!· Includes an LED testing terminal!
*-NEW-* SD Card Adapter·Now available!· Add extra memory to your next Propeller project with ease!
·
So when you have it display the data on the debug terminal, there isn't a problem?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Quit buying all those fixed voltage regulators, and·get an Adjustable Power Supply·for your projects!· Includes an LED testing terminal!
*-NEW-* SD Card Adapter·Now available!· Add extra memory to your next Propeller project with ease!
Then, I define char from the demo code to be time(counter) where counter is a for-next from 0 to 4.
The result is pure Kingons.
DEBUG is your friend.
·
SERIN 15,16572,[noparse][[/noparse]WAIT("RMC,"),DEC gpstime]
DEBUG gpstime···· ' ???
gpstime = gpstime ' ??
FOR temp = 0 TO 4
time(temp)= gpstime DIG temp '??
debug time(temp)
debug temp
NEXT
Or better yet lookup/·use ·STR qualifier to do the conversion bypassing the gpstime for loop
which is the problem.
SERIN 15,16572,[noparse]/noparse]WAIT("RMC,"),STR time\5[color=white]·[/color
Keep in mind that the time array still needs to be defined as (concecutive ) array.
Post Edited (vaclav_sal) : 8/30/2009 5:01:19 AM GMT