PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : fehler bei der Temperaturausgabe



anfänger99
19.02.2011, 13:45
Hallo,

ich habe meinen Mikrocontroller so programmiert, dass ich die Temperatur angezeigt bekomme. Zusätzlich habe ich eingebaut, dass auf dem LCD jeweils die größte gemessene und die kleinste gemessene Temperatur angezeigt wird.Bei der größten gemessenen hat dies funktioniert, aber bei der kleinsten wird immer 0°C angezeigt, obwohl nie 0° gemessen wurden.
Kann mir vielleicht einer sagen, wo der Fehler liegt?
Habe das folgende Programm mit Bascom erstellt:

' Vorlage-Datei für Attiny-Platine
'************************************************* *********
$regfile = "attiny2313.dat" 'Attiny2313
$crystal = 4000000 '4 MHz
$baud = 9600 ' Baudrate RS232

'******************* Deklarationen ************************
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.6
Config Lcdbus = 4
Initlcd
Cls
Config Scl = Portb.5
Config Sda = Portb.7

Dim Aktuell As Byte
Dim Mindest As Byte
Dim Maximal As Byte

Dim X As Byte
Dim Y As Byte
'****************** Initialisierung ***********************

Ddrb = &B11111111 'Port B als Ausgangsport
Ddrd = &B01110000 'D4, D5, D6 als Ausgang; Rest als Eingang
Portd = &B10001111 'Eingänge auf high legen




'******************** Hauptprogramm ***********************

Do

Deflcdchar Print , 32 , 3 , 3 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop
Locate 1 , 1


Lcd Aktuell
Lcd Chr(0)
Lcd "C"
Locate 1 , 0



I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop


Locate 2 , 1

If Mindest > Aktuell Then
Mindest = Aktuell
End If
Lcd Mindest

Lcd Chr(0)
Lcd "C"



I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop
If Maximal < Aktuell Then
Maximal = Aktuell
End If

Locate 2 , 7
Lcd Maximal
Lcd Chr(0)
Lcd "C"
Cursor Off


Wait 1
Loop

End

for_ro
19.02.2011, 14:34
Du weist der Variable Mindest zu anfang keinen Wert zu, daher ist sie mit 0 vorbesetzt. Da niemals ein kleinerer Wert kommt, bleibt der Mindest Wert immer 0.
Min und Max belegt man mit dem maximal bzw. minimal möglichen Wert vor. Oder sogar noch drüber bzw. drunter, wenn dies möglich ist.
Das stellt sicher, dass der erste gemessene Wert immer ein neuer Min und Max Wert ist.

anfänger99
20.02.2011, 09:36
[quote="for_ro"]Du weist der Variable Mindest zu anfang keinen Wert zu, daher ist sie mit 0 vorbesetzt. Da niemals ein kleinerer Wert kommt, bleibt der Mindest Wert immer 0.
quote]

Also muss ich zu Beginn z.B. schreiben Mindest=Wert