avrlcd.c contains code to use a standard 14-pin LCD based on the HD44780 with AVR MCUs. Compile and program using an STK500 with make program_avrlcd Line 9 of Makefile is MCU=at90s8515 and sets the target MCU Line 12 of Makefile is PORT=/dev/ttyS0 and sets the output port that the STK500 connects to. avrlcd.c has only a few lines you need to be concerned with: - wiring is defined on lines 25-38 - Line 53 is #define AVR_FREQ 368000 and defines the AVR clock rate which is important for proper timing. - Lines 77-81 are #define LCD_DATA_DDR DDRA #define LCD_DATA PORTA #define LCD_DATA_IN PINA #define LCD_CTRL_DDR DDRB #define LCD_CTRL PORTB and define the output ports. - main() contains the most basic of usage examples NOTE: This code takes up a couple KB of your AVR Flash. The GNU AVR Toolchain does not do bounds checking when you program a MCU. If you ever get improper output on your LCD, you either have an incorrectly defined AVR_FREQ, at some point you write to the LCD's data and/or control lines with your code, or your program plus the LCD code take up more flash than the AVR has. This is a real possibility if you use any math functions (e.g., pow(x, y) takes up about 5 KB of space)