2 x 10x7 LED-Matrix-Displays mit 3 x 74HC595

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • 2 x 10x7 LED-Matrix-Displays mit 3 x 74HC595

      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.

      BASCOM-Quellcode

      1. '2 x 2x5x7 Punkt-Matrix-Anzeige
      2. 'Ausgabe von 15 Byte je 10x7 Display
      3. 'Byte-Reihenfolge
      4. '
      5. 'Byte 3 Byte 2 Byte 1
      6. '
      7. 'Spalten 5 Bit u.Daten 3 Bit DS1 Daten 2x4 Bit Daten 3 Bit u. Spalten 5 Bit DS2
      8. '
      9. 'Als Beispiel für die erste Spalte von beiden Anzeigen
      10. '&b10000xxx &Bxxxx_xxxx &Bxxx10000
      11. '
      12. 'Ausgabe der Bits an Shiftregister 74HC595
      13. 'Byte 1 Byte 2 Byte 3
      14. '76543210 76543210 76543210
      15. '
      16. 'OE dauerhaft auf GND und /SRCLK (Reset) dauerhaft auf VCC
      17. 'Spaltenzähler für DS1 von Spalte 1 - 5 30,29,27,23,15
      18. 'Spaltebzähler für DS2 von Spalte 1 - 5 240,232,216,184,120
      19. $regfile = "m8def.dat"
      20. $crystal = 8000000
      21. $hwstack = 100
      22. $swstack = 100
      23. $framesize = 100
      24. Daten Alias Portd.2
      25. Sck Alias Portd.3
      26. Rck Alias Portd.4
      27. Config Daten = Output 'Ausgabe der Daten an die Schieberegister
      28. Config Sck = Output 'Takt zum Schieben der Daten im 74HC595
      29. Config Rck = Output 'Übernahmetakt in das Ausgaberegister vom 74HC595
      30. Dim Text As String * 20 , Temp_text As String * 20
      31. Dim Buchstabe1 As String * 1 , Buchstabe2 As String * 1
      32. Dim Buchstabe3 As String * 1 , Buchstabe4 As String * 1
      33. Dim Spalte_ds1 As Byte , Spalte_ds2 As Byte , Spalte_ds3 As Byte , Spalte_ds4 As Byte
      34. Dim Zaehler As Byte , Spaltenzaehler As Byte , Zeilenzaehler As Byte
      35. Dim Zaehler1 As Word , Zaehler2 As Word , Zaehler3 As Word , Zaehler4 As Word
      36. Dim Ascii_code1 As Word , Ascii_code2 As Word , Ascii_code3 As Word , Ascii_code4 As Word
      37. Dim Temp_daten1 As Byte , Temp_daten2 As Byte , Temp_daten3 As Byte , Temp_daten4 As Byte
      38. 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
      39. Dim Bildspeicher(30) As Byte , Bildspeicherzaehler As Byte
      40. Dim Buchstabenmuster1(5) As Byte , Buchstabenmuster2(5) As Byte
      41. Dim Buchstabenmuster3(5) As Byte , Buchstabenmuster4(5) As Byte
      42. Text = "Test"
      43. Temp_text = Text
      44. Rck = 1
      45. Gosub Daten_sammeln
      46. Do
      47. Gosub Anzeige
      48. Loop
      49. End
      50. Daten_sammeln:
      51. Buchstabe1 = Mid(text , 1 , 1) 'Buchstabe 1 ganz links
      52. Buchstabe2 = Mid(text , 2 , 1) 'Buchstabe 2
      53. Buchstabe3 = Mid(text , 3 , 1) 'Buchstabe 3
      54. Buchstabe4 = Mid(text , 4 , 1) 'Buchstabe 4 ganz rechts
      55. Ascii_code1 = Asc(buchstabe1) 'Buchstabe in Ascii-Code umwandeln
      56. Ascii_code1 = Ascii_code1 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      57. Ascii_code1 = Ascii_code1 * 5 'mit 5 multizieren, um auf Anfangsindex der Tabelle zu kommen
      58. Ascii_code2 = Asc(buchstabe2) 'Buchstabe in Ascii-Code umwandeln
      59. Ascii_code2 = Ascii_code2 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      60. Ascii_code2 = Ascii_code2 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      61. Ascii_code3 = Asc(buchstabe3) 'Buchstabe in Ascii-Code umwandeln
      62. Ascii_code3 = Ascii_code3 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      63. Ascii_code3 = Ascii_code3 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      64. Ascii_code4 = Asc(buchstabe4) 'Buchstabe in Ascii-Code umwandeln
      65. Ascii_code4 = Ascii_code4 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      66. Ascii_code4 = Ascii_code4 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      67. For Spaltenzaehler = 0 To 4
      68. Zaehler1 = Ascii_code1 + Spaltenzaehler 'Zähler für Datentabelle
      69. Temp_daten1 = Lookup(zaehler1 , Zeichensatz) 'Daten aus Tabelle holen
      70. Temp_daten1 = Flip(temp_daten1) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      71. Buchstabenmuster1(spaltenzaehler + 1) = Temp_daten1 'In Buchstabenmuster speichern
      72. Zaehler2 = Ascii_code2 + Spaltenzaehler 'Zähler für Datentabelle
      73. Temp_daten2 = Lookup(zaehler2 , Zeichensatz) 'Daten aus Tabelle holen
      74. Temp_daten2 = Flip(temp_daten2) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      75. Buchstabenmuster2(spaltenzaehler + 1) = Temp_daten2 'In Buchstabenmuster speichern
      76. Zaehler3 = Ascii_code3 + Spaltenzaehler 'Zähler für Datentabelle
      77. Temp_daten3 = Lookup(zaehler3 , Zeichensatz) 'Daten aus Tabelle holen
      78. Temp_daten3 = Flip(temp_daten3) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      79. Buchstabenmuster3(spaltenzaehler + 1) = Temp_daten3 'In Buchstabenmuster speichern
      80. Zaehler4 = Ascii_code4 + Spaltenzaehler 'Zähler für Datentabelle
      81. Temp_daten4 = Lookup(zaehler4 , Zeichensatz) 'Daten aus Tabelle holen
      82. Temp_daten4 = Flip(temp_daten4) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      83. Buchstabenmuster4(spaltenzaehler + 1) = Temp_daten4 'In Buchstabenmuster speichern
      84. Next Spaltenzaehler
      85. Bildspeicherzaehler = 1
      86. For Spaltenzaehler = 0 To 4
      87. Temp_daten1 = Buchstabenmuster1(spaltenzaehler + 1)
      88. Temp_daten2 = Buchstabenmuster2(spaltenzaehler + 1)
      89. Temp_daten3 = Buchstabenmuster3(spaltenzaehler + 1)
      90. Temp_daten4 = Buchstabenmuster4(spaltenzaehler + 1)
      91. Spalte_ds1 = Lookup(spaltenzaehler , Spalten_ds1)
      92. Spalte_ds2 = Lookup(spaltenzaehler , Spalten_ds2)
      93. Temp_byte1 = Temp_daten4 'Buchstabe 4 in Temp_byte1 laden
      94. Shift Temp_byte1 , Right , 4 'Bits von Temp_byte1 5 x nach rechts verschieben
      95. Temp_byte1 = Temp_byte1 Or Spalte_ds2 'Temp_byte1 mit Spalte x von DS2 verknüpfen
      96. Temp_byte3 = Temp_daten3 'Buchstabe 3 in Temp_byte3 laden
      97. Shift Temp_byte3 , Left , 5 'Bits von Temp_byte3 4 x nach links schieben
      98. Temp_byte3 = Temp_byte3 Or Spalte_ds1 'Temp_byte3 mit Spalte x von DS1 verknüpfen
      99. Temp_byte2 = Temp_daten4 'Buchstabe 4 in Temp_byte2 laden
      100. Shift Temp_byte2 , Left , 4 'Bits von Temp_byte2 3 x nach links verschieben
      101. Shift Temp_daten3 , Right , 3 'Temp_daten1 (Buchstabe 3) 4 x nach rechts verschieben
      102. Temp_byte2 = Temp_byte2 Or Temp_daten3 'Temp_byte2 mit Temp_daten1 verknüpfen
      103. Temp_byte4 = Temp_daten2 'Buchstabe 2 in Temp_byte4 laden
      104. Shift Temp_byte4 , Right , 4 'Bits von Temp_byte4 5 x nach rechts verschieben
      105. Temp_byte4 = Temp_byte4 Or Spalte_ds2 'Temp_byte4 mit Spalte x von DS2 verknüpfen
      106. Temp_byte6 = Temp_daten1 'Buchstabe 1 in Temp_byte6 laden
      107. Shift Temp_byte6 , Left , 5 'Bits von Temp_byte6 4 x nach links schieben
      108. Temp_byte6 = Temp_byte6 Or Spalte_ds1 'Temp_byte6 mit Spalte x von DS1 verknüpfen
      109. Temp_byte5 = Temp_daten2 'Buchstabe 2 in Temp_byte5 laden
      110. Shift Temp_byte5 , Left , 4 'Bits von Temp_byte5 3 x nach links verschieben
      111. Shift Temp_daten1 , Right , 3 'Temp_daten1 (Buchstabe 1) 4 x nach rechts verschieben
      112. Temp_byte5 = Temp_byte5 Or Temp_daten1 'Temp_byte5 mit Temp_daten1 verknüpfen
      113. Bildspeicher(bildspeicherzaehler) = Temp_byte1 'Temp_byte1 an Bildspeicher übergeben
      114. Bildspeicher(bildspeicherzaehler + 1) = Temp_byte2 'Temp_byte2 an Bildspeicher übergeben
      115. Bildspeicher(bildspeicherzaehler + 2) = Temp_byte3 'Temp_byte3 an Bildspeicher übergeben
      116. Bildspeicher(bildspeicherzaehler + 3) = Temp_byte4 'Temp_byte4 an Bildspeicher übergeben
      117. Bildspeicher(bildspeicherzaehler + 4) = Temp_byte5 'Temp_byte5 an Bildspeicher übergeben
      118. Bildspeicher(bildspeicherzaehler + 5) = Temp_byte6 'Temp_byte6 an Bildspeicher übergeben
      119. Bildspeicherzaehler = Bildspeicherzaehler + 6
      120. Next Spaltenzaehler
      121. Return
      122. Anzeige:
      123. For Zaehler = 0 To 24 Step 6
      124. Shiftout Daten , Sck , Bildspeicher(zaehler + 1) , 0
      125. Shiftout Daten , Sck , Bildspeicher(zaehler + 2) , 0
      126. Shiftout Daten , Sck , Bildspeicher(zaehler + 3) , 0
      127. Shiftout Daten , Sck , Bildspeicher(zaehler + 4) , 0
      128. Shiftout Daten , Sck , Bildspeicher(zaehler + 5) , 0
      129. Shiftout Daten , Sck , Bildspeicher(zaehler + 6) , 0
      130. Rck = 0
      131. Rck = 1
      132. Next Zaehler
      133. Return
      134. Spalten_ds1:
      135. Data 30 , 29 , 27 , 23 , 15
      136. Spalten_ds2:
      137. Data 240 , 232 , 216 , 184 , 120
      138. $include "Zeichensatz.inc"
      139. 'Ende
      Alles anzeigen
      Dateien
      • Zeichensatz.inc

        (14,04 kB, 15 mal heruntergeladen, zuletzt: )
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Hallo,
      ich habe die Demoversion 2.0.7.9. Könnte es sein, daß das "FLIP" das Problem ist? Ich kenne diesen Befehl nicht. Er ist mir neu. Habe im Hilfetext gesucht, da steht was von ADON APP:
      Die habe ich nicht drauf.
      Gruß

      Ach ja ich habe versprochen meinen Lösungsansatz mal rüber zu bringen.
      Bei mir werden die Zeichen Spaltenweise eingelesen, ist sehr einfach, was allerdings einen anders gearteten Zeichensatz bedingt.

      BASCOM-Quellcode: Matrix 5x7 Zeilenweise Ausgabe

      1. 'Matrix 5x7 Ausgabe eine Matrix 2 Buchstaben Testprogramm
      2. $regfile = "m8adef.dat" 'Prozessor
      3. $crystal = 3684000 'Taktfrequenz
      4. $baud = 19200
      5. $hwstack = 80
      6. $swstack = 80
      7. $framesize = 100
      8. Takt Alias Portb.5 'B.5 an SRCLK = Takt
      9. Config Takt = Output
      10. Daten Alias Portb.3 'B.3 an Serin = Dateneingabe
      11. Config Daten = Output
      12. Uebernahme Alias Portb.2 'B.2 an RCLK = Übernahme
      13. Config Uebernahme = Output
      14. Oe Alias Portb.1 'B.1 an OE = Output enable = Matrix ein/aus
      15. Config Oe = Output
      16. Config Portb.0 = Output
      17. Ein Alias Portb.0
      18. Dim Spa As String * 5 'Spalte Anfang + Ende
      19. Dim B1 As String * 7 'Anzeige auf Matrix 1
      20. Dim B2 As String * 7 'Anzeige auf Matrix 2
      21. Dim Speicher(15) As Byte
      22. Dim I As Byte 'Spaltenzähler
      23. Dim N As Byte
      24. Dim R As String * 8
      25. Dim S As String * 8
      26. Dim T As String * 8
      27. Dim Let1 As Byte 'Letter 1
      28. Dim Let2 As Byte 'Letter 2
      29. Dim Matr1 As Byte 'Matrix 1
      30. Dim Matr2 As Byte 'Matrix 2
      31. Dim Zaehler As Byte
      32. Config Spi = Soft , Din = Pinb.4 , Dout = Daten , Ss = Uebernahme , Clock = Takt , Mode = 0 'SPI-Soft
      33. Spiinit
      34. Waitms 50
      35. Oe = 0 'Oe an GND
      36. Ein = 1
      37. I = 0 'Spaltenzähler von 0 bis 5
      38. N = 1 'Speicherzähler
      39. Let1 = 4 'Kennzahl des Letter1 eingeben
      40. Let2 = 8 'Kennzahl des Letter2
      41. 'Zeichen vorbereiten und speichern
      42. For I = 0 To 4
      43. Matr1 = Let1 * 5
      44. Matr2 = Let2 * 5
      45. Matr1 = Matr1 + I
      46. Matr2 = Matr2 + I
      47. Spa = Lookupstr(i , Grund)
      48. B1 = Lookupstr(matr1 , Buchstabe)
      49. B2 = Lookupstr(matr2 , Buchstabe)
      50. R = Spa + Left(b1 , 3)
      51. S = Right(b1 , 4) + Left(b2 , 4)
      52. T = Right(b2 , 3) + Spa
      53. Speicher(n) = Binval(r)
      54. Speicher(n + 1) = Binval(s)
      55. Speicher(n + 2) = Binval(t)
      56. N = N + 3
      57. Next I
      58. 'Zeichen ausgeben
      59. Do
      60. Gosub Anzeige
      61. Loop
      62. End
      63. Anzeige:
      64. For Zaehler = 1 To 15 Step 3
      65. Shiftout Daten , Takt , Speicher(zaehler) , 1
      66. Shiftout Daten , Takt , Speicher(zaehler + 1) , 1
      67. Shiftout Daten , Takt , Speicher(zaehler + 2) , 1
      68. Uebernahme = 0
      69. Uebernahme = 1
      70. Next Zaehler
      71. Return
      72. End
      73. Grund:
      74. Data "01111" , "10111" , "11011" , "11101" , "11110"
      75. Buchstabe:
      76. Data "0111111" , "1001000" , "1001000" , "1001000" , "0111111" 'A
      77. Data "1111111" , "1001001" , "1001001" , "1001001" , "0110110" 'B
      78. Data "0111110" , "1000001" , "1000001" , "1000001" , "0100010" 'C
      79. Data "1111111" , "1000001" , "1000001" , "1000001" , "0111110" 'D
      80. Data "1111111" , "1001001" , "1001001" , "1001001" , "1000001" 'E
      81. Data "1111111" , "1001000" , "1001000" , "1000000" , "1000000" 'F
      82. Data "0111110" , "1000001" , "1000001" , "1001001" , "1001111" 'G
      83. Data "1111111" , "0001000" , "0001000" , "0001000" , "1111111" 'H
      84. Data "0000000" , "0000000" , "1111111" , "0000000" , "0000000" 'I
      85. Data "1111110" , "0000001" , "0000001" , "0000110" , "0000000" 'J
      86. Data "1111111" , "0001000" , "0010100" , "0100010" , "1000001" 'K
      87. Data "1111111" , "0000001" , "0000001" , "0000001" , "0000000" 'L
      Alles anzeigen


      Schau Dir es mal an. Die Arbeitsweise ist sehr einfach. Funktioniert allerdings in dieser Form bisher nur für eine Matrix mit 2 Zeichen
    • Lothringen schrieb:

      ich habe die Demoversion 2.0.7.9
      Ich denke mal es liegt an der Demoversion. Hol dir einfach mal die Vollversion. Die kostet nur ca 90 Euro und du hast immer die neuesten Upadates.

      Lothringen schrieb:

      Ach ja ich habe versprochen meinen Lösungsansatz mal rüber zu bringen
      Schau ich mir mal an.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Hallo,
      ich habe mal Dein Programm auf dem Bascom-Demo installiert. Da das Demoprogramm "FLIP" anscheinend nicht kennt, habe ich ein kleines Zusatzprogramm zum Bit-Tausch eingestzt.
      Es funktioniert alles, nur die Zeichen spielen verrückt. (stehen Kopf oder so) siehe Bilder (Der Bildtext zeigt welche Zeichen ich verwendet habe.) Vielleicht ist es nur eine Kleinigkeit.

      Zum Zusatzprogramm: Zeile 26-28 PortD geändert in PortB, da mir in meinem Aufbau PortD nicht zugänglich sind
      Zeile 47 zusätzliche DIMs
      Zeile 83, 90 ,97, 104 Sprung zum Bittausch statt "FLIP"
      Zeile 177 Bittausch-Programm
      Leider konnte ich den Fehler bei der Zeichenausgabe nicht entdecken.
      Es ist natürlich schwer in einem fertigen Programm einen solchen Fehler zu finden.

      Durch die Größe des Programms ist es recht langsam. Laufschrift wohl nur schwer möglich.

      BASCOM-Quellcode: Matrix Programm auf Demo

      1. '2 x 2x5x7 Punkt-Matrix-Anzeige
      2. 'Ausgabe von 15 Byte je 10x7 Display
      3. 'Byte-Reihenfolge
      4. '
      5. 'Byte 3 Byte 2 Byte 1
      6. '
      7. 'Spalten 5 Bit u.Daten 3 Bit DS1 Daten 2x4 Bit Daten 3 Bit u. Spalten 5 Bit DS2
      8. '
      9. 'Als Beispiel für die erste Spalte von beiden Anzeigen
      10. '&b10000xxx &Bxxxx_xxxx &Bxxx10000
      11. '
      12. 'Ausgabe der Bits an Shiftregister 74HC595
      13. 'Byte 1 Byte 2 Byte 3
      14. '76543210 76543210 76543210
      15. '
      16. 'OE dauerhaft auf GND und /SRCLK (Reset) dauerhaft auf VCC
      17. 'Spaltenzähler für DS1 von Spalte 1 - 5 30,29,27,23,15
      18. 'Spaltebzähler für DS2 von Spalte 1 - 5 240,232,216,184,120
      19. $regfile = "m8def.dat"
      20. $crystal = 8000000
      21. $hwstack = 100
      22. $swstack = 100
      23. $framesize = 100
      24. Daten Alias PortB.3
      25. Sck Alias PortB.5
      26. Rck Alias PortB.2
      27. Config Daten = Output 'Ausgabe der Daten an die Schieberegister
      28. Config Sck = Output 'Takt zum Schieben der Daten im 74HC595
      29. Config Rck = Output 'Übernahmetakt in das Ausgaberegister vom 74HC595
      30. Dim Text As String * 20 , Temp_text As String * 20
      31. Dim Buchstabe1 As String * 1 , Buchstabe2 As String * 1
      32. Dim Buchstabe3 As String * 1 , Buchstabe4 As String * 1
      33. Dim Spalte_ds1 As Byte , Spalte_ds2 As Byte , Spalte_ds3 As Byte , Spalte_ds4 As Byte
      34. Dim Zaehler As Byte , Spaltenzaehler As Byte , Zeilenzaehler As Byte
      35. Dim Zaehler1 As Word , Zaehler2 As Word , Zaehler3 As Word , Zaehler4 As Word
      36. Dim Ascii_code1 As Word , Ascii_code2 As Word , Ascii_code3 As Word , Ascii_code4 As Word
      37. Dim Temp_daten1 As Byte , Temp_daten2 As Byte , Temp_daten3 As Byte , Temp_daten4 As Byte
      38. 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
      39. Dim Bildspeicher(30) As Byte , Bildspeicherzaehler As Byte
      40. Dim Buchstabenmuster1(5) As Byte , Buchstabenmuster2(5) As Byte
      41. Dim Buchstabenmuster3(5) As Byte , Buchstabenmuster4(5) As Byte
      42. Dim A As Byte , E As Byte , I As Byte , B As String * 9 , C As String * 9 , D As String * 9 'zusätzliche DIM
      43. Text = "Test"
      44. Temp_text = Text
      45. Rck = 1
      46. Gosub Daten_sammeln
      47. Do
      48. Gosub Anzeige
      49. Loop
      50. End
      51. Daten_sammeln:
      52. Buchstabe1 = Mid(text , 1 , 1) 'Buchstabe 1 ganz links
      53. Buchstabe2 = Mid(text , 2 , 1) 'Buchstabe 2
      54. Buchstabe3 = Mid(text , 3 , 1) 'Buchstabe 3
      55. Buchstabe4 = Mid(text , 4 , 1) 'Buchstabe 4 ganz rechts
      56. Ascii_code1 = Asc(buchstabe1) 'Buchstabe in Ascii-Code umwandeln
      57. Ascii_code1 = Ascii_code1 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      58. Ascii_code1 = Ascii_code1 * 5 'mit 5 multizieren, um auf Anfangsindex der Tabelle zu kommen
      59. Ascii_code2 = Asc(buchstabe2) 'Buchstabe in Ascii-Code umwandeln
      60. Ascii_code2 = Ascii_code2 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      61. Ascii_code2 = Ascii_code2 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      62. Ascii_code3 = Asc(buchstabe3) 'Buchstabe in Ascii-Code umwandeln
      63. Ascii_code3 = Ascii_code3 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      64. Ascii_code3 = Ascii_code3 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      65. Ascii_code4 = Asc(buchstabe4) 'Buchstabe in Ascii-Code umwandeln
      66. Ascii_code4 = Ascii_code4 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      67. Ascii_code4 = Ascii_code4 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      68. For Spaltenzaehler = 0 To 4
      69. Zaehler1 = Ascii_code1 + Spaltenzaehler 'Zähler für Datentabelle
      70. Temp_daten1 = Lookup(zaehler1 , Zeichensatz) 'Daten aus Tabelle holen
      71. A = Temp_daten1
      72. Gosub Tausch
      73. Temp_daten1 = E
      74. 'Temp_daten1 = Flip(temp_daten1) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      75. Buchstabenmuster1(spaltenzaehler + 1) = Temp_daten1 'In Buchstabenmuster speichern
      76. Zaehler2 = Ascii_code2 + Spaltenzaehler 'Zähler für Datentabelle
      77. Temp_daten2 = Lookup(zaehler2 , Zeichensatz) 'Daten aus Tabelle holen
      78. A = Temp_daten2
      79. Gosub Tausch
      80. Temp_daten1 = E
      81. 'Temp_daten2 = Flip(temp_daten2) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      82. Buchstabenmuster2(spaltenzaehler + 1) = Temp_daten2 'In Buchstabenmuster speichern
      83. Zaehler3 = Ascii_code3 + Spaltenzaehler 'Zähler für Datentabelle
      84. Temp_daten3 = Lookup(zaehler3 , Zeichensatz) 'Daten aus Tabelle holen
      85. A = Temp_daten3
      86. Gosub Tausch
      87. Temp_daten1 = E
      88. 'Temp_daten3 = Flip(temp_daten3) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      89. Buchstabenmuster3(spaltenzaehler + 1) = Temp_daten3 'In Buchstabenmuster speichern
      90. Zaehler4 = Ascii_code4 + Spaltenzaehler 'Zähler für Datentabelle
      91. Temp_daten4 = Lookup(zaehler4 , Zeichensatz) 'Daten aus Tabelle holen
      92. A = Temp_daten4
      93. Gosub Tausch
      94. Temp_daten1 = E
      95. 'Temp_daten4 = Flip(temp_daten4) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      96. Buchstabenmuster4(spaltenzaehler + 1) = Temp_daten4 'In Buchstabenmuster speichern
      97. Next Spaltenzaehler
      98. Bildspeicherzaehler = 1
      99. For Spaltenzaehler = 0 To 4
      100. Temp_daten1 = Buchstabenmuster1(spaltenzaehler + 1)
      101. Temp_daten2 = Buchstabenmuster2(spaltenzaehler + 1)
      102. Temp_daten3 = Buchstabenmuster3(spaltenzaehler + 1)
      103. Temp_daten4 = Buchstabenmuster4(spaltenzaehler + 1)
      104. Spalte_ds1 = Lookup(spaltenzaehler , Spalten_ds1)
      105. Spalte_ds2 = Lookup(spaltenzaehler , Spalten_ds2)
      106. Temp_byte1 = Temp_daten4 'Buchstabe 4 in Temp_byte1 laden
      107. Shift Temp_byte1 , Right , 4 'Bits von Temp_byte1 5 x nach rechts verschieben
      108. Temp_byte1 = Temp_byte1 Or Spalte_ds2 'Temp_byte1 mit Spalte x von DS2 verknüpfen
      109. Temp_byte3 = Temp_daten3 'Buchstabe 3 in Temp_byte3 laden
      110. Shift Temp_byte3 , Left , 5 'Bits von Temp_byte3 4 x nach links schieben
      111. Temp_byte3 = Temp_byte3 Or Spalte_ds1 'Temp_byte3 mit Spalte x von DS1 verknüpfen
      112. Temp_byte2 = Temp_daten4 'Buchstabe 4 in Temp_byte2 laden
      113. Shift Temp_byte2 , Left , 4 'Bits von Temp_byte2 3 x nach links verschieben
      114. Shift Temp_daten3 , Right , 3 'Temp_daten1 (Buchstabe 3) 4 x nach rechts verschieben
      115. Temp_byte2 = Temp_byte2 Or Temp_daten3 'Temp_byte2 mit Temp_daten1 verknüpfen
      116. Temp_byte4 = Temp_daten2 'Buchstabe 2 in Temp_byte4 laden
      117. Shift Temp_byte4 , Right , 4 'Bits von Temp_byte4 5 x nach rechts verschieben
      118. Temp_byte4 = Temp_byte4 Or Spalte_ds2 'Temp_byte4 mit Spalte x von DS2 verknüpfen
      119. Temp_byte6 = Temp_daten1 'Buchstabe 1 in Temp_byte6 laden
      120. Shift Temp_byte6 , Left , 5 'Bits von Temp_byte6 4 x nach links schieben
      121. Temp_byte6 = Temp_byte6 Or Spalte_ds1 'Temp_byte6 mit Spalte x von DS1 verknüpfen
      122. Temp_byte5 = Temp_daten2 'Buchstabe 2 in Temp_byte5 laden
      123. Shift Temp_byte5 , Left , 4 'Bits von Temp_byte5 3 x nach links verschieben
      124. Shift Temp_daten1 , Right , 3 'Temp_daten1 (Buchstabe 1) 4 x nach rechts verschieben
      125. Temp_byte5 = Temp_byte5 Or Temp_daten1 'Temp_byte5 mit Temp_daten1 verknüpfen
      126. Bildspeicher(bildspeicherzaehler) = Temp_byte1 'Temp_byte1 an Bildspeicher übergeben
      127. Bildspeicher(bildspeicherzaehler + 1) = Temp_byte2 'Temp_byte2 an Bildspeicher übergeben
      128. Bildspeicher(bildspeicherzaehler + 2) = Temp_byte3 'Temp_byte3 an Bildspeicher übergeben
      129. Bildspeicher(bildspeicherzaehler + 3) = Temp_byte4 'Temp_byte4 an Bildspeicher übergeben
      130. Bildspeicher(bildspeicherzaehler + 4) = Temp_byte5 'Temp_byte5 an Bildspeicher übergeben
      131. Bildspeicher(bildspeicherzaehler + 5) = Temp_byte6 'Temp_byte6 an Bildspeicher übergeben
      132. Bildspeicherzaehler = Bildspeicherzaehler + 6
      133. Next Spaltenzaehler
      134. Return
      135. Anzeige:
      136. For Zaehler = 0 To 24 Step 6
      137. Shiftout Daten , Sck , Bildspeicher(zaehler + 1) , 0
      138. Shiftout Daten , Sck , Bildspeicher(zaehler + 2) , 0
      139. Shiftout Daten , Sck , Bildspeicher(zaehler + 3) , 0
      140. Shiftout Daten , Sck , Bildspeicher(zaehler + 4) , 0
      141. Shiftout Daten , Sck , Bildspeicher(zaehler + 5) , 0
      142. Shiftout Daten , Sck , Bildspeicher(zaehler + 6) , 0
      143. Rck = 0
      144. Rck = 1
      145. Next Zaehler
      146. Return
      147. Tausch: 'Bit-Tausch Bit0>Bit7,Bit1>Bit6,Bit2>Bit5, Bit3>Bit4
      148. C = Bin(a)
      149. B = ""
      150. For I = 1 To 8
      151. D = Right(c , I)
      152. Insertchar B , I , D
      153. Next I
      154. E = Binval(b)
      155. Return
      156. End
      157. Spalten_ds1:
      158. Data 30 , 29 , 27 , 23 , 15
      159. Spalten_ds2:
      160. Data 240 , 232 , 216 , 184 , 120
      161. $include "Zeichensatz.inc"
      162. 'Ende
      Alles anzeigen
      1 Test.JPG2 Test.JPG3 TEST.JPG4 abcd.JPG5 1234.JPG6 1111.JPG

      Gruß
    • Hallo,
      ich habe den Fehler gefunden. Es war mal wieder ein Tippfehler.
      Zeile 90+92 muß es Temp_daten2, Zeile 97+99 muß es Temp-Daten3, Zeile 104+106 muß es Temp-Daten4 heißen.
      Und außerdem waren bei mir die beiden Module rechts/links vertauscht
      Dann läuft das Programm. Zur besseren Anschauung stelle ich das Programm nochmals ein; allerdings ohne den Zeichensatz, da es sonst zu lang ist.

      BASCOM-Quellcode: Matrix-Programm für 2 Matrixmodule auf Bascom-Demo

      1. '2 x 2x5x7 Punkt-Matrix-Anzeige
      2. 'Ausgabe von 15 Byte je 10x7 Display
      3. 'Byte-Reihenfolge
      4. '
      5. 'Byte 3 Byte 2 Byte 1
      6. '
      7. 'Spalten 5 Bit u.Daten 3 Bit DS1 Daten 2x4 Bit Daten 3 Bit u. Spalten 5 Bit DS2
      8. '
      9. 'Als Beispiel für die erste Spalte von beiden Anzeigen
      10. '&b10000xxx &Bxxxx_xxxx &Bxxx10000
      11. '
      12. 'Ausgabe der Bits an Shiftregister 74HC595
      13. 'Byte 1 Byte 2 Byte 3
      14. '76543210 76543210 76543210
      15. '
      16. 'OE dauerhaft auf GND und /SRCLK (Reset) dauerhaft auf VCC
      17. 'Spaltenzähler für DS1 von Spalte 1 - 5 30,29,27,23,15
      18. 'Spaltebzähler für DS2 von Spalte 1 - 5 240,232,216,184,120
      19. $regfile = "m8def.dat"
      20. $crystal = 8000000
      21. $hwstack = 100
      22. $swstack = 100
      23. $framesize = 100
      24. Daten Alias Portd.2
      25. Sck Alias Portd.3
      26. Rck Alias Portd.4
      27. Config Daten = Output 'Ausgabe der Daten an die Schieberegister
      28. Config Sck = Output 'Takt zum Schieben der Daten im 74HC595
      29. Config Rck = Output 'Übernahmetakt in das Ausgaberegister vom 74HC595
      30. Dim Text As String * 20 , Temp_text As String * 20
      31. Dim Buchstabe1 As String * 1 , Buchstabe2 As String * 1
      32. Dim Buchstabe3 As String * 1 , Buchstabe4 As String * 1
      33. Dim Spalte_ds1 As Byte , Spalte_ds2 As Byte , Spalte_ds3 As Byte , Spalte_ds4 As Byte
      34. Dim Zaehler As Byte , Spaltenzaehler As Byte , Zeilenzaehler As Byte
      35. Dim Zaehler1 As Word , Zaehler2 As Word , Zaehler3 As Word , Zaehler4 As Word
      36. Dim Ascii_code1 As Word , Ascii_code2 As Word , Ascii_code3 As Word , Ascii_code4 As Word
      37. Dim Temp_daten1 As Byte , Temp_daten2 As Byte , Temp_daten3 As Byte , Temp_daten4 As Byte
      38. 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
      39. Dim Bildspeicher(30) As Byte , Bildspeicherzaehler As Byte
      40. Dim Buchstabenmuster1(5) As Byte , Buchstabenmuster2(5) As Byte
      41. Dim Buchstabenmuster3(5) As Byte , Buchstabenmuster4(5) As Byte
      42. Dim A As Byte , E As Byte , I As Byte , B As String * 9 , C As String * 9 , D As String * 9 'zusätzliche DIM
      43. Text = "Test"
      44. Temp_text = Text
      45. Rck = 1
      46. Gosub Daten_sammeln
      47. Do
      48. Gosub Anzeige
      49. Loop
      50. End
      51. Daten_sammeln:
      52. Buchstabe1 = Mid(text , 1 , 1) 'Buchstabe 1 ganz links
      53. Buchstabe2 = Mid(text , 2 , 1) 'Buchstabe 2
      54. Buchstabe3 = Mid(text , 3 , 1) 'Buchstabe 3
      55. Buchstabe4 = Mid(text , 4 , 1) 'Buchstabe 4 ganz rechts
      56. Ascii_code1 = Asc(buchstabe1) 'Buchstabe in Ascii-Code umwandeln
      57. Ascii_code1 = Ascii_code1 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      58. Ascii_code1 = Ascii_code1 * 5 'mit 5 multizieren, um auf Anfangsindex der Tabelle zu kommen
      59. Ascii_code2 = Asc(buchstabe2) 'Buchstabe in Ascii-Code umwandeln
      60. Ascii_code2 = Ascii_code2 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      61. Ascii_code2 = Ascii_code2 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      62. Ascii_code3 = Asc(buchstabe3) 'Buchstabe in Ascii-Code umwandeln
      63. Ascii_code3 = Ascii_code3 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      64. Ascii_code3 = Ascii_code3 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      65. Ascii_code4 = Asc(buchstabe4) 'Buchstabe in Ascii-Code umwandeln
      66. Ascii_code4 = Ascii_code4 - 32 'Von Ascii-Code 32 abziehen, da Tabelle bei 0 und nicht bei 32 beginnt
      67. Ascii_code4 = Ascii_code4 * 5 'mit 5 multiplizieren, um auf Anfangsindex der Tabelle zu kommen
      68. For Spaltenzaehler = 0 To 4
      69. Zaehler1 = Ascii_code1 + Spaltenzaehler 'Zähler für Datentabelle
      70. Temp_daten1 = Lookup(zaehler1 , Zeichensatz) 'Daten aus Tabelle holen
      71. A = Temp_daten1
      72. Gosub Tausch
      73. Temp_daten1 = E
      74. 'Temp_daten1 = Flip(temp_daten1) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      75. Buchstabenmuster1(spaltenzaehler + 1) = Temp_daten1 'In Buchstabenmuster speichern
      76. Zaehler2 = Ascii_code2 + Spaltenzaehler 'Zähler für Datentabelle
      77. Temp_daten2 = Lookup(zaehler2 , Zeichensatz) 'Daten aus Tabelle holen
      78. A = Temp_daten2
      79. Gosub Tausch
      80. Temp_daten2 = E
      81. 'Temp_daten2 = Flip(temp_daten2) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      82. Buchstabenmuster2(spaltenzaehler + 1) = Temp_daten2 'In Buchstabenmuster speichern
      83. Zaehler3 = Ascii_code3 + Spaltenzaehler 'Zähler für Datentabelle
      84. Temp_daten3 = Lookup(zaehler3 , Zeichensatz) 'Daten aus Tabelle holen
      85. A = Temp_daten3
      86. Gosub Tausch
      87. Temp_daten3 = E
      88. 'Temp_daten3 = Flip(temp_daten3) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      89. Buchstabenmuster3(spaltenzaehler + 1) = Temp_daten3 'In Buchstabenmuster speichern
      90. Zaehler4 = Ascii_code4 + Spaltenzaehler 'Zähler für Datentabelle
      91. Temp_daten4 = Lookup(zaehler4 , Zeichensatz) 'Daten aus Tabelle holen
      92. A = Temp_daten4
      93. Gosub Tausch
      94. Temp_daten4 = E
      95. 'Temp_daten4 = Flip(temp_daten4) 'Bits komplett tauschen Bit0 = Bit7, Bit1 = Bit6 usw.
      96. Buchstabenmuster4(spaltenzaehler + 1) = Temp_daten4 'In Buchstabenmuster speichern
      97. Next Spaltenzaehler
      98. Bildspeicherzaehler = 1
      99. For Spaltenzaehler = 0 To 4
      100. Temp_daten1 = Buchstabenmuster1(spaltenzaehler + 1)
      101. Temp_daten2 = Buchstabenmuster2(spaltenzaehler + 1)
      102. Temp_daten3 = Buchstabenmuster3(spaltenzaehler + 1)
      103. Temp_daten4 = Buchstabenmuster4(spaltenzaehler + 1)
      104. Spalte_ds1 = Lookup(spaltenzaehler , Spalten_ds1)
      105. Spalte_ds2 = Lookup(spaltenzaehler , Spalten_ds2)
      106. Temp_byte1 = Temp_daten4 'Buchstabe 4 in Temp_byte1 laden
      107. Shift Temp_byte1 , Right , 4 'Bits von Temp_byte1 5 x nach rechts verschieben
      108. Temp_byte1 = Temp_byte1 Or Spalte_ds2 'Temp_byte1 mit Spalte x von DS2 verknüpfen
      109. Temp_byte3 = Temp_daten3 'Buchstabe 3 in Temp_byte3 laden
      110. Shift Temp_byte3 , Left , 5 'Bits von Temp_byte3 4 x nach links schieben
      111. Temp_byte3 = Temp_byte3 Or Spalte_ds1 'Temp_byte3 mit Spalte x von DS1 verknüpfen
      112. Temp_byte2 = Temp_daten4 'Buchstabe 4 in Temp_byte2 laden
      113. Shift Temp_byte2 , Left , 4 'Bits von Temp_byte2 3 x nach links verschieben
      114. Shift Temp_daten3 , Right , 3 'Temp_daten1 (Buchstabe 3) 4 x nach rechts verschieben
      115. Temp_byte2 = Temp_byte2 Or Temp_daten3 'Temp_byte2 mit Temp_daten1 verknüpfen
      116. Temp_byte4 = Temp_daten2 'Buchstabe 2 in Temp_byte4 laden
      117. Shift Temp_byte4 , Right , 4 'Bits von Temp_byte4 5 x nach rechts verschieben
      118. Temp_byte4 = Temp_byte4 Or Spalte_ds2 'Temp_byte4 mit Spalte x von DS2 verknüpfen
      119. Temp_byte6 = Temp_daten1 'Buchstabe 1 in Temp_byte6 laden
      120. Shift Temp_byte6 , Left , 5 'Bits von Temp_byte6 4 x nach links schieben
      121. Temp_byte6 = Temp_byte6 Or Spalte_ds1 'Temp_byte6 mit Spalte x von DS1 verknüpfen
      122. Temp_byte5 = Temp_daten2 'Buchstabe 2 in Temp_byte5 laden
      123. Shift Temp_byte5 , Left , 4 'Bits von Temp_byte5 3 x nach links verschieben
      124. Shift Temp_daten1 , Right , 3 'Temp_daten1 (Buchstabe 1) 4 x nach rechts verschieben
      125. Temp_byte5 = Temp_byte5 Or Temp_daten1 'Temp_byte5 mit Temp_daten1 verknüpfen
      126. Bildspeicher(bildspeicherzaehler) = Temp_byte1 'Temp_byte1 an Bildspeicher übergeben
      127. Bildspeicher(bildspeicherzaehler + 1) = Temp_byte2 'Temp_byte2 an Bildspeicher übergeben
      128. Bildspeicher(bildspeicherzaehler + 2) = Temp_byte3 'Temp_byte3 an Bildspeicher übergeben
      129. Bildspeicher(bildspeicherzaehler + 3) = Temp_byte4 'Temp_byte4 an Bildspeicher übergeben
      130. Bildspeicher(bildspeicherzaehler + 4) = Temp_byte5 'Temp_byte5 an Bildspeicher übergeben
      131. Bildspeicher(bildspeicherzaehler + 5) = Temp_byte6 'Temp_byte6 an Bildspeicher übergeben
      132. Bildspeicherzaehler = Bildspeicherzaehler + 6
      133. Next Spaltenzaehler
      134. Return
      135. Anzeige:
      136. For Zaehler = 0 To 24 Step 6
      137. Shiftout Daten , Sck , Bildspeicher(zaehler + 1) , 0
      138. Shiftout Daten , Sck , Bildspeicher(zaehler + 2) , 0
      139. Shiftout Daten , Sck , Bildspeicher(zaehler + 3) , 0
      140. Shiftout Daten , Sck , Bildspeicher(zaehler + 4) , 0
      141. Shiftout Daten , Sck , Bildspeicher(zaehler + 5) , 0
      142. Shiftout Daten , Sck , Bildspeicher(zaehler + 6) , 0
      143. Rck = 0
      144. Rck = 1
      145. Next Zaehler
      146. Return
      147. Tausch: 'Bit-Tausch Bit7>Bit0,Bit6>Bit1,Bit5>Bit2,Bit4>Bit3,Bit3>Bit4,Bit2>Bit5,Bit1>Bit6,Bit0>Bit7
      148. C = Bin(a)
      149. B = ""
      150. For I = 1 To 8
      151. D = Right(c , I)
      152. Insertchar B , I , D
      153. Next I
      154. E = Binval(b)
      155. Return
      156. Spalten_ds1:
      157. Data 30 , 29 , 27 , 23 , 15
      158. Spalten_ds2:
      159. Data 240 , 232 , 216 , 184 , 120
      160. $include "Zeichensatz.inc"
      161. 'Ende
      Alles anzeigen


      Besten Dank für die tolle Arbeit und a_475_f10f3094 die Geduld an djmsc.
    • Schön, dass es jetzt funktioniert :)

      Lothringen schrieb:

      Habe für meine kleinen Dinge die Vollversion nie gebraucht.
      Aber gerade bei solchen Anzeigen kommst diu schnell an die 4 KB Grenze.
      Ich habe ja schon eine fast fertige Laufschrift und bin jetzt schon bei ca. 33% Speicherauslastung beim ATMega8.
      Also noch 18% mehr und deine Demo versagt.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Hallo djmsc
      Ich habe weiter gebastelt und hatte eine Idee.
      Ich steuere die bieden Doppel-Matrixen getrennt an.
      Dazu benutze ich 2 getrennte Datenleitungen und es funktioniert.
      Hier das Listing allerdings wegen Überlänge ohne Zeichensatz.

      Vielleicht geht das auch mit noch mehr Matrixen. Leider habe ich nur 2.
      Gruß

      Wie weit bist Du mit der Laufschrift ?

      BASCOM-Quellcode: 2 Doppelmatrixen mit 4 Zeichen

      1. 'Doppel-Matrix 5x7 4 Zeichen mit 2 Matrixen
      2. $regfile = "m8adef.dat" 'Prozessor
      3. $crystal = 3684000 'Taktfrequenz
      4. $baud = 19200
      5. $hwstack = 80
      6. $swstack = 80
      7. $framesize = 100
      8. Takt Alias Portb.5 'B.5 an SRCLK = Takt
      9. Config Takt = Output
      10. Daten Alias Portb.3 'B.3 an Serin2 = Dateneingabe
      11. Config Daten = Output
      12. Datenb Alias Portb.4 'B.4 an Serin1
      13. Config Datenb = Output
      14. Uebernahme Alias Portb.2 'B.2 an RCLK = Übernahme
      15. Config Uebernahme = Output
      16. 'OE = 0 = Output enable = Matrix ein/aus ; /SRCLK an VCC
      17. Dim Spa As String * 5 'Spalten Anfang + Ende
      18. Dim B(4) As String * 7
      19. Dim C(4) As Byte
      20. Dim Speicher(30) As Byte
      21. Dim I As Byte 'Spaltenzähler
      22. Dim N As Byte 'Speicherzähler
      23. Dim K As Byte
      24. Dim L As Byte
      25. Dim M As Byte
      26. Dim R(4) As String * 8
      27. Dim Text As String * 5
      28. Dim Buch(4) As Word
      29. Dim Matr(2) As Word
      30. Dim Zaehler As Byte
      31. Config Spi = Soft , Din = Pinb.4 , Dout = Daten , Ss = Uebernahme , Clock = Takt , Mode = 0 'SPI-Soft
      32. Spiinit 'SPI initialisieren
      33. Waitms 50
      34. '-------------------------------------------------
      35. Text = "Test" 'Texteingabe
      36. '-------------------------------------------------
      37. 'Zeichen auf Buchstabenliste setzen
      38. For I = 1 To 4
      39. R(i) = Mid(text , I , 1) 'Buchstabe lesen
      40. Buch(i) = Asc(r(i)) 'ASC-Code
      41. Buch(i) = Buch(i) - 32 'Tabelle beginnt bei 32
      42. Buch(i) = Buch(i) * 5 'Tabellenspalte
      43. Next I
      44. 'Zeichen steuern
      45. N = 1
      46. L = 1
      47. M = 2
      48. Gosub Zeichen
      49. N = 16
      50. L = 3
      51. M = 4
      52. Gosub Zeichen
      53. 'Zeichen ausgeben
      54. Do
      55. Gosub Anzeigea
      56. Gosub Anzeigeb
      57. Loop
      58. End
      59. 'Zeichen vorbereiten und speichern
      60. Zeichen:
      61. For I = 0 To 4
      62. For K = L To M
      63. Matr(k) = Buch(k) + I
      64. C(k) = Lookup(matr(k) , Buchstabenliste)
      65. B(k) = Bin(c(k))
      66. Next K
      67. Spa = Lookupstr(i , Grund) 'Spalten Anfang+Ende
      68. R(1) = Spa + Left(b(l) , 3)
      69. R(2) = Mid(b(l) , 4 , 4) + Left(b(m) , 4)
      70. R(3) = Mid(b(m) , 5 , 3) + Spa
      71. Speicher(n) = Binval(r(1)) 'in Binär-Code wandeln
      72. Speicher(n + 1) = Binval(r(2))
      73. Speicher(n + 2) = Binval(r(3))
      74. N = N + 3
      75. Next I
      76. Return
      77. Anzeigea:
      78. For Zaehler = 1 To 15 Step 3
      79. Shiftout Daten , Takt , Speicher(zaehler) , 1
      80. Shiftout Daten , Takt , Speicher(zaehler + 1) , 1
      81. Shiftout Daten , Takt , Speicher(zaehler + 2) , 1
      82. Uebernahme = 0
      83. Uebernahme = 1
      84. Next Zaehler
      85. Return
      86. Anzeigeb:
      87. For Zaehler = 16 To 30 Step 3
      88. Shiftout Datenb , Takt , Speicher(zaehler) , 1
      89. Shiftout Datenb , Takt , Speicher(zaehler + 1) , 1
      90. Shiftout Datenb , Takt , Speicher(zaehler + 2) , 1
      91. Uebernahme = 0
      92. Uebernahme = 1
      93. Next Zaehler
      94. Return
      95. End
      96. Grund:
      97. Data "01111" , "10111" , "11011" , "11101" , "11110"
      98. 'Hier Buchstabenliste einfügen = Zeichensatz
      Alles anzeigen
    • Lothringen schrieb:

      Ich meine irgend ein Teilnehmer habe von einer Laufschrift für die 2 Doppelmatrixen gesprochen.
      Das war ich :)

      Lothringen schrieb:

      Hat da jemand weiter geforscht?
      Leider bin ich im Moment auch noch nicht sehr viel weiter gekommen (viele Überstunden in der Firma :( ). Bleibe aber dran.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.