Jag antar att när man initierat ska se något annat än svarta rutor, eller?
Värt att nämna är att kontakterna på LCDn är numrerade med 1 på den 3:e kontakten från vänster och 14 på den längst till höger, frågan är alltså vad de två "onumrerade" längst till vänster är till för. Elektronikwikiguiden är ett par år gammal och kanske inte stämmer längre? Någon annan kanske känner till någon bättre?
Det är ju ganska många som använt en sådan här display och jag hoppas någon känner igen problemet och kan komma med något värdefullt tips...
Här är hela koden. E ligger på 0x10 på PORTC och "databyten" på PORTD. PORTB har en led på 0:e biten.
Kod: Markera allt
int main(void) {
TRISB = 0;
TRISC = 0;
TRISD = 0;
PORTB = 0;
//Init start here
PORTC = 0x00;
PORTD = 0x00;
Delay_ms(100);
PORTD = 0x30;
PORTC = 0x10;
Delay_ms(100);
PORTC = 0x00;
//Flash a led to show that a byte has been sent
PORTB = 1;
Delay_ms(10);
PORTB = 0;
PORTD = 0x30;
PORTC = 0x10;
Delay_ms(100);
PORTC = 0x00;
PORTB = 1;
Delay_ms(10);
PORTB = 0;
PORTD = 0x30;
PORTC = 0x10;
Delay_ms(100);
PORTC = 0x00;
PORTB = 1;
Delay_ms(10);
PORTB = 0;
PORTD = 0x38;
PORTC = 0x10;
Delay_ms(100);
PORTC = 0x00;
PORTB = 1;
Delay_ms(10);
PORTB = 0;
PORTD = 0x08;
PORTC = 0x10;
Delay_ms(100);
PORTC = 0x00;
PORTB = 1;
Delay_ms(10);
PORTB = 0;
PORTD = 0x01;
PORTC = 0x10;
Delay_ms(100);
PORTC = 0x00;
PORTB = 1;
Delay_ms(10);
PORTB = 0;
PORTD = 0x06;
PORTC = 0x10;
Delay_ms(100);
PORTC = 0x00;
PORTB = 1;
Delay_ms(10);
PORTB = 0;
Delay_ms(200);
while(1) {
//Blink a led repetively to know the init is done
PORTB = 1;
Delay_ms(10);
PORTB = 0;
Delay_ms(10);
}
return 0;
}