TM1637 Basierte 7 Segment LED Anzeigeeinheit

    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!

    • TM1637 Basierte 7 Segment LED Anzeigeeinheit

      Hier mal ein kleines Testprogramm für TM1637 Basierte 7 Segment Module. Auch wenn es den Anschein hat, der TM1637 ist kein kompatibler I2C chip. Als reiner LED Anzeigentreiber eignet sich der TM1637 aufgrund der händischen Ansteuerung meiner Meinung nach eher weniger, da ist der I2C Bruder HT16K33 und die SPI Schwester MAX7219 besser geeignet. Wobei der TM1637 und der HT16K33 auch Tasen einlesen können. doch das gehört in andere Treads.
      Wie im Programm angegeben kommt das Programm nicht von mir, ich hab es nur einmal eingedampft und in Englisch kommentiert.

      BASCOM-Quellcode

      1. ' Sample to show how to use 4 Digit LED Display from Catalex. Display is TM1637 based
      2. 'Programm is reduced to show basic code, for advanced funtions and Keypad Readout please use the original program from:
      3. 'http://kaktusa.pl/tm1637-w-module-z-wyswietlaczem-led-7seg-4-cyfry/
      4. $Regfile="m328pdef.dat"
      5. $Crystal=16000000
      6. $hwstack=40
      7. $swstack=16
      8. $framesize=32
      9. $baud = 9600
      10. config Portc.0 = output ' define output for clock signal
      11. config Portc.1 = output ' define output for Data signal
      12. Clk Alias Portc.0 'Define alias for outputs - If you are using the original program do this in the include file
      13. Dio_set Alias Portc.1
      14. Dio_out Alias Portc.1
      15. Dio_in Alias Pinc.1
      16. Declare Sub Tm1637_wrbyte(byval Bajt As Byte)
      17. Dim Variable_a as byte
      18. Dim temp as byte
      19. 'first we have to set the Display Brightness:
      20. Gosub Tm1637_start
      21. Call Tm1637_wrbyte(&H8F ) 'Set display brightness; Hex 80=off; Hex 88= 1/16 brightness to Hex 8F = Maximun Brightness
      22. Gosub Tm1637_ack
      23. Gosub Tm1637_stop
      24. Print "Brigtness set"
      25. Do
      26. 'We want to display 1234
      27. Gosub Tm1637_start
      28. Call Tm1637_wrbyte(&H40) 'Data instruction set Hex44 write one byte to register (data write mode set) autoincrement adress mode
      29. Gosub Tm1637_ack
      30. Gosub Tm1637_stop
      31. '
      32. Gosub Tm1637_start
      33. Call Tm1637_wrbyte(&Hc0) 'addres instruction setting, first digit (HexC0) MSB display
      34. Gosub Tm1637_ack
      35. Call Tm1637_wrbyte(&B00000110) 'Digit 1; showing:1
      36. Gosub Tm1637_ack
      37. Call Tm1637_wrbyte(&B01011011) 'Digit 2; showing:2
      38. Gosub Tm1637_ack
      39. Call Tm1637_wrbyte(&B01001111) 'Digit 3; showing:3
      40. Gosub Tm1637_ack
      41. Call Tm1637_wrbyte(&B01100110) 'Digit 4; showing:4
      42. Gosub Tm1637_ack
      43. Gosub Tm1637_stop
      44. print "Display shows 1234"
      45. wait 1
      46. 'We want to display (empty)008
      47. Gosub Tm1637_start
      48. Call Tm1637_wrbyte(&H40) 'Data instruction set Hex44 write one byte to register (data write mode set) autoincrement adress mode
      49. Gosub Tm1637_ack
      50. Gosub Tm1637_stop
      51. '
      52. Gosub Tm1637_start
      53. Call Tm1637_wrbyte(&Hc0) 'addres instruction setting, first digit (HexC0) MSB display
      54. Gosub Tm1637_ack
      55. Call Tm1637_wrbyte(&B00000000) 'Digit 1; showing:(empty)
      56. Gosub Tm1637_ack
      57. Call Tm1637_wrbyte(&B00111111) 'Digit 2; showing:0
      58. Gosub Tm1637_ack
      59. Call Tm1637_wrbyte(&B00111111) 'Digit 3; showing:0
      60. Gosub Tm1637_ack
      61. Call Tm1637_wrbyte(127) 'Digit 4; showing:8
      62. Gosub Tm1637_ack
      63. Gosub Tm1637_stop
      64. Print "Displays shows (empty)008"
      65. wait 1
      66. 'We want to display (empty)08.8
      67. Variable_a = 127 'define Variable to display a 8
      68. Variable_a = Variable_a + 128 'Add 128 to show the dezimal point of this Digit
      69. Gosub Tm1637_start
      70. Call Tm1637_wrbyte(&H44) 'Data instruction set Hex44 write one byte to register (data write mode set) no autoincrement adress mode
      71. Gosub Tm1637_ack
      72. Gosub Tm1637_stop
      73. Gosub Tm1637_start
      74. Call Tm1637_wrbyte(&Hc2) 'Addres instruction setting, third digit (HexC2) MSB display
      75. Gosub Tm1637_ack
      76. Call Tm1637_wrbyte(Variable_a) 'Write Variable to defined digit
      77. Gosub Tm1637_ack
      78. Gosub Tm1637_stop
      79. Print "Displays shows (empty)08.8"
      80. wait 1
      81. Loop
      82. End
      83. Tm1637_start: '1637 start transmission
      84. Set Clk
      85. Set Dio_out
      86. Waitus 2
      87. Reset Dio_out
      88. Return
      89. Tm1637_ack: '1637 responses transmission
      90. Reset Clk
      91. Waitus 5 'After the eighth clock falling edge delay 5us, start determination ACK signal
      92. Reset Dio_set
      93. Bitwait Dio_in , Reset
      94. Set Clk
      95. Waitus 2
      96. Reset Clk
      97. Set Dio_set
      98. Return
      99. Tm1637_stop: '1637 Stop transmission
      100. Reset Clk
      101. Waitus 2
      102. Reset Dio_out
      103. Waitus 2
      104. Set Clk
      105. Waitus 2
      106. Set Dio_out
      107. Return
      108. Sub Tm1637_wrbyte 'Write byte variable passed by the call (Bajt)
      109. For Temp = 0 To 7 'send bit, LSB first
      110. Reset Clk
      111. Dio_out = Bajt.temp
      112. Waitus 3
      113. Set Clk
      114. Waitus 3
      115. Next Temp
      116. End Sub
      Alles anzeigen
      Modul ist von Catalex; 4-Digit Display v1.0
      Catalex.JPGCatalex_uno.JPG
    • Ich hab mal zwei gekauft ohne das ich auf den Chip und die Displaygrösse geachtet hab. Deswegen sieht man auf dem Foto das vom mir rangefummelte grosse LED Modul. Da ich dann eh eine Platine bauen musste und sowas meist in Lochraster mache hab ich dann doch auf den MAX7219 umgesattelt.
      Ich sehe keinen wirklichen grund die TM1637 gewollt einzusetzen, die Max 7219/21 und der HT16K33 sind da brauchbarer da sie ein "Ordentliches" Protokoll sprechen. War wie gesagt mehr als Referenz gedacht falls doch einmal jemand was mit machen will/muss und sich nicht wie ich ewig mit I2C rumschlägt bis er merkt das es nicht gehen kann.
      Mein test für die HT16k33 kommt später, den muss ich noch hübsch machen.

      Tobias

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