Nokia 7110 LCD to Arduino Help + Freebies

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
madeintaiwan
 
Posts: 8
Joined: Fri Jul 03, 2009 12:01 am

Nokia 7110 LCD to Arduino Help + Freebies

Post by madeintaiwan »

Hello all,

My mother was raised catholic so I'm able to make confession by default, I think.
I bought a dozen Nokia 7110s off of you-know-where in an effort to a. save dough and
b. punish myself as there is no tutorial on how to connect an Arduino to a 7110 easily.
So my plan is to offer in exchange for helping to put together a tutorial, four of five of these LCD's gratis.

This is what I have found so far:

http://home.broadpark.no/~rrbakke/lcd.html

A link to someone who's got an 7110 connected to a ATMEGA163,
I have looked through the schematic he posted and have tried to match up as best as I can
the pin connections between that and the schematic for an Arduino Duemilanove
with an ATMEGA328. There are some discrepancies however, the pins he lists as "C1-C5" on the
163 I don't know what that corresponds to on the 328.

Image

I have proposed connecting the LCD to the Arduino thusly, perhaps with the same resistor configuration as is stated above.

Image

I have been through a few other links notably:

http://atomsofttech.info/index.php?opti ... &Itemid=53

http://serdisplib.sourceforge.net/ser/sed1565.html

http://forum.lcdinfo.com/viewtopic.php? ... light=7110

And gleaned some useful advice.

I have been able to get the led's working so far and one black square appear momentarily,
which may mean i have one broken one now.

I have pictures of my lcd with it's soldered ribbon cable to my small breadboard if need be.

Nate

I am lost when it comes to code for this too.

madeintaiwan
 
Posts: 8
Joined: Fri Jul 03, 2009 12:01 am

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by madeintaiwan »

Sorry, did I mention that I was giving away 4 or 5 LCD's for helping me get this working?

User avatar
floresta
 
Posts: 223
Joined: Thu Jul 31, 2008 10:27 am

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by floresta »

This is what I have found so far:

http://home.broadpark.no/~rrbakke/lcd.html
I have been through a few other links notably:

http://atomsofttech.info/index.php?opti ... &Itemid=53
Bad links.

Code: Select all

the pins he lists as "C1-C5" on the 163 I don't know what that corresponds to on the 328.
This would probably be "PC1 - PC5" (Port C bit1 - Port C bit 5). This corresponds to Arduino Analog pins 1-5 which can be implemented as digital pins 15-19. See http://arduino.cc/en/Reference/Board?from=Guide.Board. A better choice might be to use Port B on the 328.
Sorry, did I mention that I was giving away 4 or 5 LCD's for helping me get this working?
The gift would have to precede the help to be most effective.

Don

sobachatina
 
Posts: 2
Joined: Fri Feb 11, 2011 3:05 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by sobachatina »

This post is pretty old. I'm sure you must have solved your problem by now. If you have I would like to hear about it. In particular, if you found a connector for these.
If you haven't gotten it working I have a bit more info:

I found this link:
http://www.module.ro/nokia_7110.html

This fellow got the lcd working with a PIC. The code is in PIC assembly and is awful to read.
More importantly he includes the driver part number: SED1565 and you can easily look up the datasheet.
That along with his pinout should be enough to get it working.

Additionally, I have translated his PIC assembly to C but I haven't had a chance to test it yet. I'll post an update when I get it working.

Code: Select all

/*
// rb6,rb7     sclock,sdata
// ra0,ra1,ra2,ra3	d/C,Reset,Vccmd,SCE
// port definitions
#DEFINE sclk	PORTB,6
#DEFINE sdta	PORTB,7
#DEFINE dataOrCommand	PORTA,0
#DEFINE reset	PORTA,1
#DEFINE enable	PORTA,3
*/

/* SED1565 */

/* Command or Data pin */
#define LCD_COMMAND false
#define LCD_DATA true

/* Command set */
#define LCD_OFF                  0xAE
#define LCD_ON                   0xAF

#define LCD_PAGE_ADDR            0xB0 // [0 - 8]
#define LCD_START_LINE_ADDR      0x40 // [0 - 63]

#define LCD_COL_ADDR_UPPER       0x11 // [0 - F]
#define LCD_COL_ADDR_LOWER       0x0  // [0 - F]
#define LCD_ADC_SELECT_NORMAL    0xA0
#define LCD_ADC_SELECT_REVERSE   0xA1 // Reverse RAM address to driver output

