Ich habe das gleiche Problem gehabt. Hier ist der Link
https://www.roboternetz.de/phpBB2/ze...ghlight=modulo
Es ist in C geschrieben, sollte sich aber relativ einfach nach Bascom konvertieren lassen.
MfG Hannes
Hi,
im Wiki gibts ja folgende Code um Zahlen an den SAA1064 zu schicken:
Damit lässt sich ja auf dem Segment ZifferX die ZahlX von 0-9 ausgeben.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
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
Ich habe das gleiche Problem gehabt. Hier ist der Link
https://www.roboternetz.de/phpBB2/ze...ghlight=modulo
Es ist in C geschrieben, sollte sich aber relativ einfach nach Bascom konvertieren lassen.
MfG Hannes
Einfach die Zahl in einem String wandeln und ausgeben.
Gruß Richard
Danke für die Tipps.
Richards Variante hört sich am leichtesten an.
Nur hab ich da gerade noch ein Problem mit:
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.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
Lesezeichen