The 5V alphanumerical LCDs like 2004, 1602, etc. are usually can be run with 3.3V power with the only exception: they need a negative voltage for the contrast pin V0 up to -1.5V. The LCD boards usually have unpopulated PCB arrangements to provide such a negative voltage, and they can be populated like that -- see in the bottom an IC, capacitors C3 and C4, and resistor R6:
Here the IC is the charge pump like ICL7660 or similar with two capacitors C3 and C4 of 10uF (electrolytic or ceramic) and resistor R6 of 2.2k. A 10k variable resistor is to be connected between V0 and ground.
I think, however, that it's better to set up the contrast control at the MCU board and keep the LCD board intact, since that will let easily switch between different LCDs without any modifications of them. Besides, the variable resistor can be replaced with a programmatic contrast control as suggested below.
The contrast voltage -- from small positive values up to -2.6V -- is controlled by PWM from, say, ATmega328's Timer 0 (pins 5 or 6; function analogWrite(<pin>, <value>) can be used), which is anyway employed for millis() and normally is not supposed to be used for anything else.
The PWM is filtered by the low-pass filter and inverted by the first transistor (on the left), which maps the PWM duty cycle from 0 to 100% to voltage from around 0V to -2.6V on its collector; the second transistor is just an emitter follower preventing the LCD load (V0) from disturbing the voltage setting.
Any PNP transistors can be used, and those in the schematic are presented just as examples.
I use them with a backpack. I run it on 5V but use 3.3K pull up resistors to the 3V3 power. They work fine. The backpack is less then a buck and attaches directly to the display.
@ gilshultz, you will need a contrast-control variable resistor exposed to the user; my approach suggests using a programmatic contrast control by something like
analogWrite(5, 125);
called, say, from the setting menu.
Besides, the backpack does not provide the backlight control.
Yes, I am aware of that. However, imagine a consumer who has to reach this potentiometer through a hole (?) in the device housing with a little screwdriver in order to adjust the contrast. I don't think every consumer has a little screwdriver.
If you have to adjust it all the time there is a fault in the design. I have some that have run over 6 years without adjustment. I normally set them and forget them. If the contrast changes it is generally because the 5V has changed. They do make shaft extensions that fit these pots, I am not sure if it was a custom or off the shell part.
Backlighting controls brightness of the display, contrast is the difference in brightness seen between the segments and background. If you want to change brightness you would control the backlight LED, probably with PWM.