Using CodevisionAVR in the past, it has been great to use the LCD library to interface with an LCD. When this is not so great is if you have a non-standard setup and wish to connect the LCD to the AVR across different ports. I have this issue with my next project – a LCD interface for other microcontrollers. I am going to use the Tiny2313 and it can accept commands via either serial or i2c interface. The interface will be selected by 2 input lines (configured by jumpers). These 2 input lines will also configure the serial communication speed if it is used. The one issue I have come across so far is that the USI pins and serial pins are on separate ports and will need to be available. This does not leave a full port for the LCD interface, requiring the LCD data lines (4 pins) and the control lines (3 pins) will have to span ports. The upshot of this is that I cannot use the built in LCD library in CodevisionAVR. This is what has lead me down the path of programming the AVR on my OS X machine.
The google gods have guided me to this site http://winavr.scienceprog.com/example-avr-projects/avr-4-bit-lcd-interface-library.html which is pretty much exactly what I’m looking for.