-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28

Thema: ADC Ausgabe an 7-Segment-Display

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    66

    ADC Ausgabe an 7-Segment-Display

    Anzeige

    Hallo,

    nach langer Bascom-Pause hab ich mal wieder ein bisschen Zeit zum Programmieren gefunden. Bin im Prinzip noch Anfänger. Nun hab ich ein Problem bei der Ausgabe des ADC-Wertes auf ein 7-Segment-Display.
    Es ist einfach nur ein Verständisproblem. Ich hab mich schon Ausgibig mit dem ADC Beschäftig aber ich komm einfach nicht auf die Lösung...
    Ich hab ein Potentiometer (10K) und möchte für den Anfang einfach nur die gemessene Spannung des ADC als einfache Zahlen von 1-9 auf die Anzeige bringen (mein Gedanke - jedem der Zahlen einen Wertebereich zuordnen...Bsp. 1023/10, also für 0=0-102; 1=103-204 usw.).
    Nun weiss ich überhaupt nicht, wie ich das in Bascom umsetzen soll.
    Mein Versuch bei dem immer nur "8" angezeigt wird und beim drehen nichts passiert:
    Code:
    $regfile = "M8def.dat"
    $crystal = 1000000
    
    Config Portd = Output
    Portd = 255
    
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    
    
    Dim Messung As Byte
    
    Dim I As Byte
    
    Dim X(10) As Byte
    
    Restore Value_table
    
    Do
    
     Messung = Getadc(0)
     If Messung < 100 Then
     Portb = X(1)
    
    
     Messung = Getadc(0)
     If Messung > 100 Then
     Portb = X(2)
    
     End If
      End If
    
    
       Loop
    
    
       End
    
    
    
    
    
    Value_table:
    '      0      1       2      3        4      5        6      7     8      9
    Data &H3F , &H6 , &H05B , &H04F , &H066 , &H06D , &H07D , &H7 , &H7F , &H6F

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo,
    nach dem Restore Value_table musst du erst einmal die Werte in das X-Array einlesen. Am einfachsten in einer Schleife:

    Dim I As Byte
    ...
    Restore Value_table
    For I = 1 to 10
    Read X(I)
    Next I

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    66
    Hat leider nichts gebracht. Hatte vorher ein programm laufen wo die Ziffern von 0 bis 9 durchlaufen. Das hat super funktioniert also ist die Verdrahtung schonmal richtig .

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Ist das denn richtig, dass du PortD als Output konfiguriert hast, aber PortB setzt?

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    66
    Oh man. Natürlich. Vielleicht sollte ich erstmal ne Pause machen. Jetzt wechseln beim drehen schonmal die 2 zahlen... Super. Aber wie stell ich es nun an, das ich alle 10 zahlen "durchdrehe"? Ich hab es schon mit 10 "if-then" versucht aber da spinnt die Anzeige total.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Ich würde es ohne den ganzen If..Then Schnickschnack so machen:

    Messung = Getadc(0) / 103 'dann kommen nur Zahlen von 0-9 raus
    PortD = X(Messung + 1)

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    66
    Super!! Jetzt klappt es... aber nur teilweise. Wenn ich mit "103" Teile wird komischerweise nur von null bis zwei angezeigt und das in einem spannngsbereich von ca. 1.2V, dann geht es wieder bei null los bis ich dann bei 5V hochgedreht habe. Hab mal ein bisschen mit dem Teiler rumprobiert- wenn ich z.B. 50 eingebe wird von null bis neun angezeigt aber der durchlauf erfolgt immer in 1.2V Abständen. So wie ich das jetzt verstanden habe wird doch eigentlich 1023/103 gerechnet, und somit hätte man 10 "Schritte" auf 5V???

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von Malte0815
    Wenn ich mit "103" Teile wird komischerweise nur von null bis zwei angezeigt
    Klingt, als hättest du Messung als Byte deklariert.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    66
    Bin mal wieder beeindruckt wie schnell man den Fehler anhand einer ungefähren Fehlerbeschreibung finden kann. Klasse! Kann es leider erst morgen testen.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    66
    Die Schaltung und die Programmierung hauen jetzt super hin. Vielen Dank erstmal für die Hilfe. Wiedermal jede Menge gelernt. Ich werd mich jetzt erstmal ans Muliplexen mit zwei Stellen und einer Kommastelle wagen...bis ich irgendwann mein Thermometer hinbekommen habe.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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