best PIC for NOKIA LCD

macsoft

Member
Hi there!
I've been trying some picaxe pics on controlling NOKIA 5110 LCDs that use the Philips PCD8544 LCD driver.
I have some success with 18m2. I've tried some examples online like this one: http://homepage.ntlworld.com/c.lewis19/nokia.htm.
Problem is the lack of libraries, and the limited memory I can't even register the full set of characters with the 256k limit on eeprom.
Is there a better way using a 18m2 to work with these LCDs?
And if not, what would be the equivalent arduino chip (library capable) to use?

thank you
 

hippy

Ex-Staff (retired)
There is TABLE memory as well as EEPROM memory which can be used to hold bit map data for characters; for the 18M2+ that gives 768 bytes and, with 5 bytes per character, would allow for 153 individual characters to be defined. The data could also be held in external I2C EEPROM.
 

macsoft

Member
Great ideas and thanks in advance for the help.
the 20X2 idea is a good idea, i've found it in google before. But I would really like to keep this a one chip device if I could, to the external eeprom bumps with this concept also.
TABLE memory? I didn't know about that, I will research it thanks.

Also, in the program on the link, I understand storing the 5 bit chars spaced by a zero at eeprom like "EEPROM 6,(62,81,73,69,62,0,0,66,127,64,0,0,66,97,81,73,70,0,..."
how would I go for a practical way of calling each char?
the ideal idea would be like a library or sub like "writeTOlcd('Test 123 Test');" and make it go get each char from the eeprom (or table) memory.. Can this be done so each time i want to send text to the screen I can in a simple way?
thank you
 

srnet

Senior Member
There is code for the serial driver here;

http://www.picaxeforum.co.uk/showthread.php?21676-Mini-Morse-decoder-using-Nokia-5110-graphics-LCD

Just after the line;

Gosub InitialiseSerial ' Initialise background receive

A message is pulled from EEPROM and written direct to the LCD, so you can work out how the appropriate bit maps are loaded and sent to the LCD.

I did write code for the larger PCB shown above that wrote direct to the LCD hardware, but its hard work printing stuff on the screen.

With a serial LCD you can put stuff on screen with;

serout TXLCD, baudLCD, ("Count ",#count)

Whereas if you addressing the display directly you need to write code that sends out "C" , "0" etc, then converts numbers into ASCII and send those out as well.
 

hippy

Ex-Staff (retired)
Code:
For b0 = 0 To 12
  Lookup b0, ( "Test 123 Test" ), b1 : Gosub ShowB1
Next
The 'ShowB1' routine will do the actual mapping and send the bitmap pixels to the display. There are alternative code constructs to achieve the same, especially if you don't want to specify the length of the string but are willing to use a terminator -

Code:
Do
  Lookup b0, ( "Test 123 Test", 0 ), b1 : Gosub ShowB1
Loop Until b1 = 0
That can have the 'ShowB1' routine only output 'b1' if non-zero, reset 'b0' to zero when 'b1' is zero, or otherwise increments 'b0'.

The advantage of a dual PICAXE solution with a serial link, similar to using the AXE033 and AXE133 solutions but for a bitmap LCD, is that you can simply use something similar to ...

SerOut LCD, LCD_BAUD, ( "Test 123 Test" )
 

srnet

Senior Member
I have the direct drive code somewhere, the original routines were published by Hippy some time back as part of the 20X2 serial LCD code.

I modified it for direct drive by taking the serial routines out, and all the demo code does is write a stored message to LCD. There are routines to set column and row numbers.

Runs on a 28X2, 692 bytes including the table for character bit maps
 

westaust55

Moderator
There are some examples of code previously posted by forum members for the Nokia 3310 (eclectic for one) which sue the same gLCD controller chip
and various other Nokis displays by myself;
Have a look here as a starter:
http://www.picaxeforum.co.uk/showthread.php?20186-Nokia-1100-amp-2280-gLCD-modules
My code was written for a 40X1 but might still give you some ideas.

the bitmap data for the Uppercase characters, punctuation and digits 0 to 9 are all that will fit into 256 bytes of EEPROM
 
Last edited:
Top