Interfacing Mega2560 with Nokia 5110

Hi, I'm not sure if this is a repost, but I thought I'd give it a try (I've looked through past posts but didn't find any definite answers to my question, though there were similar posts).

I am trying to interface an Arduino Mega2560 with a Nokia 5110 Graphic LCD. As far as I know, the digital outputs for the Arduino put out 5V and the controller for the LCD accepts 3.3V.

Does anyone know if there is a way for the digital outputs to send out 3.3V instead of 5V. I would prefer not to use level shifters or any other kinds of IC's. I've looked through the datasheet for the ATmega2560 and can't find any kind of register that would set the output voltages. Any suggestions?

Thanks in advance.

Put all the outputs thru resister dividers.
Vout = VinR2/(R1+R2). The Arduino supplies Vin.
R1 connects to arduino output pin & R2, other side of R2 is ground.
Vout is the junction of R1 & R2.
Select R1+R2 so that Vin/(R1+R2) is under 40 mA - say 20mA.
Vin/(R1+R2) = .02A
Vin/.02 = R1+R2
5/.02 = 250 = R1+R2
Next,
Vout = Vin
R2/(R1+R2)
Vout/Vin = R2/(R1+R2)
0.66R1+0.66R2 = R2
0.66R1=R2-0.66R2
R1=0.34R2/0.66
R1=0.51R2
Subbing in, 0.51R2+R2 = 250
1.5R2=250
R2=166.7
R1=1/2R2 = 83
Using standard values, R1 = 82 ohms & R2 =168
Thus Vout = 5V168/(82+168) = 3.36V
Power rating: P = V^2/R
3.36
3.36/168 = 67mW
1.64*1.64/82 = 32mW
so 0.250W parts will do fine.

You can get resistor networks so all the parts are in 1 package.

Or isn't this what you meant?

Thanks for the response. I was actually thinking about doing it this way, as well. Ultimately, though, I would like to save some PCB real estate, which is why I didn't want to use any IC's. This will most likely be the best (and easiest) way to solve my problem if I can't do it on chip.

Thanks for the help!

You can get resistor networks in SIP packages also, which will take up very little room.

The other option is to rework your mega to run on 3.3V and at lower frequency, say 8MHz.

Do you know how to make it work at 3.3V? Looking at the datasheet for the ATmega2560 16AU, I actually question if it can be done, because it says it can only be run off voltages between 4.5V and 5.5V.

Also, on page 17 of the datasheet for the screen, it says that the input current should be between -10mA and 10mA, so I should probably switch the resistor values accordingly, huh?

Looks like you're correct - 34.5 does say the 16MHz version is ony 4.5-5.
So add the voltage dividers, or replace the processor & crystal with 8MHz parts so you can run at lower voltages.
Or get a 3.3V Promini from gravitech.us if you're not going to use all the IO the Mega offers ...