-
        

Ergebnis 1 bis 3 von 3

Thema: Probleme beim Multiplexbetrieb eines SAA1064

  1. #1

    Probleme beim Multiplexbetrieb eines SAA1064

    Anzeige

    Hallo,

    ich habe eine Schaltung mit einem SAA1064 aufgebaut. Bisher hat im statischen Betrieb auch alles geklappt. Die zwei verbauten 7 Segmentanzeigen werden auch ohne Probleme angesteuert und zeigen Zahlenwerte an.

    Wenn ich jetzt in den dynamischen Betrieb wechsle, um 4 7 Segemntanzeigen anzusteuern geht nichts mehr Die Anzeigen bleiben dunkel, selbst wenn ich die Anoden direkt mit der Versorgungsspannung verbinde (also nicht wie im Schaltplan über Transistoren, dann sollten sie doch wenigstens flackern). Für den Kondensator an Cext (angegeben mit 2n7) habe ich schon 2n2, 47n und 100u eingesetzt. Nichts bringt die Anzeige zum Leuchten.

    Schalte ich im Programm wieder auf statisch um, leuchten die Anzeigen ganz normal.

    Ich bedanke mich schon im voraus für jede Hilfe.

    Viele Grüße
    Dirk

  2. #2
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    Hi!
    Bitte poste deine Schaltung und dein (vollständiges) Programm.

    Gruß
    Basti

  3. #3
    Danke für die schnelle Antwort.

    Die Schaltung habe ich aus dem Datenblatt des SAA1064 (http://www.nxp.com/documents/data_sheet/SAA1064_CNV.pdf, Seite 12). Diese habe ich mittlerweile so abgeändert, dass ich die Anoden direkt mit Vcc verbunden habe, um den Multiplexer zu umgehen. Auf dem Kondensator für Cext steht "222".

    Der Programmcode für meinen Arduino Duamilanove lautet wie folgt

    Code:
    #include <Wire.h>
    #include <util.h>
    
    const byte BRIGHT_LOW =0x10;
    const byte MULTIPLEX  =0x07;
    const byte TEST_ALL   =0x08;
    
    const int numbers[16] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
    
    void setup() {
    
      Wire.begin();
    
      // Test der Anzeigen im statischen Modus
      Wire.beginTransmission(0x70 >> 1);
      Wire.send(0);
      Wire.send(BRIGHT_LOW & ~MULTIPLEX | TEST_ALL);
      Wire.endTransmission();
      delay (1000);
      // Löschen der Anzeigen
      Wire.beginTransmission(0x70 >> 1);
      Wire.send(0);
      Wire.send(BRIGHT_LOW & ~MULTIPLEX);
      Wire.endTransmission();
    }
    
    void loop() {
      // Anzeigen der Zahlen von 1000 bis 9999 fuer jeweils 1000 ms
      for (int i = 1000; i < 10000; i++) {
        Wire.beginTransmission(0x70 >> 1);
        Wire.send(1);
        Wire.send(numbers[i%10]);
        int num = i/10;
        Wire.send(numbers[num%10]);
        num = i/10;
        Wire.send(numbers[num%10]);
        num = i/10;
        Wire.send(numbers[num%10]);
        Wire.endTransmission();
        delay (1000);
      }
    }
    Wenn ich nun aus der Zeile "Wire.send(BRIGHT_LOW & ~MULTIPLEX);" in der Funktion "Setup()" die Zeile "Wire.send(BRIGHT_LOW & MULTIPLEX);" mache, dann funktioniert nichts mehr. Es wird nichts angezeigt. Mache ich es wieder rückgängig, dann werden die Zahlen von 00 bis 99 ganz normal angezeigt.

    Einen Tipp?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •