-         

Ergebnis 1 bis 10 von 10

Thema: 32Bit Zahl in BCD umwandeln

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.10.2006
    Beiträge
    109

    32Bit Zahl in BCD umwandeln

    Anzeige

    Hallo zusammen,
    mache mir zur Zeit Gedanken über die Umwandlung einer 32Bit Zahl in BCD um diese auf 7-Segment-Anzeigen auszugeben. Habe auch schon verschiedene Beispiele ausprobiert. Eines davon würde mir sehr gefallen, da es sich in eine Schleife verpacken liese. Leider funktioniert das Beispiel nicht so recht. So wird z.B. bei 256 als BCD nur 250 ausgegeben. Entsprechend wird auch an anderen Stellen ein falscher BCD-Code erstellt.

    Einer = A Mod 10
    A = A - Einer
    A = A / 10
    Zehner = A Mod 10
    A = A - Zehner
    A = A / 10
    Hunderter = A Mod 10
    A = A - Hunderter
    A = A / 10
    Tausender = A Mod 10

    gibts da noch andere Möglichkeiten?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo rogerberglen,
    wahrscheinlich ist die Variable Einer als Byte definiert. Falls A > Wertebereich Byte (255) ist, geht die Berechnung nicht.
    Entweder du machst Einer auch zu einer Long Variable oder du verwendest eine Temp Variable für die Zwischenergebnisse.

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Wie wäre es mit dem Befehl Makebcd?

    Code:
    
    Action
    
    Convert a variable into its BCD value.
    
     
    
     
    
    Syntax
    
    var1 = MAKEBCD(var2)
    
     
    
     
    
    Remarks
    
    var1
    	
    
    Variable that will be assigned with the converted value.
    
    Var2
    	
    
    Variable that holds the decimal value.
    
     
    
    When you want to use an I2C clock device, which stores its values as BCD values you can use this function to convert variables from decimal to BCD.
    
    For printing the BCD value of a variable, you can use the BCD() function which converts a BCD number into a BCD string.
    
     
    
     
    
    See also
    
    MAKEDEC , BCD , MAKEINT
    
     
    
     
    
    Example
    
    Dim A As Byte
    
    A = 65
    
    Lcd A
    
    Lowerline
    
    Lcd Bcd(a)
    
    A = Makebcd(a)
    
    Lcd " " ; A
    
    End
    Grüße
    Thomas

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.10.2006
    Beiträge
    109
    Ich habe vor 14 7-segmentanzeigen und 10 punktmatrixanzeigen mit schieberegistern zu steuern. Ich habe dazu den 74hc595 und diverse udn sowie uln als Treiber ausgesucht.
    Bisher habe ich immer nur max. 8 7-Segmentanzeigen per Multiplex gesteuert.
    Bei meinem letzten Versuch nur 4 Punktmatrixanzeigen zu steuern waren diese kaum ablesbar.
    Ich kann deshalb noch nicht so richtig glauben, daß das mit Schieberegistern besser werden soll. Auch da findet ja auch eine Art Multiplex statt. (Daten für 1. Spalte anlegen und danach dann die 1.Zeile bestromen usw. da kann man dann doch auch fast nichts mehr erkennen, oder?

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei der Ansteuerung mit Schieberegistern muss man kein Multiplexing nutzen. Es geht auch so, das alle Segmente parallel angesteuert werden. Nur für ein Update werden die Signal serielle vom µC übertragen, fast so wie bei der SPI-Schnittstelle. Oft nimmt man je Stellen einen 74HC595 und 7oder 8 Widerstände - das reicht dann für etwa 8-10 mA je Segment, unabhängig von der Zahl der Stellen.

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von rogerberglen Beitrag anzeigen
    Bei meinem letzten Versuch nur 4 Punktmatrixanzeigen zu steuern waren diese kaum ablesbar.
    War der Pulsstrom durch die Segmente hoch genug? Mit 20mA erreicht man bei Multiplexing relativ wenig...
    Grüße
    Thomas

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.10.2006
    Beiträge
    109
    Eigentlich hatte ich vor die ganzen Anzeigen parallel zu schalten und diese dann über 1 Schieberegister mit den Bitmustern zu versehen und über mehrere Schieberegister dann die einzelnen Digits (Stellen) zu steuern. Sonst würde ja vor lauter Schieberegistern die Platine ziemlich groß.
    Ich müsste also 7 Leitungen für die Bitmuster, und 14 Leitungen für die 7-Segment Digits, sowie weitere 50 Leitungen für die Dot-Matrix Spalten über Schieberegister steuern.
    Sieht man da überhaupt noch was wenn ich beim ersten Digit anfange und am Ende dann durch die 50 Dot-Matrix Spalten durch bin?

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von rogerberglen Beitrag anzeigen
    Sieht man da überhaupt noch was wenn ich beim ersten Digit anfange und am Ende dann durch die 50 Dot-Matrix Spalten durch bin?
    Wenn du schnell genug bist und der Strom durch die LEDs hoch genug ist, dann sicher.
    Grüße
    Thomas

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von rogerberglen Beitrag anzeigen
    Sieht man da überhaupt noch was wenn ich beim ersten Digit anfange und am Ende dann durch die 50 Dot-Matrix Spalten durch bin?
    Du willst 50 Spalten einzeln nacheinander einschalten? Wie groß ist denn die Matrix?
    1/50 Duty Cycle kannst du im Dunkeln sicher noch gut sehen, aber bei Tageslicht wird da nicht viel von übrig bleiben.
    Um normale Helligkeit der LEDs zu bekommen, müsstest du mit dem 50-fachen Strom ansteuern, also etwa 1A.
    Aushalten können die evtl einen Pulsstrom von 150mA. Musst du mal im Datenblatt nachsehen.
    Für die 14 x 7 Segmentanzeigen würde ich zwei MAX7119/7221 nehmen. Die können jeweils 8 Stellen ansteuern.
    Bei der Matrix hängt es halt davon ab, wie groß sie wirklich ist.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.10.2006
    Beiträge
    109
    Die Matrix zusätzlich zu den 7-Segmentanzeigen soll 10 Buchstaben darstellen können. Also 10 7x5 Punktmatrix Anzeigen

Ähnliche Themen

  1. Eingänge in Zahl umwandeln
    Von guenter1604 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 10.06.2008, 22:36
  2. 16bit Binär Zahl in BCD wandeln
    Von PICVB im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 24.02.2008, 13:10
  3. 8-4-2-1 bcd code für die zahl 334
    Von snakeshit im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 13.03.2007, 17:35
  4. BCD in Hexa umwandeln
    Von BIG Muzzy im Forum AVR Hardwarethemen
    Antworten: 7
    Letzter Beitrag: 19.06.2006, 10:03
  5. string in zahl umwandeln
    Von pebisoft im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 09.06.2005, 15:20

Berechtigungen

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