Herzlich Willkommen im einzigen (deutschsprachigem) Picaxe-Forum.

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

Basic's

4-stellige 7-Segment mit der Picaxe

 von BoomBoomMagic , 02.03.2019 14:39

Ich habe ja schon die ein oder andere Möglichkeit hier aufgezeigt , wie man eine 7 Segmentanzeige mit der Picaxe benutzen kann.

Heute stelle ich mal das Modul : TM1637 vor , mit dem es unheimlich einfach ist , eine 4-stellige 7-Segmentanzeige anzusteuern.



Diese Module gibt es in verschiedenen Anzeigefarben ( weiss , blau , gelb , grün , rot ) und bei Ebay von 1€ (aus China) bis 5€ aus Deutschland.



Benötigt werden lediglich 4 Anschlüsse : 5V+ , GND , Clock , Data
Die Module arbeiten auf I²C Basis.
Da aber die Picaxe das nicht wirklich kann , ist das auch nicht weiter schlimm , das werden wir dann einfach software seitig erledigen.

Die Einsatzmöglichkeiten sind vielfältig
- Uhrenmodul
- Temperaturenanzeige
- Spannungsanzeige
ect.


Ich habe mal einen Beispielcode geschreiben , der lediglich eine Zähler von 1000 bis 9999 hoch zählt.

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
 

#picaxe 08m2
 

;( 0 1 2 3 4 5 6 7 8 9 A b C d E F Strich leer)
DATA 0,($3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f,$77,$7c,$39,$5e,$79,$71, $40, $00)
 

 
symbol dio = c.1
symbol clk = c.2
symbol D3 = b2 ' Variable für Ziffer 1 / 1.Segment
symbol D2 = b3 ' Variable für Ziffer 2 / 2.Segment
symbol D1 = b4 ' Variable für Ziffer 3 / 3.Segment
symbol D0 = b5 ' Variable für Ziffer 4 / 4.Segment
symbol Zaehler = w10
symbol Zaehler2 = w11
symbol Dummy = w12
 

gosub brightness
 

do
 
'Beispiel :
' Zähler zählt von 1000 bis 9999 hoch ....
 

for w10 = 1000 to 9999
w11=w10

' Tauender ( 1. Stelle)
d3=w11/1000
dummy=d3*1000
w11=w11-dummy
'------------
' Hunderter ( 2. Stelle)
d2=w11/100
dummy=d2*100
w11=w11-dummy
'------------
' Zehner ( 3. Stelle)
d1=w11/10
dummy=d1*10
'------------
' Einer ( 4. Stelle)
d0=w11-dummy

gosub SDISPLAY
pause 1

next w10
 

loop
end
 
;===========================================================================
 

 
SDISPLAY:
;aktivieren des autom. weiterspringen zum nächsten Segment
call i2CStart
b0 = $40
call i2CWrByte
call i2CStop

;springe zum ersten (ganz links ) Segement
call i2CStart
b0 = $C0
call i2CWrByte
 
;erste Wert
read D3,b0
call i2CWrByte

;zweite Wert
read D2,b0
call i2CWrByte
 
;dritte Wert
read D1,b0
call i2CWrByte
 
;vierte Wert
read D0,b0
call i2CWrByte

call i2CStop
return
 
i2CStart:
high clk
high dio
low dio
low clk
return

i2CStop:
low clk
low dio
high clk
high dio
return
 
;
i2CWrByte: ;outpinC.1 = dio
outpinc.1 = bit0:pulsout clk, 1
outpinc.1 = bit1:pulsout clk, 1
outpinc.1 = bit2:pulsout clk, 1
outpinc.1 = bit3:pulsout clk, 1
outpinc.1 = bit4:pulsout clk, 1
outpinc.1 = bit5:pulsout clk, 1
outpinc.1 = bit6:pulsout clk, 1
outpinc.1 = bit7:pulsout clk, 1
pulsout clk, 1
return
 
;Setze die Helligkeit ($88 = AN, $88 bis $8F = Helligkeitsstufen)
brightness:
call i2cstart
b0 = 138
call i2CWrByte
call i2CStop
return
 
 



Hierzu gibt es natürlich auch ein Video .....



Man muß sich eigentlich nicht sooo genau damit beschäftigen wie das Teil jetzt im Einzelnen genau funktioniert.
Wichtig ist , man benötigt für eine 4-stellige Zahl / Wert eben 4 einzelne Variablen .
Löst die 4-Stellige Zahl in ihrer Wertigkeit auf und weist sie den passenden Variablen zu.

Die Prozeduren sind so "eingestellt" das immer 4 Werte ( D3 , D2 , D1 , D0 ) erwartet werden und von links nach rechts gesendet wird.


Jetzt haben diese einzelnen Segmente ja noch unten rechts Punkte.
Das ist von Vorteil , wenn man z.B. eine Spannung anzeigen lassen will ( z.B.: 3,59)
Möchte man diesen Punkt aktivieren , addiert man zu den jeweilgen Wert ( D3 , D2 , D1 , D0 ) den Wert : 128
(Im Prinzip wird hiermit das 7.Bit auf 1 gesetzt )
Würde jetzt in diesem Beispiel so aussehen das man in der Prozedur :SDISPLAY folgende Zeilen ergänzt :

;zweite Wert
read D2,b0
D2 = D2 +128
call i2CWrByte


*** Die Picaxe muß nicht alles können , es reicht wenn sie sagt wo's lang geht ***

BoomBoomMagic
Beiträge: 533
Registriert am: 24.01.2019

Themen Überblick

Betreff Absender Datum
4-stellige 7-Segment mit der Picaxe BoomBoomMagic 02.03.2019
RE: 4-stellige 7-Segment mit der Picaxe harry02 07.03.2019
RE: 4-stellige 7-Segment mit der Picaxe BoomBoomMagic 07.03.2019
RE: 4-stellige 7-Segment mit der Picaxe BoomBoomMagic 07.03.2019
 

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