Herzlich Willkommen im einzigen (deutschsprachigem) Picaxe-Forum.

Der Ursprung dieses Forum reicht bis in das Jahr 2008 zurück

AVR / Atmel

der TM1637 - 4fach 7-Segmenttreiber

 von BoomBoomMagic , 27.01.2020 18:56

Da es ja grad nix Neues hier gibt , dachte ich , ich wärm mal ne alte Kamelle auf


Heute geht es um den : TM1637






Der TM1637 ist äußerst einfach zu programmieren.
Er benötigt lediglich Clock und Data ( und natürlich Spannung , klar )

Der Punkt kann frei wählbar gesetzt werden , so das man ihn einsetzen kann für :
- Spannung messen
- Strom messen
- Uhr(zeit)
- Temperatur messen
- Daten
und vieles mehr

Er kann nur Zahlen anzeigen , darum wird auch nur ein WORD benutzt / gebraucht
Da er nur 2 Leitungewn brauch , können auch mehrere TM1637 gleichzeitig genutzt werden , was aber dann schon mehr für Fortgeschrittenere ist

Hier dann mal ein kleines Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
 

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100
 
Config Portc.5 = Output ' clock
Config Portc.4 = Output ' Dout
 
Clk Alias Portc.5
Dout Alias Portc.4
Din Alias Pinc.4
 
Declare Sub Send_Display(byval Displaywert As Word) 'The display can only show numbers
Declare Sub I2C_write(byval Bdata As Byte)
Declare Sub I2C_on()
Declare Sub I2C_off()
Declare Sub I2C_start()
Declare Sub I2C_stop()
Declare Sub I2C_ack()
 

Dim Zaehler As Byte
Dim Str_Displaywert As String * 5
Dim Ascii As String * 1
Dim w As Word
 
I2C_on
 
' Beispiel : zählt von 1000 bis 9999
Do
For w = 1000 To 9999
Send_Display w
Waitms 50
Next w
Loop
End
 

'-----------------------------------------------------------------
Sub I2C_ack()
Reset CLK
Waitus 5
Reset Dout
Bitwait Din , Reset
Set CLK
Waitus 2
Reset CLK
Set Dout
End Sub
 
Sub I2C_off()
I2C_start
I2C_write &H80 'schaltet das Display aus
I2C_ack
I2C_stop
End Sub
 
Sub I2C_on()
I2C_start
I2C_write &H88 'schaltet Display an mit 25% Helligkeit [ &H88 bis &H8F ]
I2C_ack
I2C_stop
End Sub
 

 
Sub I2C_start()
Set CLK
Set Dout
Waitus 2
Reset Dout
End Sub
 

Sub I2C_stop()
Reset CLK
Waitus 2
Reset Dout
Waitus 2
Set CLK
Waitus 2
Set Dout
End Sub
 

 
Sub Send_Display(byval Displaywert As Word)
 
Str_Displaywert = Str(Displaywert)
Str_Displaywert = Format(Str_Displaywert , " ")
 
I2C_start
I2C_write &H40 'Modus : autom. Stelle weiter gehen im Display ....
I2C_ack
I2C_stop
I2C_start
I2C_write &HC0 'Startadresse der 1. Anzeige (&HC0=1. / $HC1=2. / &HC2=3. $HC3=4. ---> immer von links)
I2C_ack
 
For Zaehler = 2 To 5
Ascii = Mid(Str_Displaywert , Zaehler , 1)
Select Case Ascii
Case "0" :I2C_write &B00111111
Case "1" :I2C_write &B00000110
Case "2" :I2C_write &B01011011
Case "3" :I2C_write &B01001111
Case "4" :I2C_write &B01100110
Case "5" :I2C_write &B01101101
Case "6" :I2C_write &B01111101
Case "7" :I2C_write &B00000111
Case "8" :I2C_write &B01111111
Case "9" :I2C_write &B01101111
Case Else:I2C_write &B00000000
End Select
I2C_ack
Next
 
I2C_stop
End Sub
 

Sub I2C_write(byval Bdata As Byte)
Local Bbitcounter As Byte
 
For Bbitcounter = 0 To 7 'LSB first
Reset CLK
Dout = Bdata.bbitcounter
Waitus 3
Set CLK
Waitus 3
Next
End Sub
 
 




Leider benutzt der TM1637 ein recht merkwürdiges Zahlensystem , so das man den Umstand gehen muss und es mit Select Case umrechnen lassen

"0" ---> dezimal 63
"1" ---> dezimal 6
"2" ---> dezimal 91
"3" ---> dezimal 79
"4" ---> dezimal 102
"5" ---> dezimal 109
"6" ---> dezimal 125
"7" ---> dezimal = 7
"8" ---> dezimal 127
"9" ---> dezimal 111

Ich habe leider noch keine Formel oder System zur Umrechnung gefunden , aber es geht auch so.
Und natürlich hier noch ein Video dazu :


***Lieber 2x mehr lesen , als 1x dumm fragen ***

BoomBoomMagic
Beiträge: 533
Registriert am: 24.01.2019

Themen Überblick

Betreff Absender Datum
der TM1637 - 4fach 7-Segmenttreiber BoomBoomMagic 27.01.2020
 

Picaxe Editor 5.5.5 Download
Update auf Picaxe Editor 5.5.6 Download
Picaxe Editor 6.x.x.x Download
Manual1.pdf        -      Grundwissen Download
Manual2.pdf        -      Befehle Download
Manual3.pdf        -      Beispiele Download


Press [Backspace] for back to Menu


Counter
Xobor Forum Software ©Xobor.de | Forum erstellen
Datenschutz