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);
}