Sida 1 av 1

Lyckas inte få igång HD44780-kompatibel LCD

Postat: 12 juli 2008, 17:53:20
av davegbg
Jag köpte en 16x2 LCD-display från Kjell som enligt dom ska vara kompatibel med HD44780. Därför följer jag guiden från elektronikwikin för att försöka initiera den. Det enda som händer när jag skickat de 7 "config-bytesen" är att jag ser 16 svarta rutor på översta/understa raden och inget på den andra. Jag har ca 1s delay mellan varje skickande av data till displayen.
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;
}

Postat: 12 juli 2008, 17:59:55
av sodjan
> Jag antar att när man initierat ska se något annat än svarta rutor, eller?

Så där ser den ut efter att den interna power-on självtesten har körts.
Ingen annan initiering är gjord än.

Processor ?
Analoga portfunktioner ?

> frågan är alltså vad de två "onumrerade" längst till vänster är till för.

Sannolikt backlight. Man jag tycxker nog att databladet visar det...

Du kan även kolla här:
http://www.jescab.se/HD44780.html

Postat: 12 juli 2008, 18:14:30
av davegbg
Sorry, processorn är en PIC18F4550, de analoga portfunktionerna vet jag inte vad du menar med som jag skrev i den andra tråden du nyss svarade på =), men jag ska kolla upp det...
Ska testa koden från din hemsida också!

Tack

Postat: 12 juli 2008, 18:57:33
av sodjan
> de analoga portfunktionerna vet jag inte vad du menar med som jag skrev i den andra tråden

Databladet är ganska tydligt på just den punkten.
En extra liten grå ruta med "Note:" i fet still...