#define LCD_DISPLAY_ALL_OFF      0xA4
#define LCD_DISPLAY_ALL_ON       0xA5 // When LCD is off this is sleep mode

#define LCD_DISPLAY_NORMAL       0xA6 
#define LCD_DISPLAY_REVERSE      0xA7 // Swap lit/unlit without changing RAM 

#define LCD_BIAS_1_9             0xA2 // Set required voltage bias ratio
#define LCD_BIAS_1_7             0xA3

#define LCD_READ_MODIFY_WRITE    0xE0 // Enter repeat mode, pointer returns to previous col on end
#define LCD_END                  0xEE // End repeated portion

#define LCD_RESET                0xE2 // Reset many command vars. See datasheet

#define LCD_POWER_NONE           0x28
#define LCD_POWER_BOOSTER        0x2C // Or together to enable options
#define LCD_POWER_VREG           0x2A
#define LCD_POWER_VFOLLOW        0x29
#define LCD_POWER_ALL            LCD_POWER_BOOSTER | LCD_POWER_VREG | LCD_POWER_VFOLLOW

#define LCD_V5_VREG              0x20 // [0 - 7]

#define LCD_VOLUME_MODE          0x81 // followed by a command [1 - 3F]
#define LCD_VOLUME_UNUSED        0x20

#define LCD_STATIC_MODE          0xAD
#define LCD_STATIC_OFF           0x0
#define LCD_STATIC_ON_1_SEC      0x1 // Blink on 1 second interval
#define LCD_STATIC_ON_HALF_SEC   0x2 // Blink on 0.5 second interval
#define LCD_STATIC_ON            0x3 // Constant on

#define LCD_NOP                  0xE3

#define LCD_COM_OUTPUT_NORMAL    0xC0
#define LCD_COM_OUTPUT_REVERSE   0xC8

void initLCD(void)
{
	wait();
	reset();

	sendCommand(LCD_DISPLAY_NORMAL);
	sendCommand(LCD_BIAS_1_7); // 1/7 bias
	sendCommand(LCD_ADC_SELECT_REVERSE); // Write to RAM backwards
	sendCommand(LCD_COM_OUTPUT_NORMAL);
	sendCommand(LCD_V5_VREG + 2);
	sendCommand(LCD_VOLUME_MODE);
   sendCommand(LCD_VOLUME_UNUSED);
	sendCommand(LCD_POWER_ALL);
	sendCommand(LCD_NOP); // Is this really needed here?
	sendCommand(LCD_START_LINE_ADDR + 0); // set start address
	sendCommand(LCD_ON);
	sendCommand(LCD_DISPLAY_ALL_ON); // lcd all on

	wait();
	wait();

	sendCommand(LCD_DISPLAY_ALL_OFF); // lcd normal
}

void sendData(data)
{
   dataOrCommand = LCD_DATA;
	enable = false; // chip is active
	sendByte(data);
	enable = true;

	return;
}

void sendCommand(command)
{
   dataOrCommand = LCD_COMMAND;
	enable = false;	
	sendByte(command);
	enable = true;

	return;
}

void reset(void)
{
   enable = true;
	wait();
	reset = true; // does this need to be cleared sometime?
	wait();

	return;
}

// write byte to sdta
void sendByte(byte)
{
   for (int i = 0; i < 8; ++i)
   {
      sclk = false;
      sdta = false;

      if (byte & 0x80) // Send MSB
         sdta = true;
      sclk = true;

      byte <<= 1; //rlf afisaj,F
   }

	return;
}

void setLCDColumn(int column)
{
   char low  = (column & 0xF);
   char high = column >> 4;

   sendCommand(LCD_COL_ADDR_UPPER + high);
   sendCommand(LCD_COL_ADDR_LOWER + low);
}

// Clear the screen?
void clearLCD(void)
{
   int page = LCD_PAGE_ADDR;
   for (int row = 0; row < 9; ++row) // last line it is from page 9-th
   {
      sendCommand(page); // is this needed? Docs say it auto increments

      // Only middle 96 of 132 columns are connected. Start on col 18
      setLCDColumn(0x12);

      sdta = false;

      for (int col = 0; col < 96; ++col)
      {
         dataOrCommand = true;
         enable = false; 

         for (int k = 0; k < 8; ++k)
         {
            sclk = false;
            sclk = true;
         }
         enable = true; 		
      }

      ++page;
   }
   
   return;
}

