-         

+ Antworten
Ergebnis 1 bis 3 von 3

Thema: fehler bei der Temperaturausgabe

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2011
    Beiträge
    6

    fehler bei der Temperaturausgabe

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.111
    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.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2011
    Beiträge
    6
    [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

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •