jag kar koppat såhär men trimpot och grejer, om man bortser från LPT-porten:

min kod ser ut såhär:
main.c:
Kod: Markera allt
#include <avr/delay.h>
#include "lcd.h"
#define F_CPU 1000000
#define START_DELAY 1000
int main()
{
    _delay_ms(START_DELAY);
	init_display();
	
	while(1){
		printchar('A');
		printchar('l');
		printchar('s');
		printchar('k');
		printchar('a');
		printchar('l');
		printchar('l');
		printchar('a');
		printchar('r');
		printchar('e');
		printchar('A');
		printchar('l');
		printchar('s');
		printchar('k');
		printchar('a');
		printchar('l');
		printchar('l');
		printchar('a');
		printchar('r');
	}
	return 0;
}
Kod: Markera allt
#define DELAY 1000
#define CLR_DELAY 1000
void inline strobe()
{
	PORTD |= 0x01;         // E=1 ger puls
	_delay_ms(1000);  // Väntar då E regisreras
	PORTD &=~0x01;		  // E=0 avslutar puls
}
void clear_display()
{
	PORTD &=~0x02; 		  // RS=0 (instruktioner)
	PORTB=0b00000001; 		   
	strobe();
	_delay_ms(10000);
}
void init_display()
{
	DDRD=0x03;		  // Sätter port D till utport
	DDRB=0xFF;		  // Sätter port B till utport
	
	PORTD &=~0x02; 		  // RS=0 (instruktioner)
	PORTB=0b00001111; // Instruktionen för att starta 
	strobe();
	_delay_ms(10000);	  
	PORTB=0b00111000; // Instruktionen för function set 
	strobe();
	_delay_ms(10000);	 	  
	clear_display(); // Instruktion för att cleara display	   
}
void move_cursor(unsigned char adress)
{
	PORTD &=~0x02; 		  // RS=0 (instruktioner)
	PORTB=adress;	 	
	strobe();
	_delay_us(DELAY);
}
void printchar(unsigned char c)
{
	PORTD |= 0x02; 		  // RS=1 (data)
	PORTB=c;	 	 
	strobe();
	_delay_ms(DELAY);	 
}
				