/* Wait for a little bit. Replace this with an actual timer to save power. */
void wait(void)
{
   for (int i = 0; i < 0x07; ++i)
   {
      for (int j = 0; j < 0x32; ++j)
      {
         for (int k = 0; k < 0xF0; ++k);
      }
   }
	
   return;
}

void main(void)
{
      initLCD();
      clearLCD();
      sendCommand(LCD_PAGE_ADDR + 0); // write on first page
      // Center 30 cols of text
      setLCDColumn(51);

      /* EPSON */
      sendData(0x7F); // 1111111
      sendData(0x49); // 1  1  1
      sendData(0x49); // 1  1  1
      sendData(0x49); // 1  1  1
      sendData(0x49); // 1  1  1
      sendData(0x00); // 
      sendData(0x7F); // 1111111
      sendData(0x09); //    1  1
      sendData(0x09); //    1  1
      sendData(0x09); //    1  1
      sendData(0x06); //     11
      sendData(0x00); //
      sendData(0x26); //  1  11
      sendData(0x49); // 1  1  1
      sendData(0x49); // 1  1  1
      sendData(0x49); // 1  1  1
      sendData(0x32); //  11  1
      sendData(0x00); //
      sendData(0x3E); //  11111
      sendData(0x41); // 1     1
      sendData(0x41); // 1     1
      sendData(0x41); // 1     1
      sendData(0x3E); //  11111
      sendData(0x00); //
      sendData(0x7F); // 1111111
      sendData(0x06); //     11
      sendData(0x08); //    1
      sendData(0x30); //  11
      sendData(0x7F); // 1111111
      sendData(0x00); //
}

madeintaiwan
 
Posts: 8
Joined: Fri Jul 03, 2009 12:01 am

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by madeintaiwan »

While it is an oldy, it's still a goody. Would you like a couple of these LCDs to mess around with?

I'm still trying to get them operational and am glad for the info you sent, thanks.

-Nate

adafruit
 
Posts: 12151
Joined: Thu Apr 06, 2006 4:21 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by adafruit »

we will have a library + working code for nokia 96x48's (not 7110 but probably similar) in a few days if you're willing to chill over the weekend

sobachatina
 
Posts: 2
Joined: Fri Feb 11, 2011 3:05 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by sobachatina »

Madeintaiwan-

I have three of the LCD's so I won't demand the shipping of you. I am planning on working on this over the weekend and I'll let you know how it goes for me.

If you find a good way to make a connector for them let me know. Soldering to those tiny pins is a pain and not very modular.

harvey11
 
Posts: 3
Joined: Tue Dec 20, 2011 7:59 am

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by harvey11 »

My mother was raised catholic so I’m able to make confession by default, I think.
I bought a dozen Nokia 7110s off of you-know-where in an effort to a. save dough and
b. punish myself as there is no tutorial on how to connect an Arduino to a 7110 easily.
So my plan is to offer in exchange for helping to put together a tutorial, four of five of these LCD’s gratis.

This is what I have found so far:

http://home.broadpark.no/~rrbakke/lcd.html

A link to someone who’s got an 7110 connected to a ATMEGA163,
I have looked through the schematic he posted and have tried to match up as best as I can
the pin connections between that and the schematic for an Arduino Duemilanove
with an ATMEGA328. There are some discrepancies however, the pins he lists as “C1-C5″ on the
163 I don’t know what that corresponds to on the 328.

I have proposed connecting the LCD to the Arduino thusly, perhaps with the same resistor configuration as is stated above.

I have been through a few other links notably:

http://atomsofttech.info/index.php?opti ... pItemid=53

http://serdisplib.sourceforge.net/ser/sed1565.html

http://forum.lcdinfo.com/viewtopic.php? ... light=7110

And gleaned some useful advice.

I have been able to get the led’s working so far and one black square appear momentarily,
which may mean i have one broken one now.

I have pictures of my lcd with it’s soldered ribbon cable to my small breadboard if need be.

User avatar
vikasdev
 
Posts: 1
Joined: Sun Aug 06, 2017 6:58 am

Re: Nokia 7110 LCD to Arduino Help + Freebies

Post by vikasdev »

hi

SugarAddict designed this BoosterPack based on a Nokia 7110 LCD screen with 96 x 64 pixels and backlight.

It was sold at the 43oh Store for USD4.30, the same price as the LaunchPad. Unfortunately, the batch is entirely sold.

It uses software SPI and only requires 6 pins P2_0 through P2_5, keeping pins P1_6 and P1_7 available for hardware SPI or hardware I²C.

Below, examples of the screen used as a thermometer, based on the Nokia 7110 LCD

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”