LCD is freezing

hi im using a 1x8 character newhaven display http://www.newhavendisplay.com/index.php?main_page=product_info&cPath=2_76&products_id=2034 in my alarm clock that i made, but when ever it wants to it will freeze and not receive any new info from the arduino. the arduino still runs cause the alarm goes off, but the screen just stays where its at. im thinking maybe its cause of the 5v im giving it, cause it needs 3v. but i dont know how to turn 5v to 3v, cause i made my own pcb with just the atmega168 chip, and a 7805 voltage regulator. any ideas, maybe im feeding it too much info, too fast.

It could easyli be the 5V.

You should get a 3v voltage regulator and "make 3V" from your 5V supply.

Just gogle 3v voltage regulator, it's not hard to implement.

What you want is a "Logic Level Converter"

http://www.sparkfun.com/commerce/product_info.php?products_id=8745 they have a schematic, or you can probably find other ways of building them.

Is your atmega168 running at 16mhz or 8mhz? I think at 8mhz you can power it with 3 volts

If you're just telling the LCD things and not reading anything back, sticking in diodes to drop the voltage on all of the datalines and power to the lcd might be worth a look.

You have a 3.3v device. It's power needs to be 3.3v at minimum. You will need a level shifter.

One of the devices we make at work was designed using a 3.3V logic system but the engineer picked a 5 volt LCD device. After his playing with the logic in the unit trying to compensate for corruption issues for over a year the project was yanked from him and another engineer added a level shift board to it. Nmad nice rock solid display now, contrast is better. It is a 240x128 graphic LCD.