Cheers mackrackit,
Things slowly starting to filter through. I'll have a look tomorrow.
I love the old LCD though, cracking.
Dvae
Cheers mackrackit,
Things slowly starting to filter through. I'll have a look tomorrow.
I love the old LCD though, cracking.
Dvae
Hi mackrackit,
Well I managed to get the program to do what I wanted it to do, namely run through four custom characters then place the four custom characters one in each corner of the display ( program code below).
All the info to do this was found within the LCD link you postedHowever, I can't really see how the CONSTANT:
works, what does the 128 part of it mean? I guess it must relate to LCD position HEX 0000 DDRAM Address for a 4 Line LCD but can't relate that to a CGRAM character position.Code:Row1 CON 128
Dave (lovin his LCD).Code:ANSEL = %00000000 'Disable analog select so ports work as digital i/o. CMCON0 = %00000111 'Disable analog comparators. TRISA = %00000000 'Set PORTA as OUTPUT. PORTA = %00000000 'Set PORTA pins all low. TRISC = %00000000 'Set PORTC as OUTPUT. PORTC = %00000000 'Set PORTC pins all low. DEFINE LCD_DREG PORTC 'PORTC.0 WILL CONNECT TO DB4, PORTC3 TO DB7 DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTC DEFINE LCD_RSBIT 4 'PORTC.4 CONNECT TO LCD PIN4 DEFINE LCD_EREG PORTC DEFINE LCD_EBIT 5 'PORTC.5 CONNECT TO LCD PIN6 DEFINE LCD_BITS 4 DEFINE LCD_LINES 4 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 150 Row1 CON 128 Row2 CON 192 Row3 CON 148 Row4 CON 212 DEFINE OSC 4 LCDOUT $FE,$40,$02,$06,$1a,$1a,$1a,$06,$02,$00 'FIRST CHAR 0 (Battery) LCDOUT $FE,$48,$06,$0f,$0f,$0f,$0f,$0f,$0f,$00 'Second CHAR 1 (Speaker) lcdout $FE,$50,$1F,$11,$15,$17,$17,$15,$11,$1F 'Third CHAR 2 (Copywrite) lcdout $FE,$58,$00,$0a,$0a,$00,$00,$11,$0e,$00 'Fourth CHAR 3 (Smiley) MAIN: PAUSE 500 LCDOUT $FE,1,0 'First character pause 1000 LCDOUT $FE,1,1 'Second character pause 1000 lcdout $FE,1,2 'Third character PAUSE 1000 lcdout $fe,1,3 'Fourth Character pause 1000 LCDOUT $FE,Row1+0,0 'Places CHAR 0 Top LHS of display. PAUSE 250 lcdout $FE,ROW1+19,1 'Places CHAR 1 Top RHS of display. PAUSE 250 LCDOUT $FE,Row4+0,2 'Places CHAR 2 Bottom LHS of display. PAUSE 250 LCDOUT $FE,Row4+19,3 'Places CHAR 3 Bottom RHS of display. PAUSE 4000 GOTO MAIN
Last edited by LEDave; - 25th April 2010 at 21:06.
Each position on the display has a number for an "address".
By adding to the constant you can place the character anyplace you want on the display.Code:Row1 CON 128 = $80 Row2 CON 192 = $C0 Row3 CON 148 = $90 Row4 CON 212 = $D0 'All first position on each of the lines
First line third position from the left would be
$83 or 131
Setup a loop adding to the constant and see if you can make something scroll.
Dave
Always wear safety glasses while programming.
Ah right (penny drops)cheers mackrackit.
Mmm, I'll see what I can do.Setup a loop adding to the constant and see if you can make something scroll.
Dave
I'm still working hard on this........!
I know what I need to do to get this to work (on paper as it were, I think I do anyway). I'm reading and GQQGLing like made to find and learn the programming skill I need to make it work.
If I can't crack it tonight I'll have to ask, tick, tick, tick....must dash.
Dave
Well I did try.......
It was getting the LCD to output B0 as a DEC number (LCD location for the smiley) rather than just B0 that foxed me. I tried DEC B0 and a few other things ("."B0..."B0") but still no good. I think (and hope) I was on the right lines though.
Here's my attempt:
DaveCode:BO VAR BYTE 'BYTE 0 Sets position for CHAR 128...+19 LC var byte 'Loop_Count Counts 0 to 19 'positions' across display LCDOut $FE,$60,$00,$0a,$0a,$00,$00,$11,$0e,$00 'Smiley Face Pause 500 MAIN For LC = 0 TO 19 PAUSE 500 LET BO = 128 + LC 'Start at LCD Top LHS then add 1 to move across display LCDOUT $FE,1,B0,0 'Output the 'Smiley Face' at location B0 PAUSE 500 Next LC GOTO MAIN
Reallllllly close
Made a couple smal changes
But there is still one small problem...Code:LCDOut $FE,$40,$00,$0a,$0a,$00,$00,$11,$0e,$00 'Smiley Face For LC = 0 TO 19 PAUSE 500 LET BO = 128 + LC 'Start at LCD Top LHS then add 1 to move across display LCDOUT $FE,1 LCDOUT $FE,BO,0 'Output the 'Smiley Face' at location B0 PAUSE 500 Next LC GOTO MAIN
I will leave that for you![]()
Dave
Always wear safety glasses while programming.
Bookmarks