P10 Led Matrix am Atmega 8

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • P10 Led Matrix am Atmega 8

      Hallo Bascom Freunde!

      Seit einiger Zeit befasse ich mich mit P10 Led Matrixen.

      Ich habe mal das Programm aus "LED MATRIX P10 RED-GREEN 2 INCH" mit Bezeichnung
      " Matrix_A128_7_3.bas" versucht es auf einem Atmega8 zum laufen zu bringen, nun ja,
      es gelingt mir nach vielen Versuchen einfach nicht.

      Ich will (P10 mit nur einer Farbe) nur eine Variable auf einem oder zwei Display darstellen, also
      ohne Sonderfunktionen wie Laufschrift oder so, möchte nur gerne Messwerte darstellen.

      Leider bringe ich nur sinnloses Led flattern zustande, und komme einfach nicht auf den Fehler drauf.
      Vielleicht kann mir da wer helfen :)

      Im Anhang Anschluss und Schaltplan von P10 Modul


      mfg. Peter
      Files
    • nutpet wrote:

      P10 mit nur einer Farbe
      Dein verlinktes Programm ist aber ein P10 mit 2 Farben.

      Der Anschluss deines Moduls zeigt A und B.
      Das sind die Eingänge für einen 74HC138 Demultiplexer (der auch noch einen C- Eingang hätte)
      Da C auf GND liegt, sind A und B für die Ausgänge D0 bis D3 an diesem Chip zuständig.
      Diese Ausgänge versorgen jeweils eine von 4 LED-Spalten mit 5V
      Die Auswahl der Spalten wird in deinem Programm unter Display_refresh: zyklisch vorgenommen.
      Beim "Refreshen" springt er nach Load: und schaltet dort erstmal OE auf High (PWM = 255) um die LEDs für das Wechseln auszuschalten, es würde sonst flackern.
      Dann werden 48+2 Bytes Bit für Bit mit anschließendem Clock in die Schieberegister geschrieben.
      Nach der Next-Schleife wird der Store-Impuls angefangen und zurück im Interrupt die Ausgänge A und B gesetzt und der Store-Impuls abgeschlossen.

      Ich würde an dieser Stelle erstmal nachschauen, ob die Hardware in Ordning ist.
      Kommen die Signale A und B an? Also wechseln die 4 Spalten durch?
      Ist D_red, also PortD.3 mit DATA verbunden?
      D1 (store) und D2 (Clock) ebenso?
      B2 an OE bzw. EN?

      GND verbunden? :D

      Als nächstes würde ich die Ausgabe mit statischen Daten testen.
      In Zeile 132-139 statt
      D_red = Memory_red(c_1).0
      abwechselnd
      D_red = 1 und
      D_red = 0
      schreiben. Das sollte ein Streifenmuster auf dem Display ergeben.

      Wenn das soweit alles klar und i.O. ist, dann können wir an der Stelle weiter machen.
    • Hallo,
      Das mit der zweiten Farbe sollte keinen Einfluss haben, der Eingang fehlt ja beim einfarbigen Display,
      ich werde deinen Vorschlag mal probieren, und alle Anschlüsse nochmal kontrollieren
      ich muss mich vorweg gleich mal entschuldigen, ich antworte immer recht spät,
      aber ich bin Beruflich viel unterwegs,

      lg. Peter
    • hab nun nochmal alles kontrolliert und deinen Vorschlag probiert, leider ohne Erfolg,
      ich denke es ist ein Timer-Problem, da ich das Programm vom m128 zum m8 ummodeliert habe, Thread von Samego,
      mein Testprogramm läuft ja problemlos, kann aber nur einfaches Muster darstellen.

      Frage am Rande, wie stellt man den Code so schön Farbig dar ?

      BASCOM Source Code: P10_Matrix_(S-Streifen)

      1. '30032021
      2. 'P10 Ansteuerung mit Atm8
      3. 'Display mit 1 Farbe
      4. 'wanderndes Muster am Display
      5. 'geht mal
      6. '
      7. '
      8. 'Testprogramm !!!
      9. '
      10. '********************************************************************************************************************************
      11. '
      12. ' Atmega8 HUB 12, LED Matrix P10 32x16
      13. ' GND <-------> GND
      14. ' PD5 <-------> EN
      15. ' PD6 <-------> A
      16. ' PD7 <-------> B
      17. ' PD1 <-------> Shift Clock
      18. ' PD2 <-------> Store Clock
      19. ' PD3 <-------> DATA (Einfärbig)
      20. '
      21. '****************************************************************
      22. $regfile = "m8def.dat"
      23. $crystal = 8000000
      24. $hwstack = 8
      25. $swstack = 8
      26. $framesize = 8
      27. '****************************************************************
      28. Config Portd = Output
      29. Shiftpin Alias Portd.1
      30. Storepin Alias Portd.2
      31. Datapin Alias Portd.3
      32. Enpin Alias Portd.5
      33. A_ Alias Portd.6
      34. B_ Alias Portd.7
      35. '****************************************************************
      36. Dim Hell As Word 'Helligkeit Display
      37. Dim L1 As Byte 'Zeilenzähler
      38. Dim Zeichen As Byte
      39. Dim W1 As Byte 'Wert des Zeichens
      40. Dim Z1 As Word 'Zähler 1
      41. Dim Z2 As Word 'Zähler 2
      42. '****************************************************************
      43. 'Einstellungen
      44. Storepin = 0
      45. Shiftpin = 0
      46. Enpin = 1
      47. Hell = 100 '0=Dunkel, 255=Hell
      48. '****************************************************************
      49. 'Hauptschleife:
      50. Do
      51. For Z1 = 99 To 799
      52. Gosub Anzeigen
      53. 'Waitms 100
      54. Z2 = Z1 / 100
      55. Next Z1
      56. Loop
      57. '****************************************************************
      58. 'in Display schieben
      59. Anzeigen:
      60. For L1 = 0 To 3
      61. A_ = L1.0 'A-Matrix
      62. B_ = L1.1 'B Matrix
      63. W1 = Z2
      64. Gosub Wandeln
      65. Shiftout Datapin , Shiftpin , Zeichen
      66. W1 = Z2
      67. Gosub Wandeln
      68. Shiftout Datapin , Shiftpin , Zeichen
      69. W1 = Z2
      70. Gosub Wandeln
      71. Shiftout Datapin , Shiftpin , Zeichen
      72. W1 = Z2
      73. Gosub Wandeln
      74. Shiftout Datapin , Shiftpin , Zeichen
      75. Enpin = 1 'LEDs EIN
      76. Waitus Hell 'Helligkeit
      77. Enpin = 0 'LEDs AUS
      78. Waitus Dunkel
      79. Storepin = 0 : Storepin = 1
      80. Next L1
      81. Return
      82. '****************************************************************
      83. 'Zeichen suchen:
      84. Wandeln:
      85. If W1 = 0 Then : Zeichen = Lookup(l1 , S0) : End If
      86. If W1 = 1 Then : Zeichen = Lookup(l1 , S1) : End If
      87. If W1 = 2 Then : Zeichen = Lookup(l1 , S2) : End If
      88. If W1 = 3 Then : Zeichen = Lookup(l1 , S3) : End If
      89. If W1 = 4 Then : Zeichen = Lookup(l1 , S4) : End If
      90. If W1 = 5 Then : Zeichen = Lookup(l1 , S5) : End If
      91. If W1 = 6 Then : Zeichen = Lookup(l1 , S6) : End If
      92. If W1 = 7 Then : Zeichen = Lookup(l1 , S7) : End If
      93. Zeichen = 255 - Zeichen 'invertieren 0 = LEDs AN, 1 = LEDs AUS
      94. Return
      95. '****************************************************************
      96. 'Zeichentabelle:
      97. H_streifen:
      98. S0:
      99. Data &H80 , &H40 , &H20 , &H10 'Muster_0
      100. S1:
      101. Data &H08 , &H04 , &H02 , &H01 'Muster_1
      102. S2:
      103. Data &H01 , &H02 , &H04 , &H08 'Muster_2
      104. S3:
      105. Data &H10 , &H20 , &H40 , &H80 'Muster_3
      106. S4:
      107. Data &H10 , &H10 , &H10 , &H10 'Muster_4
      108. S5:
      109. Data &H20 , &H20 , &H20 , &H20 'Muster_5
      110. S6:
      111. Data &H40 , &H40 , &H40 , &H40 'Muster_6
      112. S7:
      113. Data &H80 , &H80 , &H80 , &H80 'Muster_7
      114. '*****************************************************************
      Display All
    • Dein Programm aus #4 hat viel zu wenig Stackwerte, mach da doch bitte mindestens je 32 rein.

      Ich sehe ein Waitus Dunkel im Programm. Dunkel als Variable sehe ich nicht deklariert oder habe ich es übersehen?

      Schau dir nochmal in Programm Beitrag #1 an, dort ist das Ändern von A und B nnur einmal pro Aufruf implementiert.
      Du machst aber eine For-Schleife draus und gibst den kompletten Inhalt auf einmal aus. Meines Erachtens wird das flackern.


      nutpet wrote:

      ich denke es ist ein Timer-Problem,
      Den Timer hast du jetzt aber nicht benutzt?
    • das Testprogramm läuft ja, das Programm mit dem Link läuft nicht(Matrix_A128_7_3(1)),
      hab was ganz neues gemacht:

      Source Code

      1. '01042021
      2. 'P10 Ansteuerung mit Atm8
      3. 'Display mit 1 Farbe
      4. '
      5. '
      6. 'Händisch (9) !!!
      7. '
      8. 'funktioniert
      9. 'die ersten Zahlen !!!
      10. '
      11. 'Binär 1 = Led off, 0 = Led on
      12. '
      13. '
      14. 'Testprogramm !!!!
      15. '4700 Byte
      16. '********************************************************************************************************************************
      17. '
      18. ' Atmega8 HUB 12, LED Matrix P10 32x16, 1 Farbe
      19. ' GND <-------> GND
      20. ' PD5 <-------> EN
      21. ' PD6 <-------> A
      22. ' PD7 <-------> B
      23. ' PD1 <-------> Shift Clock
      24. ' PD2 <-------> Store Clock
      25. ' PD3 <-------> DATA (Einfärbig)
      26. '****************************************************************
      27. $regfile = "m8def.dat"
      28. $crystal = 8000000
      29. $hwstack = 20
      30. $swstack = 20
      31. $framesize = 20
      32. '****************************************************************
      33. Config Portd = Output
      34. Shiftpin Alias Portd.1
      35. Storepin Alias Portd.2
      36. Datapin Alias Portd.3
      37. Enpin Alias Portd.5
      38. A_ Alias Portd.6
      39. B_ Alias Portd.7
      40. '****************************************************************
      41. 'Dim L1 As Byte 'Zeilenzähler
      42. Dim Z As Byte 'Zeichenwert
      43. Dim W1 As Byte 'Wert des Zeichens
      44. Dim Z1 As Byte 'Zähler 1
      45. Dim I As Byte 'Zähler 2
      46. '****************************************************************
      47. 'Einstellungen
      48. Storepin = 0
      49. Shiftpin = 0
      50. Enpin = 1
      51. '****************************************************************
      52. 'Hauptschleife:
      53. Do
      54. For Z1 = 0 To 3
      55. If Z1 = 0 Then Gosub Anzeigen0
      56. If Z1 = 1 Then Gosub Anzeigen1
      57. If Z1 = 2 Then Gosub Anzeigen2
      58. If Z1 = 3 Then Gosub Anzeigen3
      59. Enpin = 1 'LED on
      60. Waitus 50 'Helligkeit
      61. Enpin = 0 'LED off
      62. Next Z1
      63. Loop
      64. '****************************************************************
      65. 'in Display schieben
      66. Anzeigen0:
      67. A_ = 0 'A-Matrix
      68. B_ = 0 'B Matrix
      69. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      70. Z = &B11110011 : Shiftout Datapin , Shiftpin , Z
      71. Z = &B11110011 : Shiftout Datapin , Shiftpin , Z
      72. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      73. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      74. Z = &B11100111 : Shiftout Datapin , Shiftpin , Z
      75. Z = &B11000011 : Shiftout Datapin , Shiftpin , Z
      76. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      77. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      78. Z = &B11111001 : Shiftout Datapin , Shiftpin , Z
      79. Z = &B11000011 : Shiftout Datapin , Shiftpin , Z
      80. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      81. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      82. Z = &B10011001 : Shiftout Datapin , Shiftpin , Z
      83. Z = &B11110001 : Shiftout Datapin , Shiftpin , Z
      84. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      85. Storepin = 1 : Waitus 5 : Storepin = 0
      86. Return
      87. '****************************************************************
      88. 'in Display schieben
      89. Anzeigen1:
      90. A_ = 1 'A-Matrix
      91. B_ = 0 'B Matrix
      92. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      93. Z = &B11110011 : Shiftout Datapin , Shiftpin , Z
      94. Z = &B11100011 : Shiftout Datapin , Shiftpin , Z
      95. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      96. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      97. Z = &B11001111 : Shiftout Datapin , Shiftpin , Z
      98. Z = &B10011001 : Shiftout Datapin , Shiftpin , Z
      99. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      100. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      101. Z = &B11111001 : Shiftout Datapin , Shiftpin , Z
      102. Z = &B10011001 : Shiftout Datapin , Shiftpin , Z
      103. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      104. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      105. Z = &B10000001 : Shiftout Datapin , Shiftpin , Z
      106. Z = &B11100001 : Shiftout Datapin , Shiftpin , Z
      107. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      108. Storepin = 1 : Waitus 5 : Storepin = 0
      109. Return
      110. '****************************************************************
      111. 'in Display schieben
      112. Anzeigen2:
      113. A_ = 0 'A-Matrix
      114. B_ = 1 'B Matrix
      115. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      116. Z = &B11110011 : Shiftout Datapin , Shiftpin , Z
      117. Z = &B11110011 : Shiftout Datapin , Shiftpin , Z
      118. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      119. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      120. Z = &B10011001 : Shiftout Datapin , Shiftpin , Z
      121. Z = &B11111001 : Shiftout Datapin , Shiftpin , Z
      122. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      123. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      124. Z = &B10011001 : Shiftout Datapin , Shiftpin , Z
      125. Z = &B11111001 : Shiftout Datapin , Shiftpin , Z
      126. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      127. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      128. Z = &B11111001 : Shiftout Datapin , Shiftpin , Z
      129. Z = &B11001001 : Shiftout Datapin , Shiftpin , Z
      130. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      131. Storepin = 1 : Waitus 5 : Storepin = 0
      132. Return
      133. '****************************************************************
      134. 'in Display schieben
      135. Anzeigen3:
      136. A_ = 1 'A-Matrix
      137. B_ = 1 'B Matrix
      138. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      139. Z = &B11100001 : Shiftout Datapin , Shiftpin , Z
      140. Z = &B11110011 : Shiftout Datapin , Shiftpin , Z
      141. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      142. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      143. Z = &B10000001 : Shiftout Datapin , Shiftpin , Z
      144. Z = &B11110011 : Shiftout Datapin , Shiftpin , Z
      145. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      146. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      147. Z = &B11000011 : Shiftout Datapin , Shiftpin , Z
      148. Z = &B11100011 : Shiftout Datapin , Shiftpin , Z
      149. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      150. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      151. Z = &B11110000 : Shiftout Datapin , Shiftpin , Z
      152. Z = &B10011001 : Shiftout Datapin , Shiftpin , Z
      153. Z = &B11111111 : Shiftout Datapin , Shiftpin , Z
      154. Storepin = 1 : Waitus 5 : Storepin = 0
      155. Return
      156. '****************************************************************
      157. 'Ende
      Display All
      zum reindenken braucht man noch diese Tabelle
      Files
      • hub12_protocol1.jpg

        (153.09 kB, downloaded 12 times, last: )
      • Foto7888.jpg

        (441.14 kB, downloaded 8 times, last: )