-         

Ergebnis 1 bis 4 von 4

Thema: Funktion um Zahlen auf SAA1064 anzeigen zu lassen ?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341

    Funktion um Zahlen auf SAA1064 anzeigen zu lassen ?

    Anzeige

    Hi,

    im Wiki gibts ja folgende Code um Zahlen an den SAA1064 zu schicken:

    Code:
    Sub Led_display(ziffer An Byte , Zahl As Byte)
         I2cstart
         I2cwbyte Rn_digi_slave_write
         I2cwbyte Ziffer
    
         Select Case Zahl
             Case 0:
                   Segmente = &H3F
             Case 1:
                    Segmente = &H06
             Case 2:
                    Segmente = &H5B
             Case 3:
                    Segmente = &H4F
             Case 4:
                    Segmente = &H66
             Case 5:
                    Segmente = &H6D
             Case 6:
                    Segmente = &H7D
             Case 7:
                    Segmente = &H07
             Case 8:
                    Segmente = &H7F
             Case 9:
                    Segmente = &H67
    
         End Select
    
         I2cwbyte Segmente
         I2cstop
    End Sub
    Damit lässt sich ja auf dem Segment ZifferX die ZahlX von 0-9 ausgeben.

    Ich habe die Schaltung mit 2 Segmenten aufgebaut nicht mit 4. Ich würde jetzt das ganze gerne so abändern, das ich eine Zahl von 0-99 an die Funktion übergeben kann und die Zahl dann direkt ausgegeben werden kann.

    Allerdings hab ich in Bascom noch nie mit funktionen gearbeitet und mir ist auch noch nicht ganz klar wie sich das umsetzen lässt.

    In einer Delphi Pc Software hätte ich das gaze jetzt so realisiert das die Zahl als String übergeben wird und der String mit einer maximalen Länge von 2 (01-99) dann in der funktion beim Beispiel von 23 in Wert1 = 2 und Wert2 = 3 geteilt wird, dann wieder zurück in ein integer gewandelt und dann einzeln übergeben.

    Lässt sich das so auch irgendwie in Bascom realisieren ?

    mfg Yannic

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Ich habe das gleiche Problem gehabt. Hier ist der Link
    http://www.roboternetz.de/phpBB2/zei...ghlight=modulo

    Es ist in C geschrieben, sollte sich aber relativ einfach nach Bascom konvertieren lassen.

    MfG Hannes

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Einfach die Zahl in einem String wandeln und ausgeben.

    Gruß Richard

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Danke für die Tipps.

    Richards Variante hört sich am leichtesten an.

    Nur hab ich da gerade noch ein Problem mit:

    Code:
    Declare Sub Led_display_init()
    Declare Sub Led_display(byval Zahl As Byte)
    
    $regfile = "m16def.dat"
    $crystal = 16000000
    $hwstack = 32
    $swstack = 20
    $framesize = 40
    $baud = 9600
    
    Config Scl = Portc.0
    Config Sda = Portc.1
    
    Dim S_ausgabe As String * 2
    
    
    Led_display_init
    
    Do
    Waitms 3000
    Led_display 15
    Loop
    
    'Funktionen für 7 Segment
    
    Sub Led_display_init()
      I2cinit
      I2cstart
      I2cwbyte &H70
      I2cwbyte 0
      I2cwbyte &B0110110
      I2cstop
    
           Led_display 0
    
    End Sub
    
    
    Sub Led_display(zahl As Byte)
         I2cstart
         I2cwbyte &H70
         I2cwbyte 1
    
         S_ausgabe = Str(zahl)
    
         I2cwbyte S_ausgabe
         I2cstop
    End Sub
    Ich habs jetzt so versucht. Klappt allerdings nicht so wirklich. Was muss denn mit I2cwbyte 1 gemacht werden wenn ich den ganzen string mal angenommen (S_ausgabe=22) ausgeben lassen möchte. Irgendwie muss dabei ja segment 1 und segment 2 angesprochen werden können.

Berechtigungen

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