Hallo,
wie ich schon an anderer Stelle geschrieben habe bin ich dabei mir eine Wetterstation zu bauen die verschiedene Messgrößen (z.B. Temperatur, Windgeschwindigkeit, usw.) auf 7 Segmentanzeigen bringen soll. Danke Dino's Hilfe hab ich jetzt eine Anzeige aufgebaut, die eigentlich auch die Werte so anzeigt wie ich es erwarte, wenn ich die einzelnen Werte direkt aus der Tabelle hole. Wenn ich aber eine Wert einer Variablen zuweise und den Wert dann anzeigen lassen will, dann zeigt er nicht den richtigen Wert an. Ist schwierig zu erklären. Hier mal der Code wie es funktioniert:
Hier wird wie zu erwarten 1 2 3 4 5 6 angezeigt
Hier wie es nicht funktioniert:
Jetzt wird angezeigt:
1 2 3 5 8 6
Ich denke es liegt an der Art und Weise wie ich die Werte aus der Tabelle raus hole.
Kann mir jemand weiter helfen
Danke schon mal.
Gruß
Roger
wie ich schon an anderer Stelle geschrieben habe bin ich dabei mir eine Wetterstation zu bauen die verschiedene Messgrößen (z.B. Temperatur, Windgeschwindigkeit, usw.) auf 7 Segmentanzeigen bringen soll. Danke Dino's Hilfe hab ich jetzt eine Anzeige aufgebaut, die eigentlich auch die Werte so anzeigt wie ich es erwarte, wenn ich die einzelnen Werte direkt aus der Tabelle hole. Wenn ich aber eine Wert einer Variablen zuweise und den Wert dann anzeigen lassen will, dann zeigt er nicht den richtigen Wert an. Ist schwierig zu erklären. Hier mal der Code wie es funktioniert:
Code:
' ' ----------------------------------------------------------------
' Autor : Roger
' 7 Segmentanzeige mit 74hc595 gemultiplexed
' Signale:
' Daten: Portb.0
' Takt (SCK): Portb.1 -> Pin 11 am 74hc595
' MasterReset (SCL): Portb.2 -> Pin 10 am 74hc595
' AusgabeRegister aktivieren: Portb.3 -> Pin 12 am 74hc595
'
' Einer: Portd.0 -> Enable für 7 Segmentanzeige_einer
' Zehner: Portd.1 -> Enable für 7 Segmentanzeige_zehner
' Hunderter Portd.2 -> Enable für 7 Segmentanzeige_hunderter
' Tausender Portd.3 -> Enable für 7 Segmentanzeige_tausender
' zehntausender Portd.4 -> Enable für 7 Segmentanzeige_zehntausender
' ----------------------------------------------------------------
$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
Dim I As Byte
Dim Einer As Byte
Dim Zehner As Byte
Dim Hunderter As Byte
Dim Tausender As Byte
Dim Zehntausender As Byte
Dim Zeichen(10) As Byte
Dim X As Byte
Dim Wind_1 As Integer
Dim Tempi_1 As Integer
Dim Tempa_1 As Integer
Dim Baro_1 As Integer
Config Portb = Output 'Signalleitungen
Ddrb = &B11111111
Portb = &B11110100
Config Portd = Output 'Einer bis Tausender
Ddrd = &B11111111
Portd = &B00000000
Si Alias Portb.0 ' Daten schieben
Sck Alias Portb.1 ' Erzeugt steigende Flanke für den Datentakt
Scl Alias Portb.2 ' low = Segment bzw. Ausgangsspeicher löschen
Rck Alias Portb.3 ' Erzeugt Puls für den L
Einer_an Alias Portd.0
Zehner_an Alias Portd.1
Hunderter_an Alias Portd.2
Tausender_an Alias Portd.3
Zehntausender_an Alias Portd.4
Einer_an = 0
Zehner_an = 0
Hunderter_an = 0
Tausender_an = 0
Zehntausender_an = 0
Scl = 0
Main:
Restore 7_seg_tabelle
For X = 1 To 10
Read Zeichen(x)
Next X
Wait 1
Tempa_1 = Zeichen(4)
Tempi_1 = Zeichen(5)
Wind_1 = Zeichen(6)
Scl = 1
Wait 1
Do
Shiftout Si , Sck , Zeichen(1) , 1
Shiftout Si , Sck , Zeichen(2) , 1
Shiftout Si , Sck , Zeichen(3) , 1
Rck = 0 : Rck = 1 : Rck = 0
Zehner_an = 0
Einer_an = 1
Waitms 3
Shiftout Si , Sck , Zeichen(4) , 1
Shiftout Si , Sck , Zeichen(5) , 1
Shiftout Si , Sck , Zeichen(6) , 1
Rck = 0 : Rck = 1 : Rck = 0
Einer_an = 0
Zehner_an = 1
Waitms 3
Loop
7_seg_tabelle:
' 0 1 2 3 4 5 6 7 8 9
Data &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90 , &HC0
Hier wird wie zu erwarten 1 2 3 4 5 6 angezeigt
Hier wie es nicht funktioniert:
Code:
' ----------------------------------------------------------------
' Autor : Roger
' 7 Segmentanzeige mit 74hc595 gemultiplexed
' Signale:
' Daten: Portb.0
' Takt (SCK): Portb.1 -> Pin 11 am 74hc595
' MasterReset (SCL): Portb.2 -> Pin 10 am 74hc595
' AusgabeRegister aktivieren: Portb.3 -> Pin 12 am 74hc595
'
' Einer: Portd.0 -> Enable für 7 Segmentanzeige_einer
' Zehner: Portd.1 -> Enable für 7 Segmentanzeige_zehner
' Hunderter Portd.2 -> Enable für 7 Segmentanzeige_hunderter
' Tausender Portd.3 -> Enable für 7 Segmentanzeige_tausender
' zehntausender Portd.4 -> Enable für 7 Segmentanzeige_zehntausender
' ----------------------------------------------------------------
$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
Dim I As Byte
Dim Einer As Byte
Dim Zehner As Byte
Dim Hunderter As Byte
Dim Tausender As Byte
Dim Zehntausender As Byte
Dim Zeichen(10) As Byte
Dim X As Byte
Dim Wind_1 As Integer
Dim Tempi_1 As Integer
Dim Tempa_1 As Integer
Dim Baro_1 As Integer
Config Portb = Output 'Signalleitungen
Ddrb = &B11111111
Portb = &B11110100
Config Portd = Output 'Einer bis Tausender
Ddrd = &B11111111
Portd = &B00000000
Si Alias Portb.0 ' Daten schieben
Sck Alias Portb.1 ' Erzeugt steigende Flanke für den Datentakt
Scl Alias Portb.2 ' low = Segment bzw. Ausgangsspeicher löschen
Rck Alias Portb.3 ' Erzeugt Puls für den L
Einer_an Alias Portd.0
Zehner_an Alias Portd.1
Hunderter_an Alias Portd.2
Tausender_an Alias Portd.3
Zehntausender_an Alias Portd.4
Einer_an = 0
Zehner_an = 0
Hunderter_an = 0
Tausender_an = 0
Zehntausender_an = 0
Scl = 0
Main:
Restore 7_seg_tabelle
For X = 1 To 10
Read Zeichen(x)
Next X
Wait 1
Tempa_1 = Zeichen(4)
Tempi_1 = Zeichen(5)
Wind_1 = Zeichen(6)
Scl = 1
Wait 1
Do
Shiftout Si , Sck , Zeichen(1) , 1
Shiftout Si , Sck , Zeichen(2) , 1
Shiftout Si , Sck , Zeichen(3) , 1
Rck = 0 : Rck = 1 : Rck = 0
Zehner_an = 0
Einer_an = 1
Waitms 3
Shiftout Si , Sck , Tempa_1 , 1
Shiftout Si , Sck , Tempi_1 , 1
Shiftout Si , Sck , Wind_1 , 1
Rck = 0 : Rck = 1 : Rck = 0
Einer_an = 0
Zehner_an = 1
Waitms 3
Loop
7_seg_tabelle:
' 0 1 2 3 4 5 6 7 8 9
Data &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90 , &HC0
Jetzt wird angezeigt:
1 2 3 5 8 6
Ich denke es liegt an der Art und Weise wie ich die Werte aus der Tabelle raus hole.
Kann mir jemand weiter helfen
Danke schon mal.
Gruß
Roger