Her er linken til første forsøk på å drive LCD fra atmega8
http://www.youtube.com/watch?v=yufM8AijHRo
Kvaliteten på videoen ble heller skrøpelig, det samme vil vel
mange si om programmet ( C koden ) jeg skrev.
Til de som kan dette langt bedre, kom med råd og tips.
Koden er litt sånn bit for bit, byte for byte.
Hvis man klarer lære sen det enkle, er muligheten for å lære seg
litt mere kompliserte ting større.
Displayets data innganger er koblet rett mot PORTD, R/W, RS og E er koblet
til PIN0, PIN1 og PIN2 ( i samme rekkefølge ) på PORTC
Displayet som brukes kan finnes hos EBAY, søkefrase HD44780
HD44780 er navnet på standarden som brukes til å sende informasjonen.
Nyttige linker:
http://www.dinceraydin.com/djlcdsim/djlcdsim.html
http://www.wekers.com.br/ml/datasheet/Display_162A.pdf
http://joshuagalloway.com/lcd.html
http://www.youtube.com/watch?v=yufM8AijHRo
Kvaliteten på videoen ble heller skrøpelig, det samme vil vel
mange si om programmet ( C koden ) jeg skrev.
Kode
#define F_CPU 16000000 //Klokkefrekvens #include <avr/io.h> #include <util/delay.h> //Header for _delay_ms() int main(){ DDRD = 0xFF; DDRC = 0xFF; //Sett alle pinner på PORT() til utganger PORTD = 0xFF; PORTC = 0x00; int tid = 10; //Ventetid mellom tegn int tell = 0; PORTD = 56; //sett 2 linjer PORTC = 4; _delay_ms(tid); PORTC = 0 ; _delay_ms(tid); tell++; while(1){ PORTC = 0; PORTD = 0; _delay_ms(tid); PORTD = 15; //Slå på display PORTC = 4; //E _delay_ms(tid); PORTD = 15; PORTC = 0; _delay_ms(tid); PORTC = 2; //RS=1 _delay_ms(tid); PORTD = 65; //A PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 116; //t PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 109; //m PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 101; //e PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 108; //l PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 254; //space PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 65; //A PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 84; //T PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 109; //m PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 101; //e PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 103; //g PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 97; //a PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 56; //8 PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 192; //linje 2 PORTC = 4; _delay_ms(tid); PORTC = 0 ; _delay_ms(tid); PORTD = 38; //& PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 254; //space PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 76; //L PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 67; //C PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 68; //D PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 254; //space PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 72; //H PORTC = 6; _delay_ms(tid); PORTC = 2 ; PORTD = 68; //D PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 52; //4 PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 52; //4 PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 55; //7 PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 56; //8 PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 48; //0 PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(tid); PORTD = 254; //space PORTC = 6; _delay_ms(tid); PORTC = 2 ; _delay_ms(200); tell = 0; while(tell < 15){ PORTD = 24; //space PORTC = 4; _delay_ms(tid); PORTC = 0 ; _delay_ms(tid); tell++; } tell =0; while(tell < 15){ PORTD = 28; //space PORTC = 4; _delay_ms(tid); PORTC = 0 ; _delay_ms(tid); tell++; } tell =0; PORTD = 1; //D PORTC = 0; _delay_ms(tid); PORTC = 4 ; _delay_ms(200); } }
Koden er litt sånn bit for bit, byte for byte.
Hvis man klarer lære sen det enkle, er muligheten for å lære seg
litt mere kompliserte ting større.
Displayets data innganger er koblet rett mot PORTD, R/W, RS og E er koblet
til PIN0, PIN1 og PIN2 ( i samme rekkefølge ) på PORTC
Displayet som brukes kan finnes hos EBAY, søkefrase HD44780
HD44780 er navnet på standarden som brukes til å sende informasjonen.
Nyttige linker:
http://www.dinceraydin.com/djlcdsim/djlcdsim.html
http://www.wekers.com.br/ml/datasheet/Display_162A.pdf
http://joshuagalloway.com/lcd.html