Nokia 7110 LCD to Arduino Help + Freebies

by madeintaiwan on Wed Jul 15, 2009 4: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: Thu Jul 02, 2009 11:01 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

by madeintaiwan on Thu Jul 16, 2009 10: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: Thu Jul 02, 2009 11:01 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

by floresta on Fri Nov 26, 2010 10: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
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 9:27 am
Location: Western New York, USA

Re: Nokia 7110 LCD to Arduino Help + Freebies

by sobachatina on Fri Feb 11, 2011 2: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
/*
// 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 2:05 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

by madeintaiwan on Fri Feb 11, 2011 2: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: Thu Jul 02, 2009 11:01 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

by adafruit on Fri Feb 11, 2011 3: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
User avatar
adafruit
 
Posts: 11508
Joined: Thu Apr 06, 2006 3:21 pm
Location: nyc

Re: Nokia 7110 LCD to Arduino Help + Freebies

by sobachatina on Fri Feb 11, 2011 3: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 2:05 pm

Re: Nokia 7110 LCD to Arduino Help + Freebies

by harvey11 on Wed Dec 21, 2011 12: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 6:59 am