PDA

View Full Version : Display graphical font using Nokia3310LCD



tacbanon
- 15th April 2012, 14:29
Hi everyone!
I managed to run a demo application by Steve using the NokiaGLCD wrapper(http://www.picbasic.co.uk/forum/showthread.php?t=327&page=7&highlight=3310+Nokia).
Here is the sample code I'm uisng..


'--------------------------------< HelloWorld_16F877 >--------------------------------------
'
' File name : HelloWorld_16F877.pbp
' Version : 1.0
' Company : Mister E
' Programmer : Steve Monfette
' Date : JULY 27, 2011
' Device : PIC16F877 @20MHz
'
'-------------------------------------------------------------------------------------------

'---------------------------< Project description >-----------------------------------------
'
' Basic code example to display the usual Hello World on the NOKIA GLCD.
' This also show how to declare/use some of the GLCD_NOKIA.PBP Defines
'
' Compile: 1057 words
'-------------------------------------------------------------------------------------------

'
' Pic Configuration
' =================
'@ __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _LVP_OFF
DEFINE OSC 20
'
' Hardware assignment & configuration
' ===================================
'
' GLCD
' ----
' those are not needed as they're exactly the default one,
' but it show how to use/declare them.
DEFINE GLCD_SCE PORTB,4
DEFINE GLCD_RES PORTB,3
DEFINE GLCD_DC PORTB,5
DEFINE GLCD_SDO PORTB,6
DEFINE GLCD_CLK PORTB,7
DEFINE GLCD_CONTRAST 65
DEFINE GLCD_TEMPERATURE_COEFFICIENT 2
DEFINE GLCD_BIAS 3
'
' PORT
' ----
TRISB = 0 ' By default the Driver will use PORTB... all output to these then
PORTB = 0 ' clear the output/reset the GLCD


'
' Includes
' ========
INCLUDE "..\Include\GLCD_NOKIA.PBP" ' Plug the Nokia Driver/Wrapper in here
'
'------------------------------< Main program >---------------------------------------------
'
ASM
GLCD_CLS ; Clear the screen (if not initialized yet, it will do automatically)
GLCDOUT_AT?STR 0,0,"Hello World!" ; Show String on Line 0
ENDASM


Here: GOTO Here ' sit & spin
'
'-------------------------------------------------------------------------------------------

My question is how can I display a font like the one below(please see attached image) this the hex equivalent...
$08, $E0, $00, $E2, $01, $EE, $02, $62, $02, $06, $02, $0E, $03, $FC, $01, $F0, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; for letter m
Hope anyone can give me a hint on this.

Thanks in advance,
tacbanon
6406

mister_e
- 15th April 2012, 18:54
Open the Include and check out ADDCUSTOMCHAR macro. That should be easy enough for a single character. If you want to build a whole new font set, then check the TABLE_SYMBOLS etc etc sections.

Refer to HelloWorld_2_16F877.pbp

mister_e
- 16th April 2012, 03:03
Also check out the Readme.txt file located in ...NokiaGlcd\Document folder. There's a short example how to use ADDCUSTOMCHAR macro.

tacbanon
- 16th April 2012, 13:07
Thanks Steve for the response, I'm still figuring it out how it works(by trial and error :)) and learn it in the process..I will post here my result.

regards,
tacbanon

tacbanon
- 17th April 2012, 16:19
I'm still stuck with this simple code I modified from Steve's NokiaGlcd examples..


DEFINE GLCD_CHAR_IN_EEPROM ' store/read character/lookuptable to/from EEPROM
DEFINE GLCD_STRING_IN_EEPROM ' store/read string to/from EEPROM
DEFINE GLCD_USE_SPECIFIC_CHARACTER ' We will define our own set of character to be used
INCLUDE "..\Include\GLCD_NOKIA.PBP" ' Plug the Nokia Driver/Wrapper in here
ASM
CHARTABLESTART
ADDCUSTOMCHAR CHR_CUSTOM_0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ADDCHAR 'e'
ADDCHAR 'l'
ADDCHAR 'o'
ADDCHAR 'w'
ADDCHAR 'r'
ADDCHAR 'd'
ADDCHAR '!'
CHARTABLEEND
ENDASM

'
'------------------------------< Main program >---------------------------------------------
'
ASM
GLCD_CLS ; Clear the screen (if not initialized yet, it will do automatically)
GLCDOUT_AT?STR 0,0,"Hello World!" ; Show String on Line 0
GLCDOUT_AT?STR 0,1,"Wello World!" ; Show String on Line 1
GLCDOUT_AT?STR 0,2,"j" ; Show String on Line 2

ENDASM


Here:


GOTO Here ' sit & spin


as I understood characters not defined within CHARTABLESTART and CHARTABLEEND will not be displayed...but I'm still having trouble displaying this character (j) 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
any idea what I'm missing?

regards,
tacbanon

6414

mister_e
- 18th April 2012, 01:12
read again the readme.txt file example ...

you have 2 extra argument in ADDCUSTOMCHAR, here you should have
ADDCUSTOMCHAR CHR_CUSTOM_0, 0x04, 0x00, 0x00, 0x00, 0x00
not
ADDCUSTOMCHAR CHR_CUSTOM_0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

tacbanon
- 18th April 2012, 01:47
it compiled with no problem now, but custom character won't display on the lcd, probably I'm still doing it wrong..:(
I'm expecting a letter 'j' in the 3rd row.


DEFINE GLCD_CHAR_IN_EEPROM ' store/read character/lookuptable to/from EEPROM
DEFINE GLCD_STRING_IN_EEPROM ' store/read string to/from EEPROM
DEFINE GLCD_USE_SPECIFIC_CHARACTER ' We will define our own set of character to be used
INCLUDE "..\Include\GLCD_NOKIA.PBP" ' Plug the Nokia Driver/Wrapper in here
ASM
CHARTABLESTART
ADDCUSTOMCHAR CHR_CUSTOM_0, 0x04, 0x00, 0x00, 0x00, 0x00
ADDCHAR 'e'
ADDCHAR 'l'
ADDCHAR 'o'
ADDCHAR 'w'
ADDCHAR 'r'
ADDCHAR 'd'
ADDCHAR '!'
CHARTABLEEND
ENDASM

'
'------------------------------< Main program >---------------------------------------------
'
ASM
GLCD_CLS ; Clear the screen (if not initialized yet, it will do automatically)
GLCDOUT_AT?STR 0,0,"Hello World!" ; Show String on Line 0
GLCDOUT_AT?STR 0,1,"Wello World!" ; Show String on Line 1
GLCDOUT_AT?STR 0,2,"j" ; Show 'j' on Line 2

ENDASM


Here:


GOTO Here ' sit & spin

I appreciate the time for helping out.

regards,
tacbanon
6416

mister_e
- 18th April 2012, 04:37
You'll see a J once you'll add it in the character you want to use.... no coincidence why you don't have the H nor the W either ;)

Again it's all explained in the Readme.txt file...

tacbanon
- 18th April 2012, 07:11
I'm trying to display a 10x11 font size "w" but not displaying right to the lcd...(sorry if I'm very slow catching up :()


DEFINE GLCD_CHAR_IN_EEPROM ' store/read character/lookuptable to/from EEPROM
DEFINE GLCD_STRING_IN_EEPROM ' store/read string to/from EEPROM
DEFINE GLCD_USE_SPECIFIC_CHARACTER ' We will define our own set of character to be used

INCLUDE "..\Include\GLCD_NOKIA.PBP" ' Plug the Nokia Driver/Wrapper in here
ASM

CHARTABLESTART
ADDCHAR 'T'
ADDCHAR 'E'
ADDCHAR 'X'
ADDCHAR 'a'
ADDCHAR 'b'
ADDCHAR '!'
ADDCHAR CHR_NUMBERS
ADDCUSTOMCHAR CHR_CUSTOM_0,0x04,0x88,0x01,0x48,0x01
ADDCUSTOMCHAR CHR_CUSTOM_1,0x28,0x01,0x18,0x01,0x00
ADDCUSTOMCHAR CHR_CUSTOM_2,0x00,0x00,0x00,0x00,0x00
ADDCUSTOMCHAR CHR_CUSTOM_3,0x00,0x00,0x00,0x00,0x00
ADDCUSTOMCHAR CHR_CUSTOM_4,0x00,0x00,0x00,0x00,0x00
CHARTABLEEND

ENDASM

'
'------------------------------< Main program >---------------------------------------------
ASM
GLCD_CLS ; Clear the screen (if not initialized yet, it will do automatically)
GLCDOUT_AT?CHR 1,0,CHR_CUSTOM_0
GLCDOUT_AT?CHR 2,1,CHR_CUSTOM_1 ; Show String on Line 0
GLCDOUT_AT?CHR 3,2,CHR_CUSTOM_2
GLCDOUT_AT?CHR 4,3,CHR_CUSTOM_3
GLCDOUT_AT?CHR 5,4,CHR_CUSTOM_4
ENDASM




Here:


GOTO Here ' sit & spin
'

6417

mister_e
- 18th April 2012, 23:54
'
' Includes
' ========
DEFINE GLCD_CHAR_IN_EEPROM ' store/read character/lookuptable to/from EEPROM
DEFINE GLCD_STRING_IN_EEPROM ' store/read string to/from EEPROM
define GLCD_CHAR_6X8
DEFINE GLCD_USE_SPECIFIC_CHARACTER ' We will define our own set of character to be used
INCLUDE "..\Include\GLCD_NOKIA.PBP" ' Plug the Nokia Driver/Wrapper in here
ASM

CHARTABLESTART
ADDCHAR 'T'
ADDCHAR 'E'
ADDCHAR 'X'
ADDCHAR 'a'
ADDCHAR 'b'
ADDCHAR '!'
ADDCHAR CHR_NUMBERS
ADDCUSTOMCHAR CHR_CUSTOM_0,0x78,0x80,0x60,0x18,0x60,0x80 ;
ADDCUSTOMCHAR CHR_CUSTOM_1,0x78,0x00,0x00,0x00,0x00,0x00 ;
ADDCUSTOMCHAR CHR_CUSTOM_2,0x00,0x01,0x00,0x00,0x00,0x01 ;
ADDCUSTOMCHAR CHR_CUSTOM_3,0x00,0x00,0x00,0x00,0x00,0x00 ;
CHARTABLEEND

ENDASM

'
'------------------------------< Main program >---------------------------------------------
ASM
GLCD_CLS ; Clear the screen (if not initialized yet, it will do automatically)
GLCDOUT_AT?CHR 0,0,CHR_CUSTOM_0
GLCDOUT_AT?CHR 1,0,CHR_CUSTOM_1
GLCDOUT_AT?CHR 0,1,CHR_CUSTOM_2
GLCDOUT_AT?CHR 1,1,CHR_CUSTOM_3
GLCDOUT_AT?STR 5,6,"TEXT!"
ENDASM

tacbanon
- 19th April 2012, 16:49
Finally got it...thanks for the help. :)
6418

mister_e
- 20th April 2012, 00:44
Way cool :)

Thanks and Enjoy!

wjsmarine
- 23rd May 2014, 12:34
Hi Tacbanon,

Did you manage to create bigger fonts with Steve's program?

I see your last post shows the display with obvious different font but still within the 6x8 field. How does one make a larger font exceeding this area?

I'd appreciate your help and maybe a snippet of code if you've been successful. My aim is to make really big fonts (0-9, +, -, decimal point mid-height, C, F and degree symbol) in a 12x16 or 4 normal character size locations (7 chars per line, 3 lines) on the Nokia LCD using Steve's excellent wrapper. If it can't be done I can do other mapping but then lose Mister_e's utility.

Steve if you're around perhaps you'd like to add some comments also? All help appreciated.

Regards to all,
Bill

tacbanon
- 24th May 2014, 08:01
Hello Bill, sorry to tell you that I have not able to create a bigger fonts using Steve's GLCD...

Regards,
tacbanon