Ich habe den Code des 8x 7Segment-Displays etwas modifiziert.
Die leeren Stellen werden nun ausgeschaltet.
Der Rest vom Code ist wie gehabt.
In der Hauptschleife wird immer initialisiert, da ich wohl Probleme mit EMV habe. Vielleicht sollte ich ein paar Pullups nutzen.
Viel Spass
Alles anzeigen
Die leeren Stellen werden nun ausgeschaltet.
Der Rest vom Code ist wie gehabt.
In der Hauptschleife wird immer initialisiert, da ich wohl Probleme mit EMV habe. Vielleicht sollte ich ein paar Pullups nutzen.
Viel Spass
Quellcode
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $hwstack = 256
- $swstack = 256
- $framesize = 256
- Baud 9600
- Wait 1
- Config Portc.0 = Output : Din_display Alias Portc.0
- Config Portc.1 = Output : Clk_display Alias Portc.1
- Config Portc.4 = Output : Cs_display Alias Portc.4
- Dim Zahl As Dword
- Dim Laenge As Byte
- Dim I As Byte
- Dim Ii As Byte
- Const Anzahl_displays = 8
- 'anzuzeigende Werte an den einzelnen Stellen
- Dim Display_adress As Byte , Display_daten As Byte
- Dim N_1 As Byte , N As Word
- Dim Tausender As Word , Hunderter As Word , Zehner As Word , Einer As Word
- Gosub Init_max7219
- Dim W_st(anzahl_displays) As Byte
- Dim Anzeigestr As String * 9 At W_st Overlay 'Display initialisieren
- '#####################################################
- Do
- Anzeigestr = ""
- Gosub Init_max7219
- Zahl = Zahl + 1
- Anzeigestr = Str(zahl)
- Gosub Anzeigen
- Loop
- End
- '#####################################################
- Anzeigen: 'senden der anzuzeigenden Zahlen an den einzelnen 7-Segmentanzeigen
- Laenge = Len(anzeigestr)
- Ii = Laenge + 1
- For I = 1 To Laenge Step 1
- Ii = Ii - 1
- Display_adress = I : Display_daten = W_st(ii)
- Cs_display = 0
- Shiftout Din_display , Clk_display , Display_adress , 1
- Shiftout Din_display , Clk_display , Display_daten , 1
- Cs_display = 1
- Next I
- Laenge = Laenge + 1
- For I = Laenge To 8 Step 1
- Display_adress = I : Display_daten = 15
- Cs_display = 0
- Shiftout Din_display , Clk_display , Display_adress , 1
- Shiftout Din_display , Clk_display , Display_daten , 1
- Cs_display = 1
- Next I
- Return