MAX7219 Ansteuern

    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!

    • Willkürliches Abschalten machen Wackelkontakte.
      Für dein Projekt legst du am besten einen neuen thread an, mit passender Überschrift. Hilfe ist dir hier im Forum sicher.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Thread und nun auch noch die günstige Hardware. Haben mein Spieltrieb geweckt.

      Dank Init_max7219: Beschreibung im Code von tschoeatsch sind die Registereinstellungen gut beschrieben.
      Im Code(Anhang) mein bescheidener Versuch dies Modul in ein Projekt einzubinden.
      1. Alle Seg der Dig sollen nach Start „dunkel“ bleiben.[ aber nicht alle im Code]
      2. mit Aufruf Helligkeit = 0 Segmente sichtbar abschwächen. [Ist OK]

      Nun möchte ich für Infos die einzelne Seg pro DIG aktualisieren. Z.b a,b,d,e,f,g
      Ja da verstehe ich den Max 7219 wohl nicht. Ist er nur ein knallharter BCD zu 7 Segmenten Konverter? (kann nur Dez 0-9)
      Wie in meinem Testcode zu sehen, ist es wohl nicht so. Aber Verstäntnis = Null
      Bin mir sicher hier im Forum, bekomme ich eine Antwort, wo mein Denkfehler ist.

      Gruß u. Dank ?(
      Fred
      Dateien
      • 7Seg.jpg

        (55,8 kB, 12 mal heruntergeladen, zuletzt: )
    • fredred schrieb:

      Ja da verstehe ich den Max 7219 wohl nicht. Ist er nur ein knallharter BCD zu 7 Segmenten Konverter? (kann nur Dez 0-9)
      Hallo fredred,

      im Modus "BCD" ist der MAX7219 eine knallharter BCD zu 7 Segmentdecoder. Im anderen verfügbaren Modus kannst Du jedes einzelne Segment beliebig ändern.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Danke Christian,

      ja ich werde den Modus mal abschalten.
      Was mich zur Anfrage angeregt hat, sind meine Spielereien.
      Warum wird bei Dez 10 nur Seg. g angezeigt und mit 60 ein H und mit 61 das L.
      Nur das A finde ich nicht dann hätte ich auch mein „HALLO“.
      Siehe ab Zeile 50.

      Gruß Fred

      7Seg.jpg

      Quellcode

      1. $regfile = "m644pdef.DAT" 'Momentan für einen ATMega644p ausgelegt
      2. $crystal = 16000000
      3. $baud = 19200 'wird nur benötigt für Printausgabe
      4. $eepleave
      5. $hwstack = 64
      6. $swstack = 64
      7. $framesize = 64
      8. 'Config des MAX7219
      9. Config Portb.5 = Output : Din_display Alias Portb.5
      10. Config Portb.7 = Output : Clk_display Alias Portb.7
      11. Config Portb.2 = Output : Cs_display Alias Portb.2
      12. Dim W_st(9) As Byte 'anzuzeigende Werte an den einzelnen Stellen
      13. Dim Display_adress As Byte , Display_daten As Byte
      14. Dim N_1 As Byte , N As Byte
      15. Dim I As Byte
      16. '####### Display initialisieren #######
      17. Gosub Init_max7219
      18. '######################################
      19. Do
      20. For I = 1 To 9 'komplettes LED-Array leeren
      21. N_1 = I
      22. W_st(i) = 74
      23. Gosub Anzeigen 'Schickt Daten von LED_digit und LED_data an MAX7219
      24. Next I
      25. Gosub Hell0 ' Helligkeit 0 '
      26. Wait 10
      27. '### Test Zähler 1 bis 8 Seg ###
      28. Gosub Hell6 ' Helligkeit 6
      29. For N = 9 To 1 Step -1
      30. I = 9 - N
      31. W_st(n) = I
      32. Gosub Anzeigen
      33. Wait 1
      34. Next N
      35. Wait 3
      36. '### alles okay ###
      37. ' Prob. Zeichen Einfügen z.b. "-HALLO--" Linksstart
      38. For I = 1 To 9 'komplettes LED-Array leeren
      39. N_1 = I
      40. W_st(i) = 0
      41. Gosub Anzeigen 'Schickt Daten von LED_digit und LED_data an MAX7219
      42. Next I
      43. For N = 9 To 1 Step -1
      44. I = 9 - N
      45. W_st(8) = 10 'ist Strich
      46. Gosub Anzeigen
      47. Wait 1
      48. W_st(7) = 60 'ist "H"
      49. Gosub Anzeigen
      50. W_st(6) = 65
      51. Gosub Anzeigen
      52. W_st(5) = 61 'ist "L"
      53. Gosub Anzeigen
      54. W_st(4) = 61 'ist "L"
      55. Gosub Anzeigen
      56. W_st(3) = 0 'ist "0"
      57. Gosub Anzeigen
      58. W_st(2) = 10 'ist Strich
      59. Gosub Anzeigen
      60. W_st(1) = 10 'ist Strich
      61. Gosub Anzeigen
      62. Wait 2
      63. Next N
      64. 'Wait 5
      65. Loop
      66. End
      67. '##senden der anzuzeigenden Zahlen an den einzelnen 7-Segmentanzeigen ##
      68. Anzeigen:
      69. For N_1 = 1 To 8
      70. Display_adress = N_1 : Display_daten = W_st(n_1)
      71. Cs_display = 0
      72. Shiftout Din_display , Clk_display , Display_adress , 1
      73. Shiftout Din_display , Clk_display , Display_daten , 1
      74. Cs_display = 1
      75. Next N_1
      76. Return
      77. Init_max7219: ' Initialisieren des MAX7219
      78. Display_adress = &H0C : Display_daten = &H00 ' Shutdown On
      79. Cs_display = 0
      80. Shiftout Din_display , Clk_display , Display_adress , 1
      81. Shiftout Din_display , Clk_display , Display_daten , 1
      82. Cs_display = 1
      83. Display_adress = &H09 : Display_daten = &HFF ' decode "B" für alle Digits, wenn als Daten 3 gesendet wird, wird '3'angezeigt
      84. Cs_display = 0
      85. Shiftout Din_display , Clk_display , Display_adress , 1
      86. Shiftout Din_display , Clk_display , Display_daten , 1
      87. Cs_display = 1
      88. Display_adress = &H0A : Display_daten = &H06 ' Helligkeit 0-F
      89. Cs_display = 0
      90. Shiftout Din_display , Clk_display , Display_adress , 1
      91. Shiftout Din_display , Clk_display , Display_daten , 1
      92. Cs_display = 1
      93. Display_adress = &H0B : Display_daten = 7 ' Anzahl Digits 6, Zählung startet mit 0
      94. Cs_display = 0
      95. Shiftout Din_display , Clk_display , Display_adress , 1
      96. Shiftout Din_display , Clk_display , Display_daten , 1
      97. Cs_display = 1
      98. Display_adress = &H0F : Display_daten = 0 ' Test Off
      99. Cs_display = 0
      100. Shiftout Din_display , Clk_display , Display_adress , 1
      101. Shiftout Din_display , Clk_display , Display_daten , 1
      102. Cs_display = 1
      103. Display_adress = &H0C : Display_daten = 1 ' Shutdown Off
      104. Cs_display = 0
      105. Shiftout Din_display , Clk_display , Display_adress , 1
      106. Shiftout Din_display , Clk_display , Display_daten , 1
      107. Cs_display = 1
      108. Return
      109. Hell0:
      110. Display_adress = &H0A : Display_daten = &H00 ' Helligkeit 0-F
      111. Cs_display = 0
      112. Shiftout Din_display , Clk_display , Display_adress , 1
      113. Shiftout Din_display , Clk_display , Display_daten , 1
      114. Cs_display = 1
      115. Return
      116. Hell6:
      117. Display_adress = &H0A : Display_daten = &H06 ' Helligkeit 0-F
      118. Cs_display = 0
      119. Shiftout Din_display , Clk_display , Display_adress , 1
      120. Shiftout Din_display , Clk_display , Display_daten , 1
      121. Cs_display = 1
      122. Return
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von fredred ()

    • Hallo Fred,

      ich hab jetzt nicht im Datenblatt nachgesehen, kann mir aber vorstellen, dass es das H und L für die Logikzustände High und Low gibt und dies von den Entwicklern für wichtig gehalten wurden. Segment G müßte ja der Mittelstrich sein und damit auch universell zu gebrauchen.

      Der andere Modus ist völlig frei, dient ja auch für die Ansteuerung der Punktmatrixanzeigen.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Wo werden Daten 2x gesendet? Kannst die Zeilennummer nennen (im Programm vom post#17).
      Wenn du die shiftout meinst, die 2x hintereinander ausgeführt werden, einmal wird die Adresse übermittelt, das andere Mal die Daten dazu.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------