Hallo,
ich habe mal für das im Titel genannte Thema einen neuen Thread zur Weiterführung von der Anfrage im Beitrag
Jetzt aber andersrum, MAX7219 8x8 Matrix 4mal.
angelegt, da es auch nicht so ganz zum Thema MAX7219 passt.
Ich habe jetzt das Programm erstmal soweit, dass ich vier Buchstaben aus einer Tabelle hole und diese auf den vier 5x7 Anzeigen darstelle.
20201007_212359.jpg
Als nächtes wird noch eine Laufschrift eingebaut.
Alles anzeigen
ich habe mal für das im Titel genannte Thema einen neuen Thread zur Weiterführung von der Anfrage im Beitrag
Jetzt aber andersrum, MAX7219 8x8 Matrix 4mal.
angelegt, da es auch nicht so ganz zum Thema MAX7219 passt.
Ich habe jetzt das Programm erstmal soweit, dass ich vier Buchstaben aus einer Tabelle hole und diese auf den vier 5x7 Anzeigen darstelle.
20201007_212359.jpg
Als nächtes wird noch eine Laufschrift eingebaut.
BASCOM-Quellcode
- '2 x 2x5x7 Punkt-Matrix-Anzeige
- 'Ausgabe von 15 Byte je 10x7 Display
- 'Byte-Reihenfolge
- '
- 'Byte 3 Byte 2 Byte 1
- '
- 'Spalten 5 Bit u.Daten 3 Bit DS1 Daten 2x4 Bit Daten 3 Bit u. Spalten 5 Bit DS2
- '
- 'Als Beispiel für die erste Spalte von beiden Anzeigen
- '&b10000xxx &Bxxxx_xxxx &Bxxx10000
- '
- 'Ausgabe der Bits an Shiftregister 74HC595
- 'Byte 1 Byte 2 Byte 3
- '76543210 76543210 76543210
- '
- 'OE dauerhaft auf GND und /SRCLK (Reset) dauerhaft auf VCC
- 'Spaltenzähler für DS1 von Spalte 1 - 5 30,29,27,23,15
- 'Spaltebzähler für DS2 von Spalte 1 - 5 240,232,216,184,120
- $regfile = "m8def.dat"
- $crystal = 8000000
- $hwstack = 100
- $swstack = 100
- $framesize = 100
- Daten Alias Portd.2
- Sck Alias Portd.3
- Rck Alias Portd.4
- Config Daten = Output 'Ausgabe der Daten an die Schieberegister
- Config Sck = Output 'Takt zum Schieben der Daten im 74HC595
- Config Rck = Output 'Übernahmetakt in das Ausgaberegister vom 74HC595
- Dim Text As String * 20 , Temp_text As String * 20
- Dim Buchstabe1 As String * 1 , Buchstabe2 As String * 1
- Dim Buchstabe3 As String * 1 , Buchstabe4 As String * 1
- Dim Spalte_ds1 As Byte , Spalte_ds2 As Byte , Spalte_ds3 As Byte , Spalte_ds4 As Byte
- Dim Zaehler As Byte , Spaltenzaehler As Byte , Zeilenzaehler As Byte
- Dim Zaehler1 As Word , Zaehler2 As Word , Zaehler3 As Word , Zaehler4 As Word
- Dim Ascii_code1 As Word , Ascii_code2 As Word , Ascii_code3 As Word , Ascii_code4 As Word
- Dim Temp_daten1 As Byte , Temp_daten2 As Byte , Temp_daten3 As Byte , Temp_daten4 As Byte
- Dim Temp_byte1 As Byte , Temp_byte2 As Byte , Temp_byte3 As Byte , Temp_byte4 As Byte , Temp_byte5 As Byte , Temp_byte6 As Byte
- Dim Bildspeicher(30) As Byte , Bildspeicherzaehler As Byte
- Dim Buchstabenmuster1(5) As Byte , Buchstabenmuster2(5) As Byte
- Dim Buchstabenmuster3(5) As Byte , Buchstabenmuster4(5) As Byte
- Text = "Test"
- Temp_text = Text
- Rck = 1
- Gosub Daten_sammeln
- Do
- Gosub Anzeige
- Loop
- End
- Daten_sammeln:
- Buchstabe1 = Mid(text , 1 , 1) 'Buchstabe 1 ganz links
- Buchstabe2 = Mid(text , 2 , 1) 'Buchstabe 2
- Buchstabe3 = Mid(text , 3 , 1) 'Buchstabe 3
- Buchstabe4 = Mid(text , 4 , 1) 'Buchstabe 4 ganz rechts
- Ascii_code1 = Asc(buchstabe1) 'Buchstabe in Ascii-Code umwandeln
- Ascii_code1 = Ascii_code1 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
- Ascii_code1 = Ascii_code1 * 5 'mit 5 multizieren, um auf Anfangsindex der Tabelle zu kommen
- Ascii_code2 = Asc(buchstabe2) 'Buchstabe in Ascii-Code umwandeln
- Ascii_code2 = Ascii_code2 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
- Ascii_code2 = Ascii_code2 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
- Ascii_code3 = Asc(buchstabe3) 'Buchstabe in Ascii-Code umwandeln
- Ascii_code3 = Ascii_code3 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
- Ascii_code3 = Ascii_code3 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
- Ascii_code4 = Asc(buchstabe4) 'Buchstabe in Ascii-Code umwandeln
- Ascii_code4 = Ascii_code4 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
- Ascii_code4 = Ascii_code4 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
- For Spaltenzaehler = 0 To 4
- Zaehler1 = Ascii_code1 + Spaltenzaehler 'Zähler für Datentabelle
- Temp_daten1 = Lookup(zaehler1 , Zeichensatz) 'Daten aus Tabelle holen
- Temp_daten1 = Flip(temp_daten1) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
- Buchstabenmuster1(spaltenzaehler + 1) = Temp_daten1 'In Buchstabenmuster speichern
- Zaehler2 = Ascii_code2 + Spaltenzaehler 'Zähler für Datentabelle
- Temp_daten2 = Lookup(zaehler2 , Zeichensatz) 'Daten aus Tabelle holen
- Temp_daten2 = Flip(temp_daten2) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
- Buchstabenmuster2(spaltenzaehler + 1) = Temp_daten2 'In Buchstabenmuster speichern
- Zaehler3 = Ascii_code3 + Spaltenzaehler 'Zähler für Datentabelle
- Temp_daten3 = Lookup(zaehler3 , Zeichensatz) 'Daten aus Tabelle holen
- Temp_daten3 = Flip(temp_daten3) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
- Buchstabenmuster3(spaltenzaehler + 1) = Temp_daten3 'In Buchstabenmuster speichern
- Zaehler4 = Ascii_code4 + Spaltenzaehler 'Zähler für Datentabelle
- Temp_daten4 = Lookup(zaehler4 , Zeichensatz) 'Daten aus Tabelle holen
- Temp_daten4 = Flip(temp_daten4) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
- Buchstabenmuster4(spaltenzaehler + 1) = Temp_daten4 'In Buchstabenmuster speichern
- Next Spaltenzaehler
- Bildspeicherzaehler = 1
- For Spaltenzaehler = 0 To 4
- Temp_daten1 = Buchstabenmuster1(spaltenzaehler + 1)
- Temp_daten2 = Buchstabenmuster2(spaltenzaehler + 1)
- Temp_daten3 = Buchstabenmuster3(spaltenzaehler + 1)
- Temp_daten4 = Buchstabenmuster4(spaltenzaehler + 1)
- Spalte_ds1 = Lookup(spaltenzaehler , Spalten_ds1)
- Spalte_ds2 = Lookup(spaltenzaehler , Spalten_ds2)
- Temp_byte1 = Temp_daten4 'Buchstabe 4 in Temp_byte1 laden
- Shift Temp_byte1 , Right , 4 'Bits von Temp_byte1 5 x nach rechts verschieben
- Temp_byte1 = Temp_byte1 Or Spalte_ds2 'Temp_byte1 mit Spalte x von DS2 verknüpfen
- Temp_byte3 = Temp_daten3 'Buchstabe 3 in Temp_byte3 laden
- Shift Temp_byte3 , Left , 5 'Bits von Temp_byte3 4 x nach links schieben
- Temp_byte3 = Temp_byte3 Or Spalte_ds1 'Temp_byte3 mit Spalte x von DS1 verknüpfen
- Temp_byte2 = Temp_daten4 'Buchstabe 4 in Temp_byte2 laden
- Shift Temp_byte2 , Left , 4 'Bits von Temp_byte2 3 x nach links verschieben
- Shift Temp_daten3 , Right , 3 'Temp_daten1 (Buchstabe 3) 4 x nach rechts verschieben
- Temp_byte2 = Temp_byte2 Or Temp_daten3 'Temp_byte2 mit Temp_daten1 verknüpfen
- Temp_byte4 = Temp_daten2 'Buchstabe 2 in Temp_byte4 laden
- Shift Temp_byte4 , Right , 4 'Bits von Temp_byte4 5 x nach rechts verschieben
- Temp_byte4 = Temp_byte4 Or Spalte_ds2 'Temp_byte4 mit Spalte x von DS2 verknüpfen
- Temp_byte6 = Temp_daten1 'Buchstabe 1 in Temp_byte6 laden
- Shift Temp_byte6 , Left , 5 'Bits von Temp_byte6 4 x nach links schieben
- Temp_byte6 = Temp_byte6 Or Spalte_ds1 'Temp_byte6 mit Spalte x von DS1 verknüpfen
- Temp_byte5 = Temp_daten2 'Buchstabe 2 in Temp_byte5 laden
- Shift Temp_byte5 , Left , 4 'Bits von Temp_byte5 3 x nach links verschieben
- Shift Temp_daten1 , Right , 3 'Temp_daten1 (Buchstabe 1) 4 x nach rechts verschieben
- Temp_byte5 = Temp_byte5 Or Temp_daten1 'Temp_byte5 mit Temp_daten1 verknüpfen
- Bildspeicher(bildspeicherzaehler) = Temp_byte1 'Temp_byte1 an Bildspeicher übergeben
- Bildspeicher(bildspeicherzaehler + 1) = Temp_byte2 'Temp_byte2 an Bildspeicher übergeben
- Bildspeicher(bildspeicherzaehler + 2) = Temp_byte3 'Temp_byte3 an Bildspeicher übergeben
- Bildspeicher(bildspeicherzaehler + 3) = Temp_byte4 'Temp_byte4 an Bildspeicher übergeben
- Bildspeicher(bildspeicherzaehler + 4) = Temp_byte5 'Temp_byte5 an Bildspeicher übergeben
- Bildspeicher(bildspeicherzaehler + 5) = Temp_byte6 'Temp_byte6 an Bildspeicher übergeben
- Bildspeicherzaehler = Bildspeicherzaehler + 6
- Next Spaltenzaehler
- Return
- Anzeige:
- For Zaehler = 0 To 24 Step 6
- Shiftout Daten , Sck , Bildspeicher(zaehler + 1) , 0
- Shiftout Daten , Sck , Bildspeicher(zaehler + 2) , 0
- Shiftout Daten , Sck , Bildspeicher(zaehler + 3) , 0
- Shiftout Daten , Sck , Bildspeicher(zaehler + 4) , 0
- Shiftout Daten , Sck , Bildspeicher(zaehler + 5) , 0
- Shiftout Daten , Sck , Bildspeicher(zaehler + 6) , 0
- Rck = 0
- Rck = 1
- Next Zaehler
- Return
- Spalten_ds1:
- Data 30 , 29 , 27 , 23 , 15
- Spalten_ds2:
- Data 240 , 232 , 216 , 184 , 120
- $include "Zeichensatz.inc"
- 'Ende
Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.