[C/C++] Probleme mit einer "rotierenden Anzeige"

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Greacemonkey, 4. Juli 2011 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 4. Juli 2011
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Probleme mit einer "rotierenden Anzeige"

    Hallo,

    der Titel ist nicht so passend aber mir ist nichts besseres eingefallen :oops:

    Also es geht um folgendes: Wir machen in der Schule gerade eine Projektarbeit. Ziel ist es diese Anzeige zum laufen zu bringen.

    Spoiler
    [​IMG]

    Wenn das dann mal Funktoniert soll so was dabei rauskommen
    [​IMG]

    Das is der Code den ich bisher habe:

    Code:
    #include <at89c5131.h> // Registeradressen Atmel AT89C5131
    
    sbit at P3_3 sensor; //Portadresse des Hallsensor Lowactive!
    sfr at P1 LEDS; //Portadresse der LEDs Lowactive!
    
    
    #define maxSpalten 195 //Anzahl der Spalten
    #define Umfang 974 //in mm
    #define Drehgeschwindigkeit 2 //Spalten pro sekunde
    
    //***Tabelle*********************************************************
    unsigned code char Tabelle[126] =
    {0b1111111,0b1001001,0b1001001,0b1001001,0b0110110,0, // B
    .
    .
    .
    .
    .
    0b1000010,0b1000001,0b1010001,0b1101001,0b1000110,0}; // 3
    
    //***Zeitverzögerung*************************************************
    void zeit (unsigned int Verzoegerungskonstante)
    {
     unsigned int c;
     for (c=Verzoegerungskonstante;c!=0;c--);
    }
    
    //***Hauptprogramm****************************************************** 
    void main (void)
    {
     unsigned char Spaltennummer,b;
     unsigned int Zeitverzoegerungskonstante;
     unsigned long MikroSproUmdrehung;
    
     while (1)
     {
     while (sensor==1); //warten bis Hallsensor aktiv
    
     Spaltennummer= 0;
     for (b=maxSpalten;b!=0;b--)
     {
    
     if (Spaltennummer<=125)
     {
     LEDS=~(Tabelle[Spaltennummer]);
     }
     else
     {
     LEDS=0xff; // alle LEDS aus
     }
     zeit(255); 
     LEDS=0xff; // alle LEDS aus
     zeit(255);
     Spaltennummer++;
     }
    
     }
    }
     
    So das ist noch nicht das komplette Programm.
    Das Problem ist folgendes: Eigentlich sollte die Anzeige erst beginnen, wenn der Hallsensor am Magnet vorbei kommt (dann gibt der Sensor eine 0). Allerdings ist dem Programm der Sensor momentan völlig egal. Die Anzeige läuft ständig.
    Ich hab keine Ahnung mehr warum das nicht funktioniert.

    BITTE BEACHTEN:
    - Der Sensor und die LEDs sind LOW-aktiv!!

    Ich hoffe einer von euch weiß Rat.

    MfG Greacemonkey
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 7. Juli 2011
    AW: Probleme mit einer "rotierenden Anzeige"

    Hi,

    kenn mich mit dem AT89C5131 nicht aus, jedoch sieht der Code in Ordnung aus.

    Eventuell braucht ihr nen Pull-Up an dem Hall-Sensor oder mal nochmal prüfen ob na den Richtigen Port/Pin gewählt habt.

    Ansonsten bist du wahrscheinlich bei http://www.mikrocontroller.net/ bzw. Das gro mit deiner Frage besser aufgehoben.

    Mfg Rushh0ur
     
  4. #3 7. Juli 2011
    AW: Probleme mit einer "rotierenden Anzeige"

    Würde mir mal nen Messgerät oder falls vorhanden nen Oszilloskop schnappen und einfach durchmessen, ob die gewünschten Ströme fließen..
    Also ob auf den PINs überhaupt eine Spannung anliegt etc.

    MfG
     
  5. #4 7. Juli 2011
    AW: Probleme mit einer "rotierenden Anzeige"

    Danke für eure Antworten.

    Es hat sich herausgestellt, dass das Programmiergerät nicht richtig funktioniert hat. Mit einem neuen Gerät hat alles geklappt.

    MfG
     

  6. Videos zum Thema
Die Seite wird geladen...