-         

Ergebnis 1 bis 5 von 5

Thema: Problem mit 7Segment Anzeige

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.07.2007
    Beiträge
    28

    Problem mit 7Segment Anzeige

    Anzeige

    Hallo,

    ich versuche seid ein paar tagen eine 7Segment-Anzeige zum laufen zu bringen. Nur hab ich keinen blassen schimmer wieso das nicht so geht wie ich das will hab ich vielleicht einen kleinen denkfehler?

    Es soll einfach die erste stelle des AD-Wertes auf dem segement angezeigt werden.

    Code:
    $regfile = "m8def.dat"
    
    $crystal = 5200000
    
    
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    
    ' *********************************  Config  ********************************
    
    Config Portd = Output
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    Start Adc
    
    Dim D As Word
    Dim N As Word
    Dim W As Word
    
    ' *********************************  Main  ********************************
    
    Do
    
       W = Getadc(0)
       N = W / 100
       D = Lookup(n , Value_table)
       Portd = D
       Waitms 333
    
    Loop
    
    
    End
    
    ' *********************************  Data  ********************************
    
    Value_table:
    Data &B10000001 ,                                           '0
    Data &B11101101 ,                                           '1
    Data &B01000011 ,                                           '2
    Data &B01001001 ,                                           '3
    Data &B00101101 ,                                           '4
    Data &B00011001 ,                                           '5
    Data &B00010001 ,                                           '6
    Data &B11001101 ,                                           '7
    Data &B00000001 ,                                           '8
    Data &B00001001 ,                                           '9

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Inwiefern geht das nicht ? Was tut sich denn ?
    Das Programm ist ja durchaus übersichtlich *g*

    Wenn du immer nur 0-er siehst, hat's was mit dem ADC
    wenn das Display immer finster ist, hats was mit mit der Anzeige

    Lass die ADC-Geschichte erstmal aus
    mach erstmal eine Schleife, um zu sehen, ob die 7-Segmentgeschichte hinhaut
    Code:
    dim x as byte
       for   n = 1 to 10
             x = n-1;
             d= lookup(x, Value_Table)
             portd = D
             waitms 1000
       next
    Die Zahlen sollten im sekundentakt von 0-9 gehen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.07.2007
    Beiträge
    28
    hab das jetzt mal ausprobiert,

    diese laufen nicht von 0 bis 9 durch..

    0..2..4..6..8. und danach nur noch undefinierte zustände... komisch..


    mit diesem code funktionierts prima..
    Code:
    Dim I As Byte
    
    Dim X(10) As Byte
    
    Restore Value_table
    
    For I = 1 To 10
       Read X(i)
    Next
    
    Portb.0 = 1
    
    Do
       For I = 1 To 10
          Portd = X(i)
          Waitms 400
       Next
    Loop
    
    End
    
    
    
    Value_table:
    Data &B10000001 ,                                           '0
    Data &B11101101 ,                                           '1
    Data &B01000011 ,                                           '2
    Data &B01001001 ,                                           '3
    Data &B00101101 ,                                           '4
    Data &B00011001 ,                                           '5
    Data &B00010001 ,                                           '6
    Data &B11001101 ,                                           '7
    Data &B00000001 ,                                           '8
    Data &B00001001 ,                                           '9

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Dein Problem ist diese Zuweisung

    D = Lookup(n , Value_table)

    D ist eine Word-Variable, also 2 byte.
    Bascom nimmt nun an, dass du auch 2 Byte aus den Daten einlesen willst. Entsprechend werden auch die Adressen berechnet und es kommt daher immer nur jede zweite Zahl. Der Port kann nur Byte verarbeiten und lässt das höherwertige Byte einfach weg.
    Wenn du D als Byte deklarierst, wird es gehen.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.07.2007
    Beiträge
    28
    ach mann bin ich doof vielen dank!

Berechtigungen

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