Memorial day is 05/25/2015 – Orders will ship out on May 26th. There will not be any deliveries or shipping on Monday. Any order placed after 11am ET on Friday May 22nd will not start to ship out until Tuesday May 26th.

Nokia 7110 LCD to Arduino Help + Freebies
Moderators: adafruit_support_bill, adafruit

Nokia 7110 LCD to Arduino Help + Freebies

by madeintaiwan on Wed Jul 15, 2009 5:36 pm

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?option=com_content&view=article&id=46:nokia-7110-lib&catid=34:pic-micro&Itemid=53

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

http://forum.lcdinfo.com/viewtopic.php?t=632&highlight=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

by madeintaiwan on Thu Jul 16, 2009 11:35 am

Sorry, did I mention that I was giving away 4 or 5 LCD's for helping me get this working?
madeintaiwan
 
Posts: 8
Joined: Fri Jul 03, 2009 12:01 am

Re: Nokia 7110 LCD to Arduino Help + Freebies

by floresta on Fri Nov 26, 2010 11:28 am

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 | TOGGLE FULL SIZE
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
floresta
 
Posts: 221
Joined: Thu Jul 31, 2008 10:27 am
Location: Western New York, USA

Re: Nokia 7110 LCD to Arduino Help + Freebies

by sobachatina on Fri Feb 11, 2011 3:10 pm

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 | TOGGLE FULL SIZE
/*
// 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); //
}
sobachatina
 
Posts: 2
Joined: Fri Feb 11, 2011 3:05 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

by madeintaiwan on Fri Feb 11, 2011 3:49 pm

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
madeintaiwan
 
Posts: 8
Joined: Fri Jul 03, 2009 12:01 am

Re: Nokia 7110 LCD to Arduino Help + Freebies

by adafruit on Fri Feb 11, 2011 4:15 pm

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

adafruit
 
Posts: 11904
Joined: Thu Apr 06, 2006 4:21 pm
Location: nyc

Re: Nokia 7110 LCD to Arduino Help + Freebies

by sobachatina on Fri Feb 11, 2011 4:59 pm

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.
sobachatina
 
Posts: 2
Joined: Fri Feb 11, 2011 3:05 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

by harvey11 on Wed Dec 21, 2011 1:23 am

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.
harvey11
 
Posts: 3
Joined: Tue Dec 20, 2011 7:59 am