LED-Anzeige (Hello World erscheint doppelt)

Gast #1248050
Lesenswert?

Hallo erstmal,

ich habe vor mir eine LED-Anzeige 16x48, 1/8 multiplex. Zur Anseuerung 
benutze ich ein ARM LPC2378. Am Port 2 sind 3 Pins zu einem 3 zu 8 
Dekoder (74HCT138 mit 5V versorgt) rausgeführt. Nun mein Problem ist 
dass die Schrifft auf der Anzeige schwach dupliziert wird (sehe Anhang). 
Hat jemand schon mal so ein Problem gehabt? wie kriege das weg.
wäre dankbar für jede Hilfe.

Anbei ist die Interrupt Service Routine für
den Zeilenwechsel.
//-------------------------------------------
void isr_strobe(void)
{
  static int cnt = 0;
  static int diag_led_status = 1;

  T1TC = 0;
  T1IR = 0xFF;
  FIO2CLR = LATCH;   // DISABLE LATCH
  FIO2SET = STROBE;  // SET STROBE
  FIO2SET = (row& 0x00000007);
  FIO2CLR = ((~row) & 0x00000007);
  row++;
  if(row== 8)
    row = 0;
  FIO2SET = LATCH;   // ENABLE LATCH
  FIO2CLR = STROBE ; // RESET STROBE
  send_event_sync(); // START DATA TRANSFER
  cnt++;
  if(cnt==300)
  {
    cnt = 0;
    if(diag_led_status)
    {
      LED1_ON();
      diag_led_status = 0;
    }
    else
    {
      LED1_OFF();
      diag_led_status = 1;
    }
  }
}

//--------------------------------------------------------------------
Gruß.
Hakim
Angehängte Dateien:
Gast #1248056
Lesenswert?

- Zeilentreiber beschreiben
- ein paar µS warten
- Spalten beschreiben
- ein paar ms warten
- Spalten mit 0en beschreiben, insb dieser Schritt ist wichtig!
- ein paar µS warten
- Zeilentreiber mit nächster Spalte beschreiben

Gruß
Roland
#1248063
Lesenswert?

Es gibt 2 Standardfehler beim Multiplexen:

1. Reihenfolgefehler

Die richtige Reihenfolge muß sein:
- Zeilentreiber aus
- neues Spaltenmuster setzen
- nächsten Zeilentreiber ein
oder:
- alle Spalten aus
- Zeilentreiber wechseln
- neues Spaltenmuster setzen

2. Trägheit

Bei hoher Multiplexfrequenz ist entscheidend, ob die Treibertransistoren 
in Emitter- oder Kollektorschaltung arbeiten.
Die Emitterschaltung schaltet sehr gemächlich (Miller-Kapaziät), da muß 
man dann noch zusätzliche Delays in die Dunkelphase einfügen.